使用策略验证镜像签名

Alauda Security Service 允许你通过将容器镜像的签名与在平台中配置的可信签名者进行比对,来验证容器镜像的完整性。然后,你可以使用策略对未签名的镜像以及签名验证失败的镜像发出告警或进行阻止。

支持的签名验证方法

支持的签名验证方法包括:

  • Cosign 公钥
  • Cosign 证书
  • 使用 Rekor 进行透明日志验证
  • 无密钥验证

注意:

  • Alauda Security Service 支持使用 Cosign 公钥、Cosign 证书,或两者组合进行 Cosign 签名验证。
  • Alauda Security Service 支持与透明日志 Rekor 通信。
  • Alauda Security Service 支持无密钥验证。
  • 至少必须配置一种 Cosign 验证方法才能进行签名验证。
  • 对于所有已部署和已监视的镜像:
    • 每 4 小时获取并验证一次签名。
    • 每当你更新签名集成验证数据时,都会验证签名。

前提条件

配置签名集成

使用 Cosign 公钥

  1. 在 Alauda Security Service 门户中,进入 Platform Configuration > Integrations
  2. 滚动到 Signature Integrations,然后单击 Signature
  3. 单击 New integration
  4. 输入集成名称。
  5. 展开 Cosign public keys,然后单击 Add new public key
  6. 输入:
    • Public key name
    • Public key value,格式为 PEM
  7. (可选)根据需要添加更多公钥。
  8. 单击 Save

使用 Cosign 证书

  1. 在 Alauda Security Service 门户中,进入 Platform Configuration > Integrations
  2. 滚动到 Signature Integrations,然后单击 Signature
  3. 单击 New integration
  4. 输入集成名称。
  5. 展开 Cosign certificates,然后单击 Add new certificate verification
  6. 输入所需的身份匹配字段:
    • Certificate OIDC issuer
    • Certificate identity
  7. (可选)根据需要输入证书材料:
    • Certificate chain (PEM encoded)
    • Intermediate certificate (PEM encoded)
  8. (可选)启用 Enable certificate transparency log validation
  9. (可选)如果已启用透明日志验证,并且你需要针对特定的透明日志密钥进行验证,请提供 Certificate transparency log public key。如果留空,UI 会提示使用公共 Sigstore 实例密钥。
  10. (可选)根据需要添加更多证书验证。
  11. 单击 Save

配置透明日志验证

当前 UI 在专用的 Transparency log 部分公开签名透明日志设置。

  1. 在签名集成中,展开 Transparency log
  2. 选择 Enable transparency log validation
  3. Rekor URL 中,保留默认的公共 Rekor 实例,或提供你自己的 Rekor 服务 URL。
  4. (可选)如果希望证明验证避免回退到透明日志服务的在线确认,请选择 Validate in offline mode
  5. (可选)在 Rekor public key 中,提供 Rekor 透明日志的 PEM 编码公钥。如果留空,UI 会提示使用公共 Sigstore 实例密钥。
  6. 单击 Save

注意: 当签名包含由 Fulcio 签发的短期证书时,UI 会提示需要进行透明日志验证。

使用无密钥验证

无密钥验证通过基于证书的验证来支持。

要使用无密钥验证:

  1. 创建至少包含一个证书验证的签名集成。
  2. 配置与签名者匹配的 Certificate OIDC issuerCertificate identity 值。
  3. 如果你的环境需要,启用证书透明日志验证,并配置用于 Rekor 验证的 Transparency log 部分。
  4. 保存该集成,并在策略中引用它。

创建并强制执行镜像签名验证策略

前提条件

  • 必须已配置至少一个签名集成。
  • 若要在部署时强制执行策略,必须为目标集群启用 admission controller。

操作步骤

  1. 在 Alauda Security Service 门户中,进入 Platform Configuration > Policy Management
  2. 创建新策略或编辑现有自定义策略。
  3. 在策略流程中,打开 Rules 步骤。
  4. 向策略中添加 Not verified by trusted image signers 条件。
  5. 单击 Select
  6. 从已配置的签名集中选择一个或多个可信镜像签名者。
  7. 单击 Save
  8. Policy behavior 中,为匹配的镜像选择响应方式:
    • 仅使用告警,如果你希望在不阻止的情况下获得可见性
    • 使用部署时强制执行,如果你希望阻止未签名或未验证的镜像
  9. 保存策略。

要阻止使用未签名的镜像,请在集群配置中启用 Contact Image Scanners 功能。然后通过选择 Inform and enforce 来将策略配置为部署时强制执行。

使用 roxctl 验证镜像签名

要验证镜像完整性,请扫描包含 digest 的镜像:

roxctl image scan \
  --image=<registry>/<repository>/<image>@<digest>

查看输出中的签名验证数据。如果在签名集成中启用了透明日志验证,请确认输出还包含 Rekor bundle,其中包含已纳入透明日志的证明。


有关更多信息,请参阅官方 Cosign documentation