cerbos/cerbos

GitHub: cerbos/cerbos

Cerbos 是一个以代码驱动的动态授权解决方案,解决跨环境、细粒度权限策略的管理与评估问题。

Stars: 4355 | Forks: 176

![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/cerbos/cerbos?color=green&logo=github&sort=semver) [![Snapshots](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/776ad416e4104638.svg)](https://github.com/cerbos/cerbos/actions/workflows/snapshot.yaml) [![Go Report Card](https://goreportcard.com/badge/github.com/cerbos/cerbos)](https://goreportcard.com/report/github.com/cerbos/cerbos) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](CODE_OF_CONDUCT.md)

Cerbos

## 什么是 Cerbos? Cerbos 是一个随产品演进的授权层。它能让你在简单、直观的 YAML 策略中定义强大的、上下文感知的访问控制规则,并通过 Git 运维基础设施进行管理和部署。它提供高可用的 API,用于评估策略并做出动态访问决策。 本仓库包含了你需要的所有内容,用于搭建一个自托管的 Cerbos 策略决策点(PDP)。[注册一个免费的 Cerbos Hub 账户](https://cerbos.dev/product-cerbos-hub?utm_campaign=brand_cerbos&utm_source=github) 来简化你的策略编写和分发流程到自托管的 PDP。 使用 Cerbos Hub,你可以: - 与同事协作,在完全交互式的私有沙箱中编写和共享策略 - 快速高效地将策略更新分发到整个 PDP 集群 - 构建用于客户端或浏览器授权的专用策略包 - 轻松将 Cerbos 集成到无服务器和边缘部署中 ## 关键概念,一目了然 👀 **_主体(PRINCIPAL):_** 通常只是“用户”,但也可以代表:其他应用程序、服务、机器人或你能想到的任何事物。这个“实体”试图执行某项操作…… ↙️ **_操作(ACTION):_** 一个具体的任务。无论是创建、查看、更新、删除、确认、批准……任何操作。主体可能拥有执行所有操作的权限,也可能只有一两个。操作作用于一个…… ↙️ **_资源(RESOURCE):_** 你要控制访问权限的对象。它可以是任何东西,例如在费用管理系统中;报告、收据、卡片详情、支付记录等。你可以通过编写…… ↙️ **_策略(POLICIES):_** YAML 文件,用于定义每个资源的访问规则,遵循 [一种简单、结构化的格式](#resource-policy)。可以存储在:[磁盘](https://docs.cerbos.dev/cerbos/latest/configuration/storage.html#disk-driver)、[云对象存储](https://docs.cerbos.dev/cerbos/latest/configuration/storage.html#blob-driver)、[Git 仓库](https://docs.cerbos.dev/cerbos/latest/configuration/storage.html#git-driver) 或 [受支持的数据库](https://docs.cerbos.dev/cerbos/latest/configuration/storage.html#sqlite3) 中,并由…… ↙️ **_Cerbos PDP:_** 策略决策点:一个无状态服务,用于执行策略并做出决策。这在 Kubernetes 中作为一个独立进程运行(以 [服务](https://docs.cerbos.dev/cerbos/latest/deployment/k8s-service.html) 或 [边车](https://docs.cerbos.dev/cerbos/latest/deployment/k8s-sidecar.html) 的形式),直接作为 [systemd 服务](https://docs.cerbos.dev/cerbos/latest/deployment/systemd.html) 或 [AWS Lambda 函数](https://docs.cerbos.dev/cerbos/latest/deployment/serverless-faas.html)。一旦部署,PDP 提供两个主要 API: * **_CheckResources:_** “这个主体可以访问这个资源吗?” * **_PlanResources:_** “这个主体可以访问哪种类型的资源?” 这些 API 可以通过 [cURL](#api-request) 调用,或在生产环境中通过我们提供的许多…… ↙️ **_SDK:_** 你可以在这里查看 [列表](#client-sdks)。此外,越来越多的 [查询计划适配器](#query-plan-adapters) 可以将 SDK 的 `PlanResources` 响应转换为方便的查询实例。 **_RBAC 到 ABAC:_** 如果简单的 RBAC 无法满足需求,你可以通过实现基于属性的规则来扩展决策逻辑。在资源策略中实现 `conditions`,这些条件在运行时使用上下文数据进行动态评估,从而实现更细粒度的控制。在 [派生角色](https://docs.cerbos.dev/cerbos/latest/policies/derived_roles.html) 中添加条件以动态扩展 RBAC 角色,或使用 [主体策略](https://docs.cerbos.dev/cerbos/latest/policies/principal_policies.html) 对特定用户进行更精确的覆盖。 **_Cerbos Hub:_** 一个云端控制平面,用于简化 Cerbos PDP 的部署。包括全面的 CI/CD 解决方案,用于安全高效地测试和分发策略更新,协作式私有沙箱用于快速原型设计和实验,以及用于将策略部署到浏览器和服务器less/边缘应用的嵌入式 PDP。 ## Cerbos PDP 如何与你的应用程序协同工作:

Cerbos

了解更多关于 Cerbos PDP 和 Cerobs Hub 如何协同解决你的授权难题 [点击这里](https://cerbos.dev/how-it-works?utm_campaign=brand_cerbos&utm_source=github)。 ## 了解更多 * 快速上手我们的 [快速入门](https://docs.cerbos.dev/cerbos/latest/quickstart.html),或在 [教程](https://docs.cerbos.dev/cerbos/latest/tutorial/00_intro.html) 中构建一个示例实现 * 查看 [示例策略和请求](#examples) * 阅读 [完整文档](https://docs.cerbos.dev) * 探索一些 [演示仓库](https://github.com/cerbos) * 在线试用 [Cerbos 游乐场](https://play.cerbos.dev) * 了解更多关于 [Cerbos Hub](https://cerbos.dev/product-cerbos-hub?utm_campaign=brand_cerbos&utm_source=github) 并注册账户 ## 使用情况 Cerbos 在大型和小型组织中都很受欢迎:

Cerbos

_使用 Cerbos 吗?请通过发送邮件至 devrel@cerbos.dev 告诉我们。_ ## 安装 * [容器](https://docs.cerbos.dev/cerbos/latest/installation/container.html) * [二进制文件/操作系统包](https://docs.cerbos.dev/cerbos/latest/installation/binary.html) * [Helm Chart](https://docs.cerbos.dev/cerbos/latest/installation/helm.html) ## 示例 #### 资源策略 为资源编写访问规则。 ``` --- apiVersion: api.cerbos.dev/v1 resourcePolicy: importDerivedRoles: - common_roles resource: "album:object" version: "default" rules: - actions: ['*'] effect: EFFECT_ALLOW derivedRoles: - owner - actions: ['view', 'flag'] effect: EFFECT_ALLOW roles: - user condition: match: expr: request.resource.attr.public == true - actions: ['view', 'delete'] effect: EFFECT_ALLOW derivedRoles: - abuse_moderator ``` #### 派生角色 根据上下文数据动态为用户分配新角色。 ``` --- apiVersion: "api.cerbos.dev/v1" derivedRoles: name: common_roles definitions: - name: owner parentRoles: ["user"] condition: match: expr: request.resource.attr.owner == request.principal.id - name: abuse_moderator parentRoles: ["moderator"] condition: match: expr: request.resource.attr.flagged == true ``` #### API 请求 ``` cat < Contributors
标签:ABAC, EVTX分析, GitHub Actions, GitOps, Go Report Card, Go语言, gRPC, PDP, RBAC, REST API, Serverless, Streamlit, YAML策略, 上下文感知, 动态授权, 可扩展授权, 合规, 子域名突变, 安全, 审计日志, 属性基访问控制, 开发者友好, 开源授权, 徽章, 授权, 提示词工程, 日志审计, 服务端授权, 权限管理, 模型越狱, 浏览器端授权, 程序破解, 策略共享, 策略决策点, 策略协作, 策略即代码, 策略存储, 细粒度权限, 网络安全研究, 聊天机器人安全, 自动笔记, 自托管, 角色基访问控制, 访问控制, 语言无关, 资源级授权, 超时处理, 边缘计算, 集中式授权