搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

open-policy-agent/opa

运维与部署

通用策略引擎,用声明式规则统一处理服务、Kubernetes 和基础设施中的授权与合规决策。

12,441
1,710
Go
Apache-2.0
创建于 10 年前

项目是什么

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 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

Opa – An open-source, general-purpose policy engine
▲ 157 · 39 条评论 · 2018年5月21日
Open Policy Agent v0.29.1 released
▲ 1 · 0 条评论 · 2021年5月28日