在当前的网络时代,由于应用程序变得越来越复杂,IT基础架构变得越来越分布式,企业安全性变得越来越重要。由于这样的原因,Open Policy Agent(OPA)正在变得越来越受欢迎,它是一种开源的安全和可扩展性环境,可在整个 IT 基础架构上实施政策。OPA的规则可以审计和强制执行,帮助保证基础架构的完整性和安全性。本文将介绍如何将OPA策略转换为独立的命令行工具。

1. 安装Nix

一些作者推荐使用Nix包管理器,因为Nix可确保您的工具链在整个项目中具有相同的依赖和版本号。通过命令行工具安装它并激活它。

2. 安装opa

“`

$ nix-env -i opa

“`

3. 获取opa policy并转成可执行文件

让我们在目录下创建一个名为“opa”的文件夹,并将生成的策略保存在其中。它将返回一个名为“opa-wasm”的文件。使用命令chmod +x opa-wasm来使得它具有可执行的权利。

“`

$ mkdir opa && cd opa

$ opa build -o opa-wasm my/awesome/policy

$ chmod +x opa-wasm

“`

4. 命令行工具

让我们与我的OPA政策建立交互式终端(REPL)。

“`

$ opa run -w -B my/awesome/policy

“`

这将彼此连接,您可以开始与政策进行交互。在显示交互式窗口时,您可以像下面的示例那样与OPA进行交互

“`

> data

{

“users”: [

{

“id”: “alice”,

“groups”: [“engineering”]

},

{

“id”: “bob”,

“groups”: [“support”]

},

{

“id”: “charlie”,

“groups”: [“engineering”,”support”]

}

]

}

> allow {

user_id=”alice”

group=data.users[_].groups[_]

} else = false

> alice

“`

> data

{

“users”: [

{

“id”: “alice”,

“groups”: [“engineering”]

},

{

“id”: “bob”,

“groups”: [“support”]

},

{

“id”: “charlie”,

“groups”: [“engineering”,”support”]

}

]

}

> 允许 导致=user_id=”alice” 组=data.users[_].groups[_] 否则=假

> 爱丽丝

5. 最终步骤

最后一步是将独立的命令行工具转化为容易使用的命令行应用程序,例如将其与系统环境变量一起使用。

“`

$ mv opa-wasm /usr/local/bin/opa

$ export OPA_DATA=my/awesome/policy

$ echo ‘opa –ignore=.* list -r ./ | opa -i input.json ../main.rego’ > verify

$ chmod +x verify

“`

如果一切运转良好,您现在可以从控制台以及Web UI中调用您的可执行文件,这使得您的业务和安全利益能够很好的保证。

结论

通过Nix包管理器,我们的Open Policy Agent策略已经变成了一个独立的命令行工具,可以方便地在 Web UI 中使用,并且可以由任何人使用。在这里详细介绍给您的是一个非常精简的过程,但是对于任何需要将它们的OPA政策添加到他们的Web应用程序中的企业而言,该过程是专门为他们而设计的。

详情参考

了解更多有趣的事情:https://blog.ds3783.com/