Skip to content

核实 Argo CD 文物

先决条件


发布资产

Asset Description
argocd-darwin-amd64 CLI Binary
argocd-darwin-arm64 CLI Binary
argocd-linux_amd64 CLI Binary
argocd-linux_arm64 CLI Binary
argocd-linux_ppc64le CLI Binary
argocd-linux_s390x CLI Binary
argocd-windows_amd64 CLI Binary
argocd-cli.intoto.jsonl Attestation of CLI binaries
cli_checksums.txt Checksums of binaries
sbom.tar.gz Sbom
sbom.tar.gz.pem Certificate used to sign sbom
sbom.tar.gz.sig Signature of sbom

核实容器镜像

Argo CD 镜像由 cosign使用基于身份("无密钥")的签名和透明度进行签名。执行以下命令可用于验证容器镜像的签名:

cosign verify \
--certificate-identity-regexp https://github.com/argoproj/argo-cd/.github/workflows/image-reuse.yaml@refs/tags/v \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
quay.io/argoproj/argocd:v2.7.0 | jq

如果正确验证了容器镜像,命令应输出如下内容:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - Existence of the claims in the transparency log was verified offline
  - Any certificates were verified against the Fulcio roots.
[
  {
    "critical": {
      "identity": {
        "docker-reference": "quay.io/argoproj/argo-cd"
      },
      "image": {
        "docker-manifest-digest": "sha256:63dc60481b1b2abf271e1f2b866be8a92962b0e53aaa728902caa8ac8d235277"
      },
      "type": "cosign container image signature"
    },
    "optional": {
      "1.3.6.1.4.1.57264.1.1": "https://token.actions.githubusercontent.com",
      "1.3.6.1.4.1.57264.1.2": "push",
      "1.3.6.1.4.1.57264.1.3": "a6ec84da0eaa519cbd91a8f016cf4050c03323b2",
      "1.3.6.1.4.1.57264.1.4": "Publish ArgoCD Release",
      "1.3.6.1.4.1.57264.1.5": "argoproj/argo-cd",
      "1.3.6.1.4.1.57264.1.6": "refs/tags/<version>",
      ...

使用 SLSA 证书验证容器镜像

使用 slsa-github-generator 生成SLSA 3 级出处。

以下命令将验证证明的签名和签发方式。 它将包含有效载荷类型、有效载荷和签名。

根据 slsa-verifier 文档,运行以下命令:

# Get the immutable container image to prevent TOCTOU attacks https://github.com/slsa-framework/slsa-verifier#toctou-attacks
IMAGE=quay.io/argoproj/argocd:v2.7.0
IMAGE="${IMAGE}@"$(crane digest "${IMAGE}")
# Verify provenance, including the tag to prevent rollback attacks.
slsa-verifier verify-image "$IMAGE" \
    --source-uri github.com/argoproj/argo-cd \
    --source-tag v2.7.0

如果只想验证源码库标记的主版本或次版本(而不是完整标记),请使用"--source-versionioned-tag",它可以执行语义版本验证:

slsa-verifier verify-image "$IMAGE" \
    --source-uri github.com/argoproj/argo-cd \
    --source-versioned-tag v2 # Note: May use v2.7 for minor version verification.

验证有效载荷包含不可伪造的出处,该出处已进行 base64 编码,可通过在上述命令中传递 --print-provenance 选项来查看:

slsa-verifier verify-image "$IMAGE" \
    --source-uri github.com/argoproj/argo-cd \
    --source-tag v2.7.0 \
    --print-provenance | jq

如果您更喜欢使用联署,请遵循以下 说明

提示 cosignslsa-verifier 都可以被引用来验证镜像证明。 详细说明请查阅每个二进制文件的文档。


利用 SLSA 证明验证 CLI 工件

提供了每个发布版本的单个证明 (argocd-cli.intoto.jsonl)。可与 slsa-verifier 一起使用,以验证 CLI 二进制文件是使用 GitHub 上的 Argo CD 工作流生成的,并确保其经过加密签名。

slsa-verifier verify-artifact argocd-linux-amd64 \
  --provenance-path argocd-cli.intoto.jsonl \
  --source-uri github.com/argoproj/argo-cd \
  --source-tag v2.7.0

如果只想验证源码库标记的主版本或次版本(而不是完整标记),请使用"--source-versionioned-tag",它可以执行语义版本验证:

slsa-verifier verify-artifact argocd-linux-amd64 \
  --provenance-path argocd-cli.intoto.jsonl \
  --source-uri github.com/argoproj/argo-cd \
  --source-versioned-tag v2 # Note: May use v2.7 for minor version verification.

有效载荷是不可伪造的证明,经过 base64 编码,可以通过在上述命令中传递 --print-provenance 选项来查看:

slsa-verifier verify-artifact argocd-linux-amd64 \
  --provenance-path argocd-cli.intoto.jsonl \
  --source-uri github.com/argoproj/argo-cd \
  --source-tag v2.7.0 \
  --print-provenance | jq

验证 Sbom

每个版本的单个证明(argocd-sbom.intoto.jsonl)与 sbom (sbom.tar.gz)一起发布。这可以与 slsa-verifier 一起使用,以验证 SBOM 是使用 GitHub 上的 Argo CD 工作流生成的,并确保其经过加密签名。

slsa-verifier verify-artifact sbom.tar.gz \
  --provenance-path argocd-sbom.intoto.jsonl \
  --source-uri github.com/argoproj/argo-cd \
  --source-tag v2.7.0

验证 Kubernetes

政策控制器

请注意,我们鼓励所有用户在部署到 Kubernetes 集群之前,通过您选择的接入/策略控制器验证签名和出处。 这样做可以验证镜像是由我们构建的。

Cosign 签名和 SLSA 出处与多种类型的准入控制器兼容。有关支持的控制器,请参阅 cosign 文档slsa-github-generator