跳到正文
发现
Permguard:策略即代码的授权引擎
命令行工具开发者工具

Permguard:策略即代码的授权引擎

把授权策略像代码一样版本化、签名分发和离线决策的安全系统,适合需要可审计授权的基础设施团队。

admin
发布于 2026-10-29 · 更新于 2026-11-02
浏览
14
访问
0
下载
0
版本
v0.1.15
平台
Windows、macOS、Linux
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

Permguard 是一个授权(authorization)系统,主张「策略即代码(policy as code),决策即证据」。它把授权策略放进内容寻址、类 Git 的账本中,通过专门设计的协议分发带签名的版本,并回答「某个主体能否对某个资源执行某个操作」。

答案既可以来自 Permguard 自己的 Data Plane,也可以在你自己的进程内部以零网络开销给出。每个答案都会指明作出决定的策略和具体 commit,并可作为签名证据留存。官方把它定位为「agentic 时代的安全覆盖层」。

主要功能

  • 策略是仓库,不是一坨配置:init、validate、plan、apply、pull、history 组成一套工作流,工作区位于磁盘上,commit、tree、blob 全部内容寻址。决策引用的不是「当时生效的策略」,而是确切的 commit 与策略身份,且该身份在策略改名后依然可追溯。
  • 一个问题,多种引擎:一个账本可以包含多个 partition,例如这里用 Cedar、那里用 Rego;profile 决定哪些分区参与作答。任一分区给出显式 deny,都会压过其他分区的 permit,因此「谁有权限」和「当前是否安全」可以由不同团队用不同语言分别编写。
  • NOTP 分发协议:策略分发是内容寻址的传输加协商,只发送对方缺失的部分,支持 HTTP 与 gRPC,末尾附带签名 head。Data Plane 会拒绝无法验证 head 的账本,也会拒绝超出其引擎范围的账本。
  • 决策是证据:决策可记录 commit、策略身份、原因,以及对调用方输入生成的 keyed commitments(证明输入但不保存输入本身)。记录先持久化到本卷,再返回答案,并以签名、哈希链批次送往 Control Plane,事后可由不信任该 plane 的第三方验证。
  • 一个 Server,多个 plane:Host 负责身份、鉴权、密钥、审计、成员关系、流、存储与生命周期;Control Plane(6443)负责发布,Data Plane(7443)负责决策,Trust Plane(8443)规划中。可单进程一体化部署,也可按 plane 拆分,每个 Host 独占自己的卷。
  • 决策可以跑在三个地方:作为 sidecar 或远程服务运行 Permguard Data Plane;把账本拉下来在自己进程内、在边缘评估;或用 CLI 的 permguard test 完全离线决策,无需服务器。

支持的政策语言

语言 Runtime 状态
Cedar cedar(cedar-policy 4.x) stable
Rego rego(regorus) stable
Dogwood dogwood(dogwood-language) experimental

三种语言在构建时全部编译进来;部署层面决定的是「是否对外提供引用某个 runtime 的账本」。

安装与使用

资料中没有给出安装命令,使用方式以 CLI 工作流为主:

  1. 在磁盘上的工作区中编写 Cedar / Rego 策略。
  2. 用 permguard test 在本地直接对工作区做决策,不推到任何地方,也不需要服务器。
  3. 用 permguard validate、permguard plan、permguard apply、permguard pull、permguard history 管理提交与分发。
  4. 启动 Permguard Server 后,由 Control Plane 发布签名 head,Data Plane 镜像、验证、编译、评估并记录决策。

各角色端口固定:Host 运维接口 5443、Host API 5444(TLS)、Control Plane 6443、Data Plane 7443,Trust Plane 的 8443 目前为保留端口。HTTP 与 gRPC 共用同一端口,TLS 只改变 scheme,不改变端口号。

注意事项

  • Dogwood 是实验特性,必须同时打开两个开关才会启用:
experimental:
  dogwood:
    enabled: "true"
dataPlane:
  events:
    enabled: "true"

Dogwood 通过另一个接口 permguard.api.pdp.temporal.v1alpha1 提供服务,事件会先写入哈希链日志并持久化,再做决策。

  • Trust Plane 仍在开发中。
  • Data Plane 从另一台 Server 镜像时,必须走经过认证的 Host 任务会话,不会跟随配置里的 URL。
  • 共享同一网络命名空间的多个独立二进制应绑定不同 IP,而不是修改角色端口。
  • permguard.api.pdp.native.v1 是 Permguard 自有的决策接口,不是对其他厂商授权 API 的实现或兼容承诺。

本作品整理自 GitHub 开源项目 permguard/permguard,原作者 @permguard,许可证 Apache-2.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v0.1.15当前版本

    ## Changelog ### Bug Fixes * 146f60751b840568e5f54d219acc4704392e8f40: fix(backup): a backup is taken on Windows (@ngallo) * 206750fabff24322eca38da2720e09c17a31c347: fix(control-plane): archive verification keys under names Windows takes (@ngallo) * 94789911bef0dde34309844dfa72d10359062c03: fix(probe): reserve space on Windows; baseline_volume says why it failed (@ngallo) * 644b7cfaa30fe01def2db40b7e2b7396625acbfa: fix(server): a Windows server stops in order; the probe test names what Windows can check (@ngallo) * bbe19d0bd15a4a73c332fa66c8224a58ff515545: fix(storage): a volume migrates on Windows (@ngallo) * 04e161bb08b02f3b35f88f1eebeee22589877163: fix: everything the first full Windows test run found (@ngallo) ### Other * ef222ed0c1fd9150a1c4caeb93e8820cde7d4340: chore(release): 0.1.15 (@os-permguard) * 6ce83e0f8ed6f59c1c625a3051e5d64178c0d1f7: ci: windows-tests is required (@ngallo) * 31c8945a99ccc93eda661668bad8a1bed1621acf: test(chart): an unknown key is refused under Helm 3 an

  2. v0.1.13

    CLI 现在既是库也是二进制,可直接作为库引用;同时修复了库报告的版本号与二进制版本不一致的问题。

  3. v0.1.12

    Dogwood 升级到 crates.io 上的 1.1.0(dogwood-language),不再使用 git 源,首次安装前执行 brew trust;修复 all-in-one 在进程内把自身决策与事件发送到自己的 Control Plane;进行通用重构以支撑 DevOps 工作。

评论