Open Policy Agent(开放政策代理,OPA)是一个开源的、通用的策略引擎,它支持跨整个堆栈执行统一的、上下文感知的策略。该项目于 2018 年 4 月进入 CNCF 沙箱,一年后进入孵化阶段。来自大约 30 个组织的 90 多名人员为 OPA 贡献力量,维护者来自四个组织,包括谷歌、微软、VMware 和 Styra。
OPA 提供了一种高级声明性语言来在整个堆栈中编写和实施策略。
使用 OPA,你可以定义 rules 来管理你的系统应该如何运作。这些 rules 的存在是为了回答以下问题:
- 用户 X 可以调用资源 Z 上的操作 Y 吗?
- 应将工作负载 W 部署到哪些群集?
- 在创建资源 R之 前,必须在资源 R 上设置哪些标签?
你将服务与 OPA 集成,这样这些政策决定就不必在你的服务中硬编码。服务与 OPA 的集成是通过在需要政策决定时执行查询来实现的。
当你向 OPA 查询策略决策时,OPA 会评估 rules 和 data(由你提供)以得出答案。该策略决策作为查询结果发送回去。
例如,在一个简单的 API 授权用例中:
- 你编写允许(或拒绝)访问服务 API 的规则。
- 你的服务在收到 API 请求时会查询 OPA。
- OPA returns 允许(或拒绝)你的服务决策。
- 你的服务通过相应地接受或拒绝请求来执行决策。