对存储在 Amazon ECR 私有存储库中的映像进行签名 - Amazon ECR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

对存储在 Amazon ECR 私有存储库中的映像进行签名

Amazon ECR 与 Amazon Signer 集成,为您提供了一种对容器镜像进行签名的方式。您可以将容器镜像和签名存储在私有存储库中。

注意事项

使用 Amazon ECR 镜像签名时应注意以下事项。

  • 存储库中存储的签名计入每个存储库的最大镜像数量的服务限额。有关更多信息,请参阅 Amazon ECR 服务配额

  • 当存储库中存在引用构件时,Amazon ECR 生命周期策略将在主题映像删除后的 24 小时内自动清理这些构件。

先决条件

在您开始之前,必须满足以下先决条件。

为 Notary 客户端配置身份验证

在使用 Notafication CLI 创建签名之前,必须先配置客户端,使其能够向 Amazon ECR 进行身份验证。如果您在安装 Notation 客户端的同一主机上安装了 Docker,那么 Notation 将重用您为 Docker 客户端使用的相同身份验证方法。Docker loginlogout 命令将允许 Notation signverify 命令使用相同的凭证,并且您不必单独对 Notation 进行身份验证。有关配置 Notation 客户端进行身份验证的详细信息,请参阅 Notary Project 文档中的 Authenticate with OCI-compliant registries

如果您没有使用 Docker 或其他使用 Docker 凭证的工具,那么我们建议使用 Amazon ECR Docker 凭证助手作为您的凭证存储。有关如何安装和配置 Amazon ECR 凭证助手的更多信息,请参阅 Amazon ECR Docker 凭证助手

签署镜像

可以使用以下步骤创建签署容器镜像所需的资源,并将签名存储到 Amazon ECR 私有存储库中。Notation 使用摘要对镜像进行签名。

要签署映像
  1. 使用 Notation-OCI-SHA384-ECDSA 签名平台创建 Amazon Signer 签名配置文件。您可以选择性地使用 --signature-validity-period 参数指定签名有效期。可以使用 DAYSMONTHSYEARS 指定此值。如果未指定有效期,则使用默认值 135 个月。

    aws signer put-signing-profile --profile-name ecr_signing_profile --platform-id Notation-OCI-SHA384-ECDSA
    注意

    签名配置文件名称仅支持字母数字字符和下划线(_)。

  2. 根据您的默认注册表进行 Notation 客户端身份验证。以下示例使用 Amazon CLI 根据 Amazon ECR 私有注册表对 Notation CLI 进行身份验证。

    aws ecr get-login-password --region region | notation login --username AWS --password-stdin 111122223333.dkr.ecr.region.amazonaws.com
  3. 使用 Notation CLI 对映像进行签名,并且使用存储库名称和 SHA 摘要指定映像。这将创建签名并将其推送到正在签名的镜像所在的 Amazon ECR 私有存储库。

    在以下示例中,我们正在对curl带 SHA 摘要的存储库sha256:ca78e5f730f9a789ef8c63bb55275ac12dfb9e8099e6EXAMPLE中的映像进行签名。

    notation sign 111122223333.dkr.ecr.region.amazonaws.com/curl@sha256:ca78e5f730f9a789ef8c63bb55275ac12dfb9e8099e6EXAMPLE --plugin "com.amazonaws.signer.notation.plugin" --id "arn:aws:signer:region:111122223333:/signing-profiles/ecrSigningProfileName"

后续步骤

对容器映像进行签名后,可以在本地验证签名。有关验证映像的说明,请参阅 Amazon Signer Developer Guide 中的 Verify an image locally after signing