Docker AI Governance 的审计记录在各交付模式下使用同一套结构。本地 JSON Lines 文件和 云端交付的记录包含相同的元数据字段。
记录只捕获元数据。它们不包含提示内容、智能体输出或参数值。参数键在有助于识别某个 操作时可能会出现。
通用字段
| 字段 | 描述 |
|---|---|
audit_event_id | 审计事件的唯一 ID。 |
timestamp | Docker 记录该事件的 UTC 时间。 |
schema_version | 记录结构的版本。请将 SIEM 字段映射固定到该版本。 |
category | 事件类别,例如 AUDIT_CATEGORY_MANAGEMENT、AUDIT_CATEGORY_EVALUATION 或 AUDIT_CATEGORY_EXECUTION。 |
decision | 求值记录的治理判定。 |
username | 已登录 Docker 用户的 Docker Hub 用户名。 |
user_email | 已登录 Docker 用户的电子邮件地址。 |
org_id | 生效策略所属组织的 ID。 |
org_name | 生效策略所属组织的显示名称。 |
audit_session_id | 标识产生该记录的守护进程会话。 |
resource_id | 求值的目标,例如主机和端口、文件路径或工具。 |
os | 产生该记录时的操作系统。 |
app_version | 产生该记录的 Docker 组件版本。 |
client_name | 来源组件,例如 Docker Sandboxes 的 sbx。 |
hostname | 产生该记录的机器的主机名。 |
sandbox_id | 沙箱的稳定 ID。它在同一沙箱的重启之间保持不变。 |
deny_reason | 被拒绝的请求为何被阻止。出现在拒绝判定中。 |
policy_rule | 匹配的策略规则名称,或在没有规则匹配时为 default-deny。 |
policy_id | 产生该判定的策略的 ID。 |
policy_type | 策略的结构类型,例如 AllowList:V0。 |
policy_source | 策略的来源:remote、local 或 system。 |
policy_denial_code | 请求被拒绝的原因。仅出现在拒绝判定中。有关更多细节,请参阅拒绝代码。 |
enforcement_mode | Docker 求值请求时生效的治理模式。有关更多细节,请参阅强制执行模式。 |
approval | 审批详情。当判定涉及审批时出现。有关更多细节,请参阅审批字段。 |
action_type | 标识记录中特定操作对象的载荷判别字段。 |
agent | 与该事件关联的 AI 智能体(当 Docker 知道时)。 |
拒绝代码
policy_denial_code 用于分类请求被拒绝的原因:
| 代码 | 含义 |
|---|---|
POLICY_DENIAL_CODE_POLICY_DENY | 匹配到了一条拒绝规则。policy_id 和 policy_rule 用于标识该规则。 |
POLICY_DENIAL_CODE_DEFAULT_DENY | 没有任何规则允许该请求,因此适用了默认拒绝。 |
POLICY_DENIAL_CODE_POLICY_SNAPSHOT_STALE | 缓存的策略已过期,因此求值以 fail closed 结束。 |
POLICY_DENIAL_CODE_POLICY_EVALUATION_FAILED | 加载或求值策略失败,因此求值以 fail closed 结束。 |
POLICY_DENIAL_CODE_GOVERNANCE_BLOCKED | 无法为该用户解析出治理,例如因为该用户同时属于多个组织,因此请求在未查询本地规则的情况下就被拒绝。 |
POLICY_DENIAL_CODE_INVALID_REQUEST | 请求格式有误,因此求值以 fail closed 结束。 |
类别
| 类别 | 描述 |
|---|---|
AUDIT_CATEGORY_MANAGEMENT | 会话生命周期、策略同步和配置事件。 |
AUDIT_CATEGORY_EVALUATION | 针对单个请求的策略判定,例如允许、拒绝或同意。 |
AUDIT_CATEGORY_EXECUTION | 求值后的操作运行结果。 |
会话生命周期记录标记每次守护进程运行的开始和结束。求值记录共享该次运行的 audit_session_id,因此你可以把每个判定关联回某个守护进程会话。
判定
| 判定 | 描述 |
|---|---|
AUDIT_DECISION_ALLOW | Docker 允许了该操作。 |
AUDIT_DECISION_DENY | Docker 拒绝了该操作。 |
AUDIT_DECISION_APPROVAL_REQUIRED | 策略要求用户批准该操作。 |
AUDIT_DECISION_APPROVAL_ALLOW | 用户批准了一个待处理的请求。 |
AUDIT_DECISION_APPROVAL_DENY | 用户拒绝了一个待处理的请求。 |
强制执行模式
enforcement_mode 字段显示 Docker 求值请求时治理是如何应用的。
| 模式 | 描述 |
|---|---|
enforce | 你的组织策略被强制执行。 |
audit | Docker 记录该判定以供观测,但不强制执行策略。 |
off | 治理未启用。Docker 仍会把该记录写入本地审计日志。 |
解析网络审批的记录不包含 enforcement_mode,被拒绝的 MCP 审批记录同样不包含。已批准的 MCP 请求会被再次求值,因此它的记录包含 enforcement_mode。
审批字段
当网络访问需要审批时,Docker 会拦截该请求并写入一条 AUDIT_DECISION_APPROVAL_REQUIRED 记录。如果用户批准,Docker 会再写入一条带 AUDIT_DECISION_APPROVAL_ALLOW 的记录。两条 记录携带相同的 approval.approval_request_id,因此你可以把它们关联起来,重建完整的审批 过程。该审批适用于沙箱后续的请求。它不会重试那个被拦截的请求。如果用户忽略该请求,它 就没有被解析,因此不会写入第二条记录,并且沙箱下次访问该目标地址时会再次请求。有关 审批的工作方式,请参阅 需要审批的访问。
对于 MCP 审批,已批准的请求会被再次求值并记录为 AUDIT_DECISION_APPROVAL_ALLOW,被 拒绝的请求则记录为 AUDIT_DECISION_APPROVAL_DENY。这两种记录都不包含 approval.approval_request_id 或 approval.grant_scope。
| 字段 | 描述 |
|---|---|
approval.reason_codes | 要求审批的策略原因。当策略提供了原因时,出现在 AUDIT_DECISION_APPROVAL_REQUIRED 记录中;在有可用原因时,也出现在被拒绝的 MCP 审批中。 |
approval.approval_request_id | 将「需要审批」记录与解析它的记录关联起来的 ID。 |
approval.grant_scope | 用户接受的作用范围。仅出现在 AUDIT_DECISION_APPROVAL_ALLOW 记录中。 |
approval.context_digest | 被解析请求的 SHA-256 摘要,用于表明它与被搁置的请求一致。仅出现在被拒绝的 MCP 审批中。 |
对于网络审批,Docker Sandboxes 会把 approval.grant_scope 记录为 AUDIT_APPROVAL_GRANT_SCOPE_PERSISTENT,这表示该审批适用于后续请求。
如果用户批准了请求,但 Docker 无法应用该授权,记录的判定为 AUDIT_DECISION_DENY, 并包含 approval 对象。
动作类型
action_type 字段用于标识记录中特定操作的载荷。
| 动作类型 | 描述 |
|---|---|
session | 沙箱守护进程会话生命周期事件。 |
network_egress | 网络访问求值。 |
http_request | HTTP 请求求值。有关更多细节,请参阅 HTTP 请求载荷。 |
filesystem_mount | 文件系统挂载或路径访问求值。 |
tool_invocation | 工具调用求值。 |
resource_read | 资源读取求值。 |
server_registration | 服务器注册事件。 |
prompt | 提示相关的元数据事件。 |
network_egress_execution | 网络操作的结果。 |
filesystem_mount_execution | 文件系统操作的结果。 |
tool_execution | 工具调用的结果。 |
resource_read_execution | 资源读取的结果。 |
prompt_execution | 提示请求的结果。 |
policy_sync | 策略同步事件。 |
pii_detection | 数据检测结果的元数据事件。 |
c_score_report | C-score 报告的元数据事件。 |
policy_action | 策略配置或策略操作事件。 |
HTTP 请求载荷
当网络策略要求对每个 HTTP 请求都进行授权时,Docker 除了网络连接之外,还会求值请求的 方法和路径。这些求值产生的记录其 action_type 为 http_request,与该连接的 network_egress 记录分开。
| 字段 | 描述 |
|---|---|
http_request.method | HTTP 方法,例如 HTTP_METHOD_GET 或 HTTP_METHOD_POST。 |
http_request.host | 目标主机名或 IP 地址。IPv6 地址不显示方括号。 |
http_request.port | 目标端口。 |
http_request.path | URL 路径,不含查询字符串和片段。 |
记录示例
下面的示例展示了一个被拒绝规则拦截的请求:
{
"audit_event_id": "032d5bf2-6be0-484c-9fd1-296680bb9af4",
"timestamp": "2026-10-22T21:15:32.674118Z",
"schema_version": "1.228.0",
"category": "AUDIT_CATEGORY_EVALUATION",
"decision": "AUDIT_DECISION_DENY",
"username": "jordandoe",
"user_email": "jordandoe@example.com",
"audit_session_id": "d038717d-e86d-48c5-abbb-19b7f14c37c8",
"agent": "shell",
"sandbox_id": "my-sandbox",
"resource_id": "example.com:443",
"policy_rule": "local:fa56f4d3-7f16-4144-af84-caa7917b2387",
"policy_id": "f588126a-8323-47d5-b099-b3d184055733",
"policy_type": "AllowList:V0",
"policy_source": "local",
"policy_denial_code": "POLICY_DENIAL_CODE_POLICY_DENY",
"org_id": "9f8e7d6c-5b4a-3210-fedc-ba9876543210",
"org_name": "Acme Inc",
"os": "windows",
"app_version": "v0.48.0",
"client_name": "sbx",
"hostname": "host-machine",
"deny_reason": [
"denied: rule \"local:fa56f4d3-7f16-4144-af84-caa7917b2387\" matched op(action=net:connect:tcp, resource=net:domain:example.com:443)"
],
"enforcement_mode": "audit",
"action_type": "network_egress",
"network_egress": { "destination_port": "443", "protocol": "tcp" }
}下面的示例展示了一个用户批准需要审批的 HTTP 请求:
{
"audit_event_id": "3c1f6a2e-8b47-4d0a-9e55-2f7b1d6c9a04",
"timestamp": "2026-09-25T17:42:08.114502Z",
"schema_version": "1.216.0",
"category": "AUDIT_CATEGORY_EVALUATION",
"decision": "AUDIT_DECISION_APPROVAL_ALLOW",
"username": "jordandoe",
"user_email": "jordandoe@example.com",
"org_id": "9f8e7d6c-5b4a-3210-fedc-ba9876543210",
"org_name": "Acme Inc",
"audit_session_id": "8a3bc076-79d0-4502-baf3-cc6ad35fb578",
"resource_id": "api.example.com:443",
"os": "macos",
"app_version": "v0.46.0",
"client_name": "sbx",
"hostname": "host-machine",
"approval": {
"approval_request_id": "b7e2c9d1-4f60-4a8e-93c2-5d1e8f7a6b30",
"grant_scope": "AUDIT_APPROVAL_GRANT_SCOPE_PERSISTENT"
},
"action_type": "http_request",
"http_request": {
"method": "HTTP_METHOD_POST",
"host": "api.example.com",
"port": "443",
"path": "/v1/items"
},
"agent": "claude"
}