OPA入门系列
OPA(OpenPolicyAgent), 云原生时代的通用规则引擎,重新定义策略引擎,灵活而强大的声明式语言全面支持通用策略定义。
而且,2019年4月2号OPA
正式进入了CNCF
,作为孵化级托管项目,详见声明
see in OPA philosophy docs
关键词:
- 轻量级的通用策略引擎
- 可与服务共存
- 集成方式可以是sidecar、主机级守护进程或库引入
文字太直白,看看OPA作者怎么说:
- OPA: The Cloud Native Policy Engine - Torin Sandall, Styra
- Deep Dive- Open Policy Agent - Torin Sandall & Tim Hinrichs, Styra(2019)
-
强大的声明式策略
- 上下文感知
- 表达性强
- 快速
- 可移植
-
输入和输出支持任意格式
配合强大的声明式策略语言Rego
,描述任意规则都不是问题
- 全面支持规则和系统解耦
-
集承方式多
- Daemon式服务
- Go类库引入
-
决策快
-
应用广泛
除了继承做auth外,还可以应用到k8s
,terraform
,docker
,kafka
,sql
,linux
上做规则决策
- 工具齐全
- 有命令行,有交互式运行环境
- 支持测试,性能分析(底层实现Go)
- 有强大的交互式编辑器扩展vscode-opa
- 有playground分享代码
为了性能,推荐使用最新 OPA latest release
# mac
curl -L -o opa https://openpolicyagent.org/downloads/latest/opa_darwin_amd64
chmod +x opa
mv opa /usr/local/bin/opa
# or use brew(not latest version)
brew install opa
几行代码实现一个简单的RBAC认证服务: example_rbac
cd quick-start
opa eval -i input.json -d data.json -d example.rego "data.example_rbac"
可扩展的Entitlements api demo: 可扩展的rules data + entitlemnts policy
文档一点点完善中。。。