核心主题: Meta-Governance / Policy Authority / Governance Root of Trust / Policy Conflict Resolution / Emergency Override / Break-glass Access / Dual Control / Separation of Duties / Governance Quorum / Constitutional Policy / Policy Recovery
研究日期: 2026 年 10 月 19 日
系列定位: SEO / GEO / AI Agent 生产工程、Policy-as-Code、自治安全、治理控制面与可信自动化
本篇目标: 从 Policy-enforced and Evidence-carrying Autonomous Workflow,继续推进到 Governance-governed Autonomous System。
第(四十三)篇,我们建立了一条重要生产原则:
Agent 可以提出行为,但生产系统只执行拥有当前有效证据和授权的行为。
于是,Publisher Agent 不再能够仅凭一句:
approved = true
就直接发布文章。
它必须经过:
Evidence Verification
↓
Policy Decision Point
↓
Runtime Verification
↓
Policy Enforcement Point
↓
Production Effect
看上去,治理问题已经得到解决。
因为 Policy 站在了 Agent 与 WordPress 之间。
但是,这套架构很快会出现一个更加危险的问题。
假设用于控制生产发布的 Policy 原本是:
未经验证的关键 Claim
不得正式发布。
对应执行条件:
critical_unverified == 0
某一天,一名拥有 Policy Repository 写权限的维护人员修改了规则:
critical_unverified <= 2
理由是:
“最近 Fact Check 经常阻塞文章发布,允许一两个待确认字段应该问题不大。”
代码能够编译。
CI 能够运行。
Policy Engine 也能正常加载。
Publisher Agent 没有绕过任何规则。
Publishing Gateway 也严格执行了最新 Policy。
最终,两条没有得到核验的产品参数合法地进入公开网站。
从运行日志看:
Policy Evaluation:
PASS
Authorization:
ALLOW
Runtime Verification:
PASS
Publishing Gateway:
ALLOW
WordPress:
201 Created
整个执行链完全按照制度工作。
但制度本身已经被修改。
于是,一个比 Agent 越权更深的问题出现了:
如果 Policy 可以决定 Agent 能做什么,那么谁决定谁可以修改 Policy?
进一步:
谁可以新增 Permit?
谁可以删除 Forbid?
谁可以修改 Global Invariant?
谁能够让一条 Policy 暂停?
谁可以使用 Emergency Override?
谁有资格把事故期间已经撤销的权限重新打开?
如果最高治理规则本身遭到错误修改、恶意修改或账户劫持,系统应该信任什么?
这就是:
Meta-Governance。
治理治理本身。
一、第(四十三)篇把 Policy 变成了控制面,也同时创造了新的最高权限
当我们把 Agent 的生产权限放到 Policy Engine 后,整个系统的权力结构发生了变化。
过去,最高风险权限可能是:
WordPress Administrator
或者:
Production API Credential
现在又增加了另一种权力:
Ability to change the rules
that control production access
很多时候,它甚至比单独一个 WordPress 管理员权限更危险。
因为管理员可能只能修改一个站点。
而一条错误的 Governance Policy 可能影响:
多个 Agent。
多个站点。
多个自动发布流程。
多个资源类别。
甚至整个系统的授权模型。
例如一条策略:
publisher may publish
to all registered sites
只需要修改一次,就可能改变整个 Multi-Agent 系统的生产边界。
因此:
Production Privilege
和:
Governance Privilege
必须分开。
前者决定:
我能不能修改业务资源?
后者决定:
谁以后能够修改业务资源?
后者具有更高的系统性影响。
二、Meta-Governance 到底治理什么?
Meta-Governance 并不是再增加一个“超级审核 Agent”。
它治理的是整个 Policy Control Plane。
至少包括:
Who may author policy?
Who may review policy?
Who may approve policy?
Who may deploy policy?
Who may bypass policy?
Who may invoke emergency policy?
Who may modify root policy?
Who may recover the policy system?
也就是八种不同权力。
这些权力不能简单合并成:
Governance Admin
否则,一个拥有 Governance Admin 权限的主体可能同时完成:
修改规则
↓
批准自己修改
↓
部署规则
↓
绕过规则
↓
清理审计记录
这相当于把系统所有治理能力重新集中到了一个身份之上。
Meta-Governance 的第一目标,不是建立更强大的管理员,而是避免任何单一普通主体拥有完整的治理闭环。
三、Policy Authority:必须区分“写 Policy”和“决定 Policy 生效”
我们可以首先建立:
Policy Authority Model。
最简单的角色划分是:
| Authority | 主要职责 |
|---|---|
| Policy Author | 编写或修改规则 |
| Policy Reviewer | 检查逻辑与风险 |
| Policy Approver | 批准规则进入可部署状态 |
| Policy Deployer | 将批准版本部署到目标环境 |
| Emergency Authority | 在紧急条件下授权有限 Override |
| Recovery Authority | 恢复可信 Policy 状态 |
| Auditor | 独立检查治理活动 |
这些角色不是要求企业必须安排七个人。
多个角色可以由系统身份、工作流和不同人员组合实现。
关键在于:
高风险治理动作不能由同一个未经额外约束的主体从头做到尾。
NIST SP 800-53 的 AC-5 Separation of Duties 明确要求组织识别并记录需要进行职责分离的职责,同时定义相应的系统访问授权。
这为 Agent Meta-Governance 提供了非常重要的传统安全工程基础。
但本文所定义的 Policy Author、Policy Reviewer、Recovery Authority 等角色划分,是本项目针对 AI Agent 治理进一步形成的工程模型,并不是 NIST 已定义的 Agent 角色标准。
四、Governance Root of Trust:如果所有规则都可以修改,最终应该信任什么?
假设我们拥有一千条 Policy。
但这 1000 条 Policy 都可以由同一个管理员随时改掉。
那么真正的信任根并不是这些规则。
而是:
这个管理员账户
如果该账户被攻破:
Policy System
=
Compromised
所以任何治理架构最终都必须找到:
哪一部分信任不能依赖普通运行时 Policy 本身?
本项目将它称为:
Governance Root of Trust。
可以写成:
Governance Root of Trust
↓
Constitutional Policy
↓
Delegation Policy
↓
Domain Policy
↓
Runtime Policy
↓
Agent Authorization
它和硬件安全中的 Root of Trust 概念具有思想上的相似性。
NIST SP 800-193 在平台固件安全领域定义了用于 Update、Detection、Recovery 的 Roots of Trust,并强调信任链由这些内在可信组件向其他组件扩展。
但这里必须严格区分:
本文的 Governance Root of Trust 不是 NIST SP 800-193 定义的硬件 Root of Trust。
我们只是借鉴:
Trust must ultimately anchor somewhere
这一安全设计思想,将其应用于 Agent Governance Control Plane。
五、什么应该进入 Governance Root of Trust?
Governance Root of Trust 不应该包含全部业务规则。
否则任何日常 SEO Policy 更新都会成为 Root Change。
更合理的是,只保存极少数最高级治理事实。
例如:
governance_root:
version: ROOT-7
trusted_policy_repository:
- governance-repository
trusted_policy_issuers:
- governance-ci
root_approvers:
threshold: 2
eligible_group: root-governance-owners
non_overrideable_invariants:
- production_write_requires_attributable_identity
- critical_policy_changes_require_review
- break_glass_must_be_audited
- audit_evidence_must_not_be_silently_disabled
- root_policy_cannot_be_changed_by_runtime_agent
emergency_authority:
enabled: true
max_ttl: limited
recovery:
trusted_snapshot_required: true
这是本项目示例。
其中并没有放:
一篇 SEO 文章应该有几个 H2。
也没有放:
Fact Check Score 必须达到多少。
这些应该属于较低层的 Domain Policy。
Root 只定义:
谁有资格制定规则,以及规则修改不可突破的最低治理边界。
六、Constitutional Policy:Policy 之上的 Policy
第(四十三)篇建立了普通 Policy-as-Code。
第(四十四)篇需要增加一层:
Constitutional Policy。
这里的 Constitutional 不是指某一种具体的 LLM Constitutional AI 方法。
本项目使用这个词表达:
定义治理系统基本权限结构、不可越过边界和规则修改程序的最高级治理 Policy。
例如:
CP-001
Production Agents cannot approve
their own privilege expansion.
CP-002
A policy author cannot unilaterally
activate a critical policy change.
CP-003
Emergency override must be
scoped, attributable and expiring.
CP-004
Root policy changes require
Governance Quorum.
CP-005
Audit disabling cannot be part
of ordinary break-glass authority.
这类 Policy 不应该与普通内容策略具有相同修改权限。
否则:
Content Policy Author
可能通过修改 Constitutional Policy,使自己获得:
Root Authority
这会重新形成自我升级。
七、Policy Hierarchy:治理规则必须有明确层级
可以把治理体系分为五层。
G0:Root Governance
定义 Governance Root of Trust。
例如:
谁能修改 Constitutional Policy。
Root Change 需要几个批准主体。
信任哪些签发密钥和系统身份。
G1:Constitutional Policy
定义不可被普通 Policy 覆盖的约束。
例如:
Production effect requires attribution.
G2:Delegation Policy
定义:
谁能管理哪些 Policy Domain。
例如:
SEO Governance Team
may manage SEO publishing policy.
但不能管理:
Organization-wide identity root.
G3:Domain Policy
例如:
SEO Publishing
Technical SEO
Content Governance
Data Governance
这些是真正影响业务工作流的规则。
G4:Runtime Policy
与具体 Workflow、Intent、Resource、Environment 绑定的运行时条件。
最终:
G0
↓
G1
↓
G2
↓
G3
↓
G4
↓
Production Effect
越向上:
修改越少。
权限越敏感。
审批越严格。
恢复要求越高。
八、治理系统也需要 Authority Graph
第(三十四)篇已经建立普通业务资源 Authority Graph。
现在需要建立:
Governance Authority Graph。
它不能只有:
Alice → admin
而应该描述具体能力。
例如:
Alice
└── can_author → SEO_DOMAIN_POLICY
Bob
└── can_review → SEO_DOMAIN_POLICY
Governance CI
└── can_build → POLICY_ARTIFACT
Carol
└── can_deploy → PRODUCTION_POLICY
Root Committee
└── can_modify → CONSTITUTIONAL_POLICY
同时:
seo-publisher-agent
可能拥有:
can_request_policy_decision
却绝不能拥有:
can_modify_policy
这个区别非常关键。
使用治理系统的主体,与修改治理系统的主体,原则上必须分离。
九、Self-Escalation:最大的危险不是越权执行,而是先修改权限
假设 Agent 当前只有:
Draft Permission
它无法正式发布。
如果 Agent 能修改授权 Policy:
allow publish = true
然后再执行 Publish,那么运行时 Authorization 再严格也没有意义。
因此必须建立:
No Self-Escalation
Kubernetes RBAC 提供了一个成熟参照。
Kubernetes 在 API 层限制 Role 和 RoleBinding 的权限升级:一般情况下,一个用户不能通过创建包含自己本来没有的权限的 Role 来获得更大权限;如果确实需要突破这一约束,则需要显式的 escalate 等特殊授权。
这对于 Agent Governance 有直接启发:
Policy Author
不能因为能够编辑某个 Policy 文件,就自动获得能力去给自己创建更高级别权限。
我们需要分别控制:
can_edit_policy
can_delegate_authority
can_escalate_authority
can_activate_policy
四种能力。
十、Separation of Duties:治理不能由一个人完成闭环
对于普通内容规则:
H2 structure
可能不需要复杂审批。
但对于:
Production Authorization Policy
情况不同。
典型高风险变化包括:
扩大 Publisher 的站点范围。
允许自动修改 Redirect。
修改 Safety Epoch 验证逻辑。
新增 Break-glass Bypass。
降低审批要求。
这些操作至少应该分离:
Author
≠
Sole Approver
更高风险的 Root Policy 则可以要求:
Author
≠
Reviewer
≠
Final Activation Authority
这就是职责分离的实际工程体现。
它并不意味着每一次代码提交都要召开委员会。
而是:
控制强度必须与修改可能产生的 Blast Radius 匹配。
十一、Dual Control:某些动作不应该由一个主体独立完成
Separation of Duties 主要分离职责。
Dual Control 更进一步:
某个特定高风险动作本身,需要至少两个授权主体共同完成。
例如:
Enable emergency publish bypass
需要:
Security Approver
+
Content Governance Approver
HashiCorp Vault Enterprise 的 Control Groups 提供了现实中的多方授权机制参考。
Control Group 可以要求额外授权因子,官方示例展示了需要多名授权者在限定时间窗口内完成授权后,请求才能继续。
但这并不意味着 Agent 项目必须使用 Vault Enterprise。
我们借鉴的是:
one authorized principal
may still be insufficient
for specific critical actions
这一控制思想。
十二、Governance Quorum:从两人审批进一步走向 K-of-N
对于 Root Change,简单的双人审批仍然可能存在问题。
假设只有:
Alice + Bob
两个 Root Admin。
如果 Alice 离职、Bob 账户无法访问,治理系统可能锁死。
因此,对最高层权限可以采用:
K-of-N
Quorum。
例如:
3 eligible governors
2 approvals required
即:
2-of-3
The Update Framework(TUF)提供了非常成熟的 Threshold Trust 设计参照。
其 Root Metadata 定义哪些密钥可以代表顶层角色,并定义这些角色所需的最小签名数量,即 signature threshold。
在 Agent Governance 中,可以借鉴这种设计:
constitutional_change:
eligible_approvers: 5
threshold: 3
但是:
Governance Quorum 并不自动等价于密码学 Threshold Signature。
也不能声称 TUF 已经定义 Agent Governance Quorum。
这是项目对 Threshold Trust 思想的进一步治理应用。
十三、更多人批准,并不一定代表更安全
假设 5 个 Approver 全部来自:
同一个部门
同一个身份提供商
同一个管理员组
那么:
3-of-5
可能仍然存在共同失效风险。
因此 Quorum 还要考虑:
Authority Independence。
例如高风险 Root Change 可以要求:
1 Security
+
1 Platform
+
1 Business Governance
而不是:
any 3 admins
也就是说:
Quorum
≠
Simple Vote Count
还可能包含:
Role Diversity
Trust Domain Diversity
Conflict-of-interest Check
十四、Governance Quorum 不应该用于所有操作
如果每次修改文章发布标签都要求 3 人批准:
系统将无法运行。
因此需要 Risk-tiered Governance。
例如:
| Governance Change | 建议控制 |
|---|---|
| 内容风格规则 | 单人评审或普通 PR |
| SEO 发布规则 | 独立 Reviewer |
| 新增生产权限 | Dual Control |
| Break-glass 权限 | Dual Control + TTL |
| Root Delegation | Governance Quorum |
| Constitutional Policy | 高等级 Quorum |
| Root Recovery | Quorum + Recovery Procedure |
核心原则:
越靠近 Governance Root,修改成本越高。
十五、Policy Conflict:当两条规则同时正确,却给出相反结果怎么办?
随着 Policy 增多,冲突一定会出现。
例如:
Policy A:
事故期间禁止所有生产写入。
Policy B:
事故恢复 Agent 可以修改受损页面。
两个规则各自合理。
但同时应用时:
Recovery Agent
attempts WRITE
到底:
ALLOW
还是:
DENY
如果系统没有确定的冲突语义,就可能出现:
不同 Policy Engine。
不同执行顺序。
不同环境。
得到不同结果。
这会严重破坏治理可信度。
十六、Policy Conflict 至少有五种类型
第一类:Permit / Forbid Conflict
Policy A → ALLOW
Policy B → DENY
第二类:Scope Conflict
Global Policy → deny write
SEO Recovery Policy → allow Page A
第三类:Temporal Conflict
旧 Policy 允许。
新 Policy 拒绝。
但 Workflow 已在旧版本下启动。
第四类:Emergency Conflict
普通 Policy:
DENY
Emergency Override:
ALLOW
第五类:Authority Conflict
两个治理主体同时声称:
I can approve this change.
但权限版本不同。
十七、Conflict Resolution 必须在 Constitutional Policy 中确定
不要让 Runtime Agent 自己决定:
“我觉得这个 Permit 比那个 Deny 更具体,所以我选 Permit。”
冲突规则必须事先明确。
Cedar 提供了一个成熟授权组合语义:
如果任何满足条件的 forbid 存在,则最终结果为 Deny;没有 forbid 时,满足 permit 才能 Allow;否则 Default Deny。
但 Cedar 同时具有 skip-on-error,因此宿主应用仍需要检查 diagnostics,不能假设所有安全关键规则发生计算错误后都会自动阻止请求。
对于本项目,可以建立自己的 Conflict Resolution Order。
例如:
1. Non-overridable Constitutional Deny
2. Active Containment Deny
3. Explicit scoped Emergency Override
4. Domain Forbid
5. Domain Permit
6. Default Deny
这是项目设计,不是 Cedar 规则。
重点是:
顺序必须确定、可测试、可审计。
十八、不是所有 Deny 都应该允许 Emergency Override
这是非常关键的一点。
假设系统提供:
Break Glass
如果它能绕过任何 Policy,就等于创建:
Universal Superuser
例如绝不能允许普通 Emergency Override 做:
disable all audit
然后继续:
change root policy
再:
delete all traces
因此 Constitutional Policy 应明确两类规则。
Overrideable
例如:
normal publish freeze
在特定恢复任务中可以暂时绕过。
Non-overrideable
例如:
every break-glass action must be attributable
root modification requires governance procedure
emergency access cannot silently disable audit
即:
Break Glass
≠
No Rules
Break Glass 只是进入:
另一套更严格的紧急治理规则。
十九、Emergency Override:什么时候才应该使用?
正常运行时:
Policy
→ DENY
不应该因为业务团队着急,就使用 Emergency Override。
它应当用于真正的:
Business Continuity
Security Recovery
Governance Lockout
Critical Site Recovery
例如:
全站突然被错误设置:
noindex
正常 Technical SEO Agent 的写权限已经因事故被撤销。
但是恢复团队必须立刻修复。
这时可能需要 Emergency Override。
而不是等数小时重新完成普通授权流程。
因此 Emergency Override 的真正目的不是:
make governance convenient
而是:
在普通治理路径失效或无法及时满足关键恢复需求时,保留有限的恢复能力。
二十、Break-glass Access:紧急入口必须与日常入口完全不同
Microsoft Entra 的官方安全指南建议组织建立专门用于 Emergency / Break Glass 场景的 Cloud-only Emergency Access Accounts,并要求这些高度权限账户只用于紧急情况,同时对其使用发出高优先级告警。
这里的重点不只是:
有一个超级管理员备用账号。
而是:
紧急身份必须明显区别于日常身份,其任何使用都应该被视为异常事件。
对于 Agent Governance,可以进一步建立:
Normal Authority
与:
Emergency Authority
完全分离。
二十一、Break-glass Capability 应该是什么样?
一个项目级 Break-glass Capability 可以定义成:
break_glass:
id: BG-044-001
incident_id: INC-044-001
requester:
identity: recovery-operator
approvers:
required: 2
reason:
code: CRITICAL_SEO_RECOVERY
scope:
site: SITE-A
resource:
- robots-policy
action:
- restore-approved-configuration
validity:
ttl_minutes: 20
constraints:
disable_audit: false
modify_root_policy: false
delegate_authority: false
create_new_break_glass: false
monitoring:
realtime_alert: true
post_use_review: required
这是本项目 Schema 示例。
注意:
它不是:
Administrator = everything
而是:
Emergency Capability
=
Specific Incident
+
Specific Resources
+
Specific Actions
+
Short Lifetime
二十二、Emergency Override 和 Permanent Bypass 是两件完全不同的事
这两个概念非常容易混淆。
Permanent Bypass
某个主体长期存在于:
Bypass List
只要愿意,就可以跳过某些保护规则。
Emergency Override
平时不存在可使用权限。
发生明确 Incident 后:
request
→ approve
→ activate
→ expire
形成临时授权。
两者的风险完全不同。
GitHub Rulesets 支持为特定角色、团队或 GitHub Apps 设置 bypass 权限;GitHub Environments 也可以配置是否允许管理员绕过部署保护规则。
这提醒我们:
Bypass 本身也必须成为明确的治理对象。
不能因为某主体是 Admin,就默认 Admin can always bypass everything。
二十三、SEO 事故案例:全站 noindex 时,Break Glass 到底应该怎样工作?
假设自动 Technical SEO Agent 意外修改了全站配置:
<meta name="robots" content="noindex">
监测系统发现异常。
Containment 立即撤销 Technical SEO Agent 的所有生产写权限。
此时正常流程是:
Technical SEO Write:
DENY
但是网站必须恢复。
第一步:建立 Incident
INC-044-SEO-001
第二步:确认受影响范围
不是:
全部 WordPress 配置
而是:
robots/indexability configuration
第三步:申请 Break Glass
请求:
Action:
restore last approved indexability configuration
而不是:
give administrator access
第四步:Dual Control
例如:
SEO Governance Owner
+
Platform Owner
共同批准。
第五步:生成短时 Capability
TTL = 20 minutes
Effect Scope:
ONE CONFIGURATION RESTORE
第六步:Runtime Verification
确认:
目标站点。
事故编号。
恢复 Artifact。
当前 Safety Epoch。
第七步:执行恢复
只恢复批准的 robots/indexability 状态。
第八步:自动失效
任务完成后立即失效。
不允许将 Break-glass 权限保留到第二天。
第九步:Recovery Proof
重新验证:
公开页面 robots 状态。
相关 WordPress 配置。
Sitemap / Canonical 等关联状态。
第十步:Post-use Review
回答:
为什么正常 Recovery Authority 无法解决?
Break Glass 是否执行了额外动作?
是否需要修复 Governance Design?
这才是一个完整的 Emergency Governance Loop。
二十四、Break Glass 使用本身应该被视为 Incident Signal
如果一套系统每天都在使用 Break Glass:
那它已经不是 Break Glass。
而是:
normal operating path
这是非常危险的反模式。
因此建议监测:
Break-glass Activation Count
Break-glass Activation Rate
Repeated Requester
Repeated Policy Bypass Reason
Expired Capability Use Attempt
Out-of-scope Emergency Action
任何 Break Glass 使用都应该触发:
High-priority Governance Event
Microsoft 对 Emergency Access Account 的建议同样强调,这类账户平时应当几乎没有活动,并应对其使用或变更产生高优先级告警。
二十五、Emergency Authority 不能自行批准 Emergency Authority
这是必须写死的一条约束。
如果一个 Incident Agent 能够:
detect incident
↓
request break glass
↓
approve break glass
↓
execute emergency action
整个控制就失去了独立性。
至少应保持:
Requester
≠
Sole Approver
对于最高风险操作:
Requester
≠
Approver
≠
Root Recovery Authority
这正是 Separation of Duties 在 Emergency Governance 中的应用。
二十六、Root Policy Change 应该比普通 Policy Change 难得多
普通 Domain Policy:
SEO-PUBLISH-64
可能通过:
Author
+
Reviewer
+
CI
就能上线。
但 Root Change:
ROOT-7 → ROOT-8
不应使用相同流程。
因为它可能改变:
谁能够修改 Policy。
哪些 Root Key 被信任。
Quorum 是多少。
哪些规则可以被 Override。
因此 Root Change 应要求:
Change Proposal
↓
Independent Review
↓
Governance Quorum
↓
Root Artifact Build
↓
Integrity Verification
↓
Staged Activation
↓
Independent Runtime Verification
并且:
旧 Root 不应该在新 Root 尚未验证之前直接销毁。
二十七、Root Update 必须防止“一次修改夺取整个治理系统”
The Update Framework 的 Root Role 提供了一个非常重要的工程参照。
TUF Root Metadata 指定其他顶层角色的可信密钥,并可为不同角色定义 signature threshold。
这种思想可以帮助我们理解:
一个可信治理系统不能依赖:
one mutable admin account
作为唯一信任根。
对于 Agent Governance Root,可以采用:
Multiple Root Authorities
+
Threshold Approval
+
Root Version
+
Root Artifact Digest
+
Expiry / Rotation
但需要再次强调:
本文没有把 TUF Root Metadata 直接当成 Agent Policy Root。
TUF 是软件更新安全框架。
这里借鉴的是:
Threshold Trust、Root Role、Delegation 与 Versioned Trust Metadata 的工程思想。
二十八、Policy Conflict Resolution 本身也属于 Root Governance
假设:
Domain Policy A
定义:
Forbid automatic redirect changes
但:
Emergency Policy B
定义:
Recovery Agent may repair redirects
谁覆盖谁?
不能让执行系统临时猜测。
所以 Root Governance 必须定义:
Conflict Resolution Semantics
例如:
Constitutional Hard Deny
>
Containment Deny
>
Authorized Emergency Exception
>
Domain Deny
>
Domain Permit
>
Default Deny
这套优先级本身:
就是 Constitutional Policy。
修改它应当被视为 Root-level Change。
二十九、Policy Exception 必须是“有边界的对象”,而不是一句备注
很多系统处理例外的方式是:
ignore this policy for now
这种做法极其危险。
例外应该拥有:
Exception ID
Policy ID
Requester
Approver
Reason
Scope
Affected Resource
Start Time
Expiry
Compensating Control
Review Requirement
例如:
policy_exception:
id: EX-044-001
policy: SEO-PUBLISH-021
scope:
site: SITE-A
resource: POST-100
action: publish
reason:
incident: INC-044-001
valid_until:
timestamp: ...
compensating_controls:
- human_review
- post_publish_readback
这样,Exception 才是:
可追溯的授权对象。
而不是永久存在于代码中的:
if special_case:
allow
三十、Temporary Exception 最大的问题是它经常不会被删除
很多所谓:
Temporary Exception
最终变成:
Permanent Bypass
原因非常简单:
问题解决以后,没有人记得删除。
因此任何 Exception 都应该:
Expire by default
即:
No Expiry
→
Invalid Exception
高风险 Exception 最好使用:
Short TTL
而不是:
until manually removed
这也是 Evidence-bound Authorization 的进一步应用。
三十一、Policy Recovery:如果 Policy Repository 被攻破怎么办?
这是第(四十四)篇真正必须解决的问题。
假设攻击者获得 Governance Repository 权限。
修改:
Constitutional Policy
然后:
Domain Policies
接着部署到生产 Policy Engine。
事故发现以后,不能只说:
Git revert。
因为首先要回答:
哪个 Git Commit 才是真正可信的?
如果攻击者修改了审计记录怎么办?
如果 Production Policy Bundle 和 Repository 状态已经不一致怎么办?
如果旧 Runtime Worker 仍缓存恶意 Policy 怎么办?
如果新的恶意授权已经签发怎么办?
所以需要:
Policy Recovery。
三十二、Policy Recovery 不能只是恢复 Git 文件
完整恢复应该至少包括:
1. Freeze governance changes
2. Revoke compromised authority
3. Identify last trusted governance state
4. Verify trusted root
5. Restore trusted policy artifact
6. Verify runtime loaded policy
7. Invalidate malicious / stale decisions
8. Reconcile effects produced under compromised policy
9. Rotate affected credentials / authorities
10. Generate Governance Recovery Attestation
11. Re-admit policy management capabilities
这与第(四十一)篇 Recovery Proof 完全一致。
只是恢复对象从:
Agent
变成:
Governance Control Plane
三十三、Governance Recovery 需要独立的 Trusted Snapshot
如果最后一个可信 Policy 只存在于:
被攻击的 Git Repository
那么恢复就存在循环依赖。
因此建议保存独立的:
Trusted Governance Snapshot
至少包含:
Root Policy Version
Root Artifact Digest
Constitutional Policy Digest
Trusted Delegations
Production Bundle Digest
Approved Repository Commit
Trusted Issuer Identity
Recovery Instructions
必要时可以在不同信任域保存。
目标不是让备份越多越好。
而是确保:
Policy Control Plane 失陷以后,仍然存在不依赖已失陷组件的可信恢复锚点。
这正对应 NIST SP 800-193 所强调的 Protection、Detection、Recovery 三类韧性思想,只不过本文将其扩展到了 Governance Policy Control Plane。
三十四、Governance Recovery Authority 也不能由日常 Policy Admin 单独掌握
如果攻击者已经控制:
Policy Admin
而:
Recovery Authority
=
Policy Admin
那么恢复能力本身也已经失陷。
因此应该把:
Day-to-day Governance Authority
与:
Governance Recovery Authority
分离。
例如:
日常 Policy Admin 可以修改:
G3 Domain Policy
但 Root Recovery 需要:
Root Governance Quorum
这可以降低单一管理账户被攻破后同时控制:
Production Policy
+
Recovery Path
的风险。
三十五、Root Rotation:治理信任根必须能够安全轮换
任何长期存在的信任根都会面临:
人员变动。
密钥过期。
组织重构。
身份提供商变化。
疑似泄露。
因此 Governance Root 必须支持:
Root Rotation
例如:
ROOT-7
↓
ROOT-8
新的 Root 应明确:
增加哪些 Authority。
删除哪些 Authority。
新的 Quorum。
新的 Root Digest。
生效时间。
旧 Root 是否仍有过渡期。
如果怀疑 Root Authority 已被攻破:
必须进入:
Emergency Root Recovery
而不是普通 Policy PR。
三十六、多站点 SEO/GEO 系统尤其需要 Governance Delegation
假设未来系统管理:
搜索引擎优化.中国
ChristmasRides.com
PortableCarnivals.com
其他 B2B 网站
不能让每个 Domain Operator 都拥有:
Organization Root Governance
更合理的是:
Organization Root
↓
SEO Domain Governance
├── SITE-A Governance
├── SITE-B Governance
└── SITE-C Governance
Site-level Policy Owner 可以修改:
本网站内容发布规则
但不能改变:
Organization-wide Break-glass Policy
也不能给自己增加:
Root Authority
这就是:
Delegated Governance。
三十七、Delegation 必须有限制,否则只是层级化超级管理员
Delegation 至少需要限制:
Allowed Policy Namespace
Allowed Resource Scope
Maximum Delegation Depth
May Re-delegate?
May Create Exceptions?
May Invoke Emergency Override?
Expiry
例如:
delegation:
principal: seo-governance-team
scope:
policy_namespace:
- seo.content
- seo.publishing
forbidden:
- root.identity
- break_glass.root
- audit.disable
redelegation:
allowed: false
否则:
Delegated Admin
仍然可能继续委托:
another admin
直到权限逐渐扩散。
三十八、Meta-Governance 也需要 Decision Receipt
第(四十三)篇有:
Policy Decision Receipt
第(四十四)篇需要新增:
Governance Decision Receipt。
例如:
{
"governance_decision_id": "GDR-044-001",
"action": "activate_policy",
"policy": {
"id": "SEO-PUBLISH-64",
"digest": "sha256:<digest>"
},
"authority": {
"author": "policy-author-a",
"reviewers": [
"reviewer-b",
"reviewer-c"
]
},
"quorum": {
"required": 2,
"satisfied": true
},
"root_version": "ROOT-7",
"decision": "APPROVE",
"environment": "production"
}
这样可以回答:
这条 Policy 为什么有资格成为生产 Policy?
三十九、治理证据必须独立于普通 Agent Trace
普通 Agent Trace 记录:
Research
Writer
Fact Check
Publish
Governance Trace 应独立记录:
Policy Change
Policy Approval
Emergency Override
Break-glass Activation
Root Update
Policy Recovery
因为如果所有审计信息都进入同一套普通应用日志:
拥有应用管理员权限的人可能同时改变:
行为
+
行为证据
Meta-Governance 需要考虑审计数据本身的权限隔离。
NIST AC-5 的职责分离讨论也强调,管理访问控制与审计等高敏感职能不应不加区分地集中在同一主体上。
四十、Policy Conflict 也必须在 CI 中测试
不要等生产运行时才第一次发现:
Policy A = ALLOW
Policy B = DENY
Governance CI 应加入:
Conflict Detection
测试:
哪些资源同时被多个 Policy 覆盖?
有没有新的 Permit 穿过既有 Forbid?
Emergency Policy 是否违反 Non-overrideable Invariant?
新 Policy 是否扩大了 Root Authority?
Delegation 是否发生权限升级?
可以输出:
Policy Conflict Report
例如:
conflict:
id: PC-044-001
policies:
- GLOBAL-WRITE-DENY
- SEO-RECOVERY-WRITE
resource:
SITE-A
action:
UPDATE_CANONICAL
resolution:
REQUIRE_EXPLICIT_RECOVERY_CAPABILITY
四十一、Governance CI 应增加 Authority Diff
第(四十三)篇提出了:
Decision Diff
即新旧 Policy 对测试请求的决定有什么变化。
现在还需要:
Authority Diff。
例如:
ROOT-7
→
ROOT-8
导致:
New Root Authorities:
+ team-platform
Removed:
- user-former-admin
New Bypass:
+ emergency-app
Quorum:
2-of-3
→
2-of-5
这些变化必须被显式展示。
尤其应该突出:
Newly Granted Governance Capability
因为它比一般 Policy 逻辑变化更加敏感。
四十二、GitHub Bypass List 本身也应该接受 Governance Review
GitHub Rulesets 可以为特定角色、团队或 Apps 配置 Bypass List。
这是一项非常有用的功能。
但如果 Bypass List 太宽:
Repository Admin
→ Always Bypass
那么 Required Reviews、Status Checks 等保护可能失去治理意义。
对于 Governance Repository,应特别审查:
哪些主体有 bypass。
是:
Always Allow
还是:
Pull Requests Only
是否仍然需要审计。
GitHub 也允许环境配置部署保护和审批条件;管理员是否能够绕过相关保护应作为显式配置和治理对象。
因此:
“谁可以绕过 GitHub 自己的治理规则”同样属于 Meta-Governance。
四十三、Governance Quorum 必须处理不可用问题
如果系统要求:
3-of-3
Root Approvers 批准任何变更。
其中一个 Approver 无法访问。
系统可能永久锁死。
因此 Quorum 设计需要平衡:
Security
与:
Recoverability
例如:
2-of-3
通常比:
3-of-3
更能容忍单一人员不可用。
但具体数字不能机械照搬。
还要根据:
组织规模。
人员独立性。
风险等级。
值班模式。
恢复时效。
进行设计。
TUF 的 threshold 机制同样允许每个角色定义需要多少可信密钥达到签名门槛。
但 Agent Governance 的具体 K/N 必须由自己的威胁模型决定。
四十四、完整 Meta-Governance Control Plane
把前面的机制组合起来:
Governance Root of Trust
↓
Constitutional Policy
↓
Authority & Delegation
↓
Governance Quorum
↓
Policy Authoring
↓
Policy Review
↓
Conflict Analysis
↓
Governance CI
↓
Approved Policy Artifact
↓
Production Policy Control Plane
↓
Agent Runtime Enforcement
紧急路径则是:
Incident
↓
Break-glass Request
↓
Emergency Authority Check
↓
Dual Control / Quorum
↓
Scoped Temporary Capability
↓
Emergency Effect
↓
Automatic Expiry
↓
Recovery Proof
↓
Post-use Review
恢复路径:
Governance Compromise
↓
Freeze Governance Plane
↓
Revoke Compromised Authority
↓
Trusted Root Verification
↓
Trusted Policy Snapshot
↓
Policy State Reconciliation
↓
Decision / Effect Reconciliation
↓
Root or Authority Rotation
↓
Recovery Attestation
↓
Governance Re-admission
到这里,治理本身终于也进入完整生命周期。
四十五、在现有 SEO Publisher 中应该先做哪些,而不是一次性全部建设?
现实项目中没有必要马上实现完整 Governance Root Platform。
可以分五个阶段。
Phase 1:先把 Policy Repository 权限收紧
最低要求:
Production Agent
cannot modify
governance policy.
Policy 修改必须通过 Pull Request。
Phase 2:增加职责分离
至少实现:
Policy Author
≠
Sole Production Approver
高风险 Policy 启用独立审批。
Phase 3:建立 Emergency Policy
不要等真正事故发生以后才临时设计。
提前定义:
哪些 Incident 允许 Break Glass。
谁可以申请。
谁批准。
最大 Scope。
最大 TTL。
Phase 4:建立 Root Manifest
先不需要复杂密码学系统。
最初可以记录:
Root Policy Version
Trusted Governance Repository
Trusted Deployment Workflow
Root Owners
High-risk Approval Requirement
Non-overrideable Invariants
并形成独立备份。
Phase 5:建立 Governance Recovery Drill
模拟:
Policy Repository 被恶意修改。
错误 Policy 已进入生产。
正常管理员不可用。
Break Glass 被调用。
检查系统是否真正能够:
Freeze
Recover
Verify
Re-authorize
而不是只停留在设计文档中。
四十六、Meta-Governance 应监测哪些指标?
建议增加:
| 指标 | 需要回答的问题 |
|---|---|
| Root Policy Change Count | Root 多久被修改一次? |
| Governance Authority Expansion | 是否正在增加治理权限? |
| Break-glass Activation Count | 紧急路径是否异常频繁? |
| Policy Bypass Count | 有多少规则被绕过? |
| Governance Quorum Failure | 高风险批准是否因权限问题失败? |
| Emergency Capability Overrun | 是否超 Scope / TTL? |
| Policy Conflict Count | 有多少规则产生冲突? |
| Unauthorized Policy Deployment | 是否有未经批准 Policy 进入生产? |
| Root Version Drift | 运行环境与批准 Root 是否一致? |
| Governance Recovery Time | 治理控制面需要多久恢复? |
| Unattributed Governance Action | 是否存在无法解释的治理修改? |
其中非常值得关注:
Governance Authority Expansion
如果权限只增加、不减少:
系统最终很可能出现 Governance Privilege Creep。
四十七、Game Day:必须主动测试治理系统是否真的能承受事故
建议至少模拟以下场景。
场景一:Policy Author 尝试自我升级
修改:
can_publish = false
为:
can_publish = true
检查是否被 Authority Control 阻止。
场景二:Reviewer 同时是 Requester
检查高风险动作是否触发 Separation of Duties。
场景三:一个 Root Approver 不可用
检查 Quorum 是否仍能安全恢复。
场景四:Break Glass 超时
检查 TTL 到期后权限是否真正失效。
场景五:Break Glass 尝试修改 Root Policy
必须:
DENY
如果该动作属于 Non-overrideable Invariant。
场景六:恶意 Policy 已部署
检查 Trusted Snapshot 是否足以恢复。
场景七:GitHub Repo 与 Runtime Bundle 不一致
检查 Root / Bundle Drift Detection。
场景八:Emergency Override 与 Containment Deny 冲突
检查 Conflict Resolution 是否给出一致结果。
四十八、十五条 Meta-Governance Safety Invariants
最后,把整个第(四十四)篇压缩成可以进入 Policy Regression Test 的约束。
Invariant 1
Policy Enforcement Power
≠
Policy Modification Power
Invariant 2
Production Agent
must not unilaterally
expand its own authority
Invariant 3
Policy Author
≠
Sole Critical Policy Approver
Invariant 4
Root Policy Change
requires stronger authority
than Domain Policy Change
Invariant 5
Governance Quorum
must be explicit and verifiable
Invariant 6
Break Glass
≠
Permanent Administrator
Invariant 7
Emergency Authority
must be scoped
Invariant 8
Emergency Authority
must expire
Invariant 9
Break-glass Usage
must be attributable and audited
Invariant 10
Non-overrideable Constitutional Invariant
cannot be bypassed by ordinary emergency policy
Invariant 11
Policy Conflict
must have deterministic resolution
Invariant 12
Governance Root
must have an independent recovery path
Invariant 13
Compromised Governance Authority
must not remain a Recovery Authority
Invariant 14
Every Production Policy
must be traceable to
an approved Governance Decision
Invariant 15
Unattributed Governance Change
→
Security Incident
这十五条合在一起,表达了一件事情:
治理系统不能只拥有权力,它必须拥有对权力的约束。
结语:最高风险权限,不是执行生产操作,而是重新定义什么操作可以被执行
AI Agent 治理发展到这里,问题已经发生了根本变化。
最初我们担心的是:
模型会不会输出错误内容?
后来变成:
Agent 会不会调用错误工具?
再后来:
Agent 会不会越权?
接着:
事故发生以后系统能不能停下来?
然后:
恢复以后为什么还应该信任它?
第(四十二)篇进一步问:
多个 Agent 都局部正确,
为什么整个系统仍然可能错误?
第(四十三)篇则把答案推进到:
必须把治理规则放到真正的 Effect Boundary。
但是到了第(四十四)篇,我们终于抵达治理体系最敏感的一层:
Who governs the governor?
谁来治理治理者?
如果一个 Agent 不能绕过 Policy,却可以修改 Policy:
治理失效。
如果 Policy Author 可以批准自己扩大权限:
治理失效。
如果 Emergency Override 可以永久存在:
治理失效。
如果 Root Admin 能够修改 Root、取消审计、绕过审批并清理证据:
治理仍然只是另一种形式的超级管理员。
因此,真正成熟的 Meta-Governance 必须形成:
Governance Root of Trust
↓
Constitutional Policy
↓
Delegated Policy Authority
↓
Separation of Duties
↓
Governance Quorum
↓
Policy Conflict Resolution
↓
Controlled Emergency Override
↓
Runtime Policy Enforcement
↓
Independent Audit
↓
Policy Recovery
这条链意味着:
生产系统不只是治理 Agent。
也不只是治理 Policy。
而是进一步治理:
谁拥有改变治理边界的权力。
于是我们从第(四十三)篇的:
Policy-enforced and Evidence-carrying Autonomous Workflow
继续推进到:
Governance-governed Autonomous System。
如果必须用一句话概括第(四十四)篇:
The most privileged action in an autonomous system is not executing a production command; it is changing the rules that decide which production commands are allowed.
换成中文:
自治系统中最危险的权限,往往不是执行生产操作,而是重新定义什么生产操作可以被允许。
因此:
治理权本身,必须被治理。
官方依据与研究边界
1. NIST SP 800-53 Rev. 5 — Separation of Duties
NIST AC-5 要求识别需要职责分离的职责,并建立相应系统访问授权。本文据此构建 Policy Author、Reviewer、Approver、Deployer 与 Auditor 的职责隔离,但这些 Agent Governance 角色并非 NIST 官方角色分类。
官方资料:
https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final
2. NIST SP 800-193 — Platform Firmware Resiliency Guidelines
NIST SP 800-193 在平台固件领域讨论 Root of Trust 以及 Protection、Detection、Recovery。本文借鉴 Root of Trust 与恢复锚点思想构建 Governance Root of Trust,并不把两者视为同一技术规范。
官方资料:
https://csrc.nist.gov/pubs/sp/800/193/final
3. Kubernetes RBAC — Privilege Escalation Prevention
Kubernetes RBAC 在 API 层限制通过 Role / RoleBinding 自行扩大权限,并为确实需要扩大 Role 内容的主体定义显式 escalate 能力。本文据此借鉴 No Self-Escalation 思想。
官方资料:
https://kubernetes.io/docs/reference/access-authn-authz/rbac/
4. Microsoft Entra — Emergency Access Accounts
Microsoft 建议建立专门 Emergency Access / Break-glass Accounts,并对其使用进行高优先级监测。本文将这一思路扩展为针对 Agent Governance 的短时、范围化 Emergency Capability。
官方资料:
https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/security-emergency-access
5. HashiCorp Vault Control Groups
Vault Enterprise Control Groups 可以要求额外授权因素,并支持由多名授权者共同满足请求。本文借鉴其 Dual Control / Multi-party Authorization 思想构建 Governance Quorum。
官方资料:
https://developer.hashicorp.com/vault/docs/enterprise/control-groups
6. The Update Framework — Root Role and Signature Threshold
TUF Root Metadata 定义可信 Root Role、角色密钥和 signature threshold,并支持信任委托。本文借鉴 Threshold Trust 与 Root Delegation 思想,并不声称 TUF 已定义 Agent Governance Root。
官方资料:
https://theupdateframework.io/docs/metadata/
7. Cedar Authorization
Cedar 提供 Default Deny、Forbid Overrides Permit 和 Skip-on-error 等明确的授权组合语义。本文将其作为 Policy Conflict Resolution 的工程参照,同时明确 Agent Meta-Governance 的具体层级优先规则属于项目设计。
官方资料:
https://docs.cedarpolicy.com/auth/authorization.html
8. GitHub Rulesets / Deployment Protection
GitHub 支持 Ruleset Bypass List、Required Reviewers、部署保护规则等治理能力。本文据此说明 Governance Repository 的 Bypass 本身也必须受到治理。
官方资料:
https://docs.github.com/en/actions/reference/workflows-and-actions/deployments-and-environments
本项目原创工程设计
以下属于本项目在上述安全工程思想基础上的组合性设计:
- Governance Root of Trust
- Constitutional Policy
- Governance Authority Graph
- Governance Quorum for Agent Policy
- Governance Decision Receipt
- Policy Authority Diff
- Policy Conflict Report
- Scoped Break-glass Capability
- Non-overrideable Governance Invariants
- Trusted Governance Snapshot
- Governance Recovery Attestation
- Delegated SEO/GEO Governance
- Governance-governed Autonomous System
这些概念适合继续转换为 GitHub Repository、Policy Schema、Cloudflare Publishing Gateway、WordPress Production Control 和 Governance CI/CD,但不应描述成 NIST、Microsoft、Kubernetes、GitHub、Vault、Cedar 或 TUF 已经统一发布的 AI Agent Meta-Governance 标准。
第(四十五)篇预告
完成 Meta-Governance 后,我们已经形成:
Agent
↓
Policy
↓
Meta-Governance
但一个新的问题马上出现:
规则、例外、紧急授权和状态机全部组合以后,我们怎么证明它们不会产生某个此前没有想到的危险路径?
例如:
正常状态禁止发布。
Recovery 状态允许有限写入。
Break-glass 又能够临时覆盖某些限制。
Containment 期间要求撤销写权限。
某个资源同时拥有 Lease。
另外一个 Policy 又允许补偿操作。
单独看每条规则都合理。
组合起来却可能出现:
Policy A + Policy B + State C
→ Unexpected ALLOW
或者:
所有规则都安全
→ 但系统永远无法恢复
前者属于 Safety 问题。
后者属于 Liveness 问题。
因此,第(四十五)篇可以进入:
Formal Methods / State Machine Verification / Temporal Logic / Model Checking / Safety Properties / Liveness Properties / Policy Conflict Verification / Invariant Checking / Runtime Assurance / Counterexample-driven Governance
从:
Governance-governed Autonomous System
进一步走向:
Formally Specified and Runtime-Assured Autonomous System。
核心问题将变成:
我们能不能不仅“相信”治理规则正确,而是系统性寻找能够违反规则的状态组合,并在上线前给出 Counterexample?