第 5 章 Attesting and verify a container image
在企业合同可以验证您的已签名的容器镜像之前,您必须首先创建 SLSA 认可,并将其与您的容器镜像相关联。经过验证是有关软件工件的可验证信息,包括在哪里、时间和提供链中给定软件"链接"的方式。有关 Software Artifacts (SLSA)验证的 Supply-chain 级别的更多信息,请参阅 SLSA Provenance。
先决条件
- 签名的容器镜像。
- 访问 OpenShift Web 控制台。
- 在 OpenShift 版本 4.13 或更高版本上运行的 Red Hat Trusted Artifact Signer 安装。
-
安装了
cosign
和oc
二进制文件的工作站。
流程
创建 SLSA provenance
predicate.json
文件,例如:echo '{ "builder": { "id": "https://localhost/dummy-id" }, "buildType": "https://localhost/dummy-type", "invocation": {}, "buildConfig": {}, "metadata": { "buildStartedOn": "2023-09-25T16:26:44Z", "buildFinishedOn": "2023-09-25T16:28:59Z", "completeness": { "parameters": false, "environment": false, "materials": false }, "reproducible": false }, "materials": [] } ' > predicate.json
签名并测试您刚才创建的
predicate.json
文件,例如:cosign attest -y --fulcio-url=$FULCIO_URL \ --rekor-url=$REKOR_URL \ --oidc-issuer=$OIDC_ISSUER_URL \ --predicate predicate.json \ --type slsaprovenance $IMAGE
Keycloak 将打开,以便在签署容器镜像时基于登录自动进行身份验证。
使用企业合同验证签名和测试,例如:
ec validate image --image $IMAGE \ --certificate-identity-regexp '.*' \ --certificate-oidc-issuer-regexp '.*' \ --output yaml --show-successes
重要
运行 ec validate image
命令时尽量具体,以便每个签名与预期 的身份
匹配。
验证
- 当企业合同验证容器镜像后,会打开所有企业合同验证和签名的详细报告。
其他资源
- 有关 Red Hat Trusted Artifact Signer 的更多信息,特别是它如何与 RHTAP 和企业合同一起使用,请参阅 Red Hat Trusted Artifact Signer Deployment。
- 有关 SLSA 的更多信息,请参阅 slsa.dev。
- 有关 Keycloak 的更多信息,请参阅 keycloak.org。
5.1. 验证 JSON 和 YAML 定义
当您考虑保护软件供应链的所有选项时,您可以选择将策略应用到任务或管道定义。例如,您可能希望使用企业合同来检查给定管道中执行哪些任务。您可能想要使一些管道任务强制执行,只允许执行某些任务,或者在任务和管道运行前强制执行的任何其他约定。
先决条件
-
您已安装了 Enterprise Contract CLI。有关安装说明,请参阅 安装企业合同 CLI 指南。您可以在
ec-cli
GitHub 仓库 中找到所需的文件。
流程
要验证企业合同 JSON 或 YAML 定义是否有效,请执行以下步骤:
-
在 Enterprise Contract CLI 中,输入
ec validate input
命令。