open-policy-agent/opa
运维与部署通用策略引擎,用声明式规则统一处理服务、Kubernetes 和基础设施中的授权与合规决策。
项目是什么
Open Policy Agent(OPA)是用 Go 编写的通用策略引擎。它把原本散落在各服务里的授权和合规判断抽出来,用声明式的 Rego 语言写成规则;服务在需要做决策时向 OPA 发起查询,OPA 结合规则和传入的数据返回结果(例如允许或拒绝),再由服务执行这个结果。常见问题包括某用户能否对某资源执行某操作、工作负载应部署到哪些集群、资源创建前必须带上哪些标签。
同一套引擎可用于 API 授权、Kubernetes 准入控制、Terraform 规划、Docker 授权以及 SSH/sudo 授权,这些环境的集成文档见 openpolicyagent.org。OPA 是 CNCF 毕业项目 公告,仓库本身提供 CLI、服务端二进制、容器镜像、Go SDK 和 REST API。
快速上手
可以先在浏览器里用 Rego Playground 编写和分享 Rego 策略,不确定从哪开始时看 访问控制示例。本地开发建议安装 VS Code 扩展 获得诊断、调试和格式化,然后按 Running OPA 的说明运行 CLI。Rego 语言以及部署、集成的具体步骤以 官方文档 为准。
一次策略决策的流程是:先写允许或拒绝访问的规则;服务在收到请求时向 OPA 查询;OPA 评估规则和数据并返回决策;服务据此接受或拒绝请求。Go 服务通过 Go SDK 集成,其他语言的服务使用 REST API。
使用约束
OPA 只负责给出决策,不负责执行。服务、准入控制器或代理必须调用 OPA 并根据返回结果采取动作,因此接入意味着修改这些调用点,并决定策略数据存放在哪里。Rego 是声明式语言,有自己的学习成本,策略也应像应用代码一样做版本管理和测试。部署方式可选 Docker Hub 的容器镜像或 GitHub releases 的二进制,需按环境选择。生产使用方列在 ADOPTERS.md。项目采用 Apache-2.0 许可证,README 说明曾接受第三方安全审计。
HotRepo 点评
OPA 在 HotRepo 的记录不多,但指向一个稳定成熟的项目,而非快速蹿升的新秀:唯一快照是 2026-11-06 的 Go 日榜,显示 12,440 Star、1,710 Fork,当日新增 10 Star,最好名次为第 18。2018 年的 Hacker News 讨论获得 157 分、39 条评论,其中一位共同作者表示愿意回答问题,也有评论者指出「策略引擎」这个说法对新手很难理解 回复。这个批评仍对应现实中的上手难点:只有看到一个具体的允许或拒绝决策,价值才变得清楚,所以 Playground 示例比一句标语更有用。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。