证明
将一次干净的检查记录为可持久化的审计证据,并检测漂移。属于 openclaw policy 参考文档的一部分。
接受策略状态¶
示例 JSON 输出:
{
"ok": true,
"attestation": {
"checkedAt": "2026-05-10T20:00:00.000Z",
"policy": {
"path": "policy.jsonc",
"hash": "sha256:..."
},
"workspace": {
"scope": "policy",
"hash": "sha256:..."
},
"findingsHash": "sha256:...",
"attestationHash": "sha256:..."
},
"evidence": {
"channels": [
{
"id": "telegram",
"provider": "telegram",
"source": "oc://openclaw.config/channels/telegram",
"enabled": false
}
],
"mcpServers": [
{
"id": "docs",
"transport": "stdio",
"source": "oc://openclaw.config/mcp/servers/docs",
"command": "npx"
}
],
"modelProviders": [
{
"id": "openai",
"source": "oc://openclaw.config/models/providers/openai"
}
],
"modelRefs": [
{
"ref": "openai/gpt-6-astra",
"provider": "openai",
"model": "gpt-6-astra",
"source": "oc://openclaw.config/agents/defaults/model"
}
],
"network": [
{
"id": "browser-private-network",
"source": "oc://openclaw.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork",
"value": false
}
],
"gatewayExposure": [
{
"id": "gateway-bind",
"kind": "bind",
"source": "oc://openclaw.config/gateway/bind",
"value": "loopback",
"nonLoopback": false,
"explicit": true
}
],
"agentWorkspace": [
{
"id": "agents-defaults-workspace-access",
"kind": "workspaceAccess",
"source": "oc://openclaw.config/agents/defaults/sandbox/workspaceAccess",
"scope": "defaults",
"value": "ro",
"sandboxMode": "all",
"sandboxModeSource": "oc://openclaw.config/agents/defaults/sandbox/mode",
"sandboxEnabled": true,
"explicit": true
},
{
"id": "agents-defaults-tool-exec",
"kind": "toolDeny",
"source": "oc://openclaw.config/tools/deny",
"scope": "defaults",
"tool": "exec",
"denied": true,
"explicit": true
}
],
"secrets": [
{
"id": "vault",
"kind": "provider",
"source": "oc://openclaw.config/secrets/providers/vault",
"providerSource": "env"
},
{
"id": "oc://openclaw.config/models/providers/openai/apiKey",
"kind": "input",
"source": "oc://openclaw.config/models/providers/openai/apiKey",
"provenance": "secretRef",
"refSource": "env",
"refProvider": "vault"
}
],
"authProfiles": [
{
"id": "github",
"source": "oc://openclaw.config/auth/profiles/github",
"validMetadata": true,
"provider": "github",
"mode": "token"
}
],
"tools": [
{
"id": "deploy",
"source": "oc://AGENTS.md/tools/deploy",
"line": 12,
"risk": "critical",
"sensitivity": "restricted",
"capabilities": ["IRREVERSIBLE_EXTERNAL"]
}
]
},
"checksRun": 30,
"checksSkipped": 0,
"findings": []
}
attestation.policy.hash 标识编写的规则工件。evidence 记录检查所依据的、观察到的 OpenClaw 状态,workspace.hash 标识该证据载荷。findingsHash 标识确切的发现结果集合。checkedAt 记录检查运行的时间。attestationHash 标识稳定声明(策略哈希、证据哈希、发现结果哈希以及干净/非干净状态),并有意排除 checkedAt,因此相同的策略状态总是产生相同的 attestation 哈希。这四个值共同构成一次策略检查的审计元组。
如果网关或监督者使用策略来阻止、批准或注释运行时操作,则应记录来自上一次干净检查的 attestation 哈希。checkedAt 保留在 JSON 输出中以供审计日志使用,但不属于稳定哈希的一部分。
接受策略状态的生命周期:
- 编写或审查
policy.jsonc。 - 运行
openclaw policy check --json。 - 如果检查干净,将
attestation.policy.hash记录为expectedHash。 - 将
attestation.attestationHash记录为expectedAttestationHash。 - 在 CI 或发布门禁中重新运行
openclaw doctor --lint。
如果策略规则是有意变更的,则根据一次干净检查同时更新两个已接受的哈希。如果只更改了工作区设置(策略保持不变),通常只需要更改 expectedAttestationHash。
启用或升级 agents.workspace 规则会向工作区哈希和 attestation 哈希添加 agentWorkspace 证据;启用后请审查新证据并刷新已接受的 attestation 哈希。启用或升级工具姿态规则也会以相同方式添加 toolPosture 证据。
openclaw policy watch 会重新运行检查,并在当前证据不再匹配 expectedAttestationHash 时报告:
在需要单次漂移评估的 CI 或脚本中使用 --once。若不使用 --once,默认每两秒轮询一次;可使用 --interval-ms 更改间隔。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw