跳转至

证明

将一次干净的检查记录为可持久化的审计证据,并检测漂移。属于 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 输出中以供审计日志使用,但不属于稳定哈希的一部分。

接受策略状态的生命周期:

  1. 编写或审查 policy.jsonc。
  2. 运行 openclaw policy check --json。
  3. 如果检查干净,将 attestation.policy.hash 记录为 expectedHash。
  4. 将 attestation.attestationHash 记录为 expectedAttestationHash。
  5. 在 CI 或发布门禁中重新运行 openclaw doctor --lint。

如果策略规则是有意变更的,则根据一次干净检查同时更新两个已接受的哈希。如果只更改了工作区设置(策略保持不变),通常只需要更改 expectedAttestationHash。

启用或升级 agents.workspace 规则会向工作区哈希和 attestation 哈希添加 agentWorkspace 证据;启用后请审查新证据并刷新已接受的 attestation 哈希。启用或升级工具姿态规则也会以相同方式添加 toolPosture 证据。

openclaw policy watch 会重新运行检查,并在当前证据不再匹配 expectedAttestationHash 时报告:

openclaw policy watch --json
openclaw policy watch --agent ops --json

在需要单次漂移评估的 CI 或脚本中使用 --once。若不使用 --once,默认每两秒轮询一次;可使用 --interval-ms 更改间隔。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw