gh attestation verify
gh attestation verify [<file-path> | oci://<image-uri>] [--owner | --repo] [flags]
使用相关的加密签名的证明来验证工件的完整性和来源。
为了验证证明,您必须验证生成证明的 Actions 工作流的身份(又称签名者工作流)。鉴于此身份,验证过程检查证明中的签名,并确认证明引用了提供的工件。
为了指定工件,该命令需要
- 工件的文件路径,或
- 容器镜像 URI(例如
oci://<image-uri>
)- (请注意,如果您提供 OCI URL,则您必须已向其容器注册表进行身份验证)
为了获取证明并验证签名者的身份,该命令需要以下任一项
--repo
标志(例如 --repo github/example)。--owner
标志(例如 --owner github),或
--repo
标志值必须与工件关联的 GitHub 存储库的名称匹配。
--owner
标志值必须与工件关联的存储库所属的 GitHub 组织的名称匹配。
默认情况下,verify 命令将尝试从 GitHub API 获取与提供的工件关联的证明。如果您希望使用存储在磁盘上的证明来验证工件(参见 download
命令),请提供指向 --bundle
标志的路径。
要查看成功验证后生成的完整结果,例如用于策略引擎,请提供 --format=json
标志。
签名者工作流的身份将根据证明证书中的主体备用名称 (SAN) 进行验证。通常,签名者工作流与启动运行并生成证明的相同工作流,并且位于您的存储库中。为此,默认情况下,此命令使用 --repo
或 --owner
标志值来验证 SAN。
但是,有时调用者工作流与执行签名的工作流并不相同。如果您的证明是通过可重用工作流生成的,那么该可重用工作流就是需要验证其身份的签名者。在这种情况下,签名者工作流可能位于您的 --repo
或 --owner
中,也可能不在。
使用可重用工作流时,使用 --signer-repo
、--signer-workflow
或 --cert-identity
标志来验证签名者工作流的身份。
有关更多策略验证选项,请参阅其他可用标志。
选项
-b
,--bundle <string>
- 磁盘上捆绑包的路径,可以是单个 JSON 文件中的捆绑包,也可以是包含多个捆绑包的 JSON 行文件
-
--cert-identity <string>
- 强制证书的主体备用名称与提供的 value 完全匹配
-i
,--cert-identity-regex <string>
- 强制证书的主体备用名称与提供的正则表达式匹配
-
--cert-oidc-issuer <string> (default "https://token.actions.githubusercontent.com")
- OIDC 令牌的发行者
-
--custom-trusted-root <string>
- 指向 trusted_root.jsonl 文件的路径;可能用于脱机验证
-
--deny-self-hosted-runners
- 对于在自托管运行器上生成的证明,验证失败
-d
,--digest-alg <string> (default "sha256")
- 用于计算工件摘要的算法:{sha256|sha512}
-
--format <string>
- 输出格式:{json}
-q
,--jq <expression>
- 使用 jq 表达式过滤 JSON 输出
-L
,--limit <int> (default 30)
- 要获取的证明的最大数量
-
--no-public-good
- 不要验证使用 Sigstore 公共产品实例签名的证明
-o
,--owner <string>
- GitHub 组织,用于通过其范围证明查找
-
--predicate-type <string>
- 按提供的谓词类型过滤证明
-R
,--repo <string>
- 存储库名称,格式为 <owner>/<repo>
-
--signer-repo <string>
- 签署证明的可重用工作流的存储库,格式为 <owner>/<repo>
-
--signer-workflow <string>
- 签署证明的工作流,格式为 [host/]<owner>/<repo>/<path>/<to>/<workflow>
-t
,--template <string>
- 使用 Go 模板格式化 JSON 输出;请参阅“gh help formatting”