attestation.policy模块 27Artifact build attestation
决定您接受哪些构建者来构建策略快照和检测器包,并拒绝受信任作者签名但由另一次构建产生的内容。
attestation.policy 读取并设置构建来源策略。它列出受信任的构建者、是否要求证明,以及持有多少份证明。作者的签名说明谁写了包;本模块询问是哪个构建者产出了这些字节,二者是不同的维度。
attestation.policy模块 27决定您接受哪些构建者来构建策略快照和检测器包,并拒绝受信任作者签名但由另一次构建产生的内容。
attestation.policy 读取并设置构建来源策略。它列出受信任的构建者、是否要求证明,以及持有多少份证明。作者的签名说明谁写了包;本模块询问是哪个构建者产出了这些字节,二者是不同的维度。
policybuilders、requireAttestation 和 requireTransparencyLog。kindspolicy-snapshot 和 detector-pack。policy 返回构建者、requireAttestation 和 requireTransparencyLog、两种被证明的 kinds,以及持有的证明数量。
trust 接受带 的构建者、 或 的 、它可以证明的 ,对 还需要 和 。
在共享的演示工作区中使用演示密钥运行:任何人都可以看到其中的内容,因此请勿发送任何私密信息。 attestation.policy 文档
点击运行,将左侧的请求发送到共享演示工作区。
在共享的演示工作区中使用演示密钥运行:任何人都可以看到其中的内容,因此请勿发送任何私密信息。
一个符合 API 接受格式的请求,以及模块返回格式的示例响应。
GET /api/v1/acp/attestation/policy Authorization: Bearer av_workspace_•••• → 200 { policy, kinds, attested }
信任一个 ci 构建者,其身份就是确切的发布工作流。由分叉或仿冒仓库构建的包会通不过身份检查。
包可以带有有效的作者签名,却来自一次有问题的构建。要求证明时,packs.list 会拒绝其注册。
绑定了 ATTESTATION_SELF_JWK 时,平面会对自己的策略快照签名。没有该签名而写入的快照在读取时不会被应用。
模块是对一件狭窄事情的强力保证。请仅在其确切范围内依赖它。
verify 对照存储的证明检查您发送的制品。信封自己的摘要不能代替对象。self 证明都会被拒绝,因为平面没有构建服务可检查那一来源。attestation.refused 写入账本。attestation.policy 事件中。可信时间是透明日志的 integratedTime,而不是签名者写下的 startedOn。已轮换掉的密钥只验证日志条目显示其在服役期间签署的内容。
策略快照在读取时、协调层加载它时检查。检测器包在 packs.list 注册时、作者检查之后,带 travelled: true 检查。
对同一制品,新的证明会取代旧的,因此策略锚点不会随每次协调写入而增长。
使用工作区 API 密钥作为 Bearer 令牌进行认证。基础 URL 为 https://api.intramedial.com。
/api/v1/acp/attestation/policy读取策略、被证明的类型和持有的数量。/api/v1/acp/attestation/attest为快照或包记录 DSSE 信封。attestedattestations 路由列出每份证明以及是否有见证。builderIdtrust 会替换任何同 id 的构建者;untrust 以它为键。issuerci 构建者,其证书必须来自的 OIDC 签发方。没有签发方的 ci 构建者会被拒绝。sanPatterns* 必须以 / 或 @ 结尾,并至少匹配一个字符。artifactverify 而言,是对象本身。随之发送的摘要不被接受为提问。loosenedrequire 返回:当调用关闭了 requireAttestation 时为 true。builderIdciselfkindkindsciissuersanPatternsattest 为某个 kind 和 name 存储 DSSE 信封,可附透明日志条目。较新的构建会取代较旧的;更早的构建会被拒绝。
require 开启 requireAttestation 或 requireTransparencyLog。当不存在构建者或自签名密钥时它拒绝开启,因为那样什么都无法加载。
{
"policy": {
"builders": [
{
"builderId": "release-workflow",
"kind": "ci",
"issuer": "https://token.actions.githubusercontent.com",
"sanPatterns": [
"https://github.com/acme/platform/.github/workflows/release.yml@refs/tags/*"
],
"keys": [],
"kinds": [
"detector-pack"
]
}
],
"requireAttestation": true,
"requireTransparencyLog": false
},
"kinds": [
"policy-snapshot",
"detector-pack"
],
"attested": 2
}关闭 requireAttestation 会追加一个带 loosened: true 的 attestation.policy 事件,所以悄悄降级也会留下账本条目。
packs.list。mandates.compile 存储自己的制品;本模块检查快照和包的证明。coordination.admit;证明保护的是加载的内容,而不是智能体接下来做什么。ci 构建者才能经受住这种情况。requireAttestation 默认关闭,全新的平面没有构建者。requireTransparencyLog,否则不能说明已查询透明日志;提供的日志条目必须指明此信封的摘要。trust 需要 keys.create,untrust 需要 keys.revoke,require 需要 policies.approve。读取策略不需要。
私钥从 ATTESTATION_SELF_JWK 读取,从不存储。如果自我证明失败,协调写入会继续进行,而不是丢失授权。
attest 需要 policy-snapshot 或 detector-pack 的 kind、非空的 name,以及带签名的信封。untrust 一个未被信任的构建者返回 404,对早于已持有版本的构建执行 attest 返回 409。coordination.* 操作。它只能通过 REST 访问。/api/v1/acp/attestation/attestations/api/v1/acp/attestation/verify对照制品的证明来验证它。/api/v1/acp/attestation/trust添加或替换受信任的构建者。/api/v1/acp/attestation/untrust移除受信任的构建者。/api/v1/acp/attestation/require开启或关闭证明要求。此模块没有 MCP 操作。请通过 REST 从任何智能体或程序调用它。
coordination.admit01