对存储在 Amazon ECR 私有存储库中的映像进行签名
Amazon ECR 与 Amazon Signer 集成,为您提供了一种对容器镜像进行签名的方式。您可以将容器镜像和签名存储在私有存储库中。
注意事项
使用 Amazon ECR 镜像签名时应注意以下事项。
-
存储库中存储的签名计入每个存储库的最大镜像数量的服务限额。有关更多信息,请参阅 Amazon ECR 服务配额。
-
当存储库中存在引用构件时,Amazon ECR 生命周期策略将在主题映像删除后的 24 小时内自动清理这些构件。
先决条件
在您开始之前,必须满足以下先决条件。
-
安装并配置最新版本的 Amazon CLI。有关更多信息,请参阅《Amazon Command Line Interface 用户指南》中的安装或更新最新版本的 Amazon CLI。
-
安装 Notation CLI 和 Notation 的 Amazon Signer 插件。有关更多信息,请参阅《Amazon Signer 开发人员指南》中的对容器镜像进行签名的先决条件。
-
签署存储在 Amazon ECR 私有存储库中的容器镜像。有关更多信息,请参阅 将映像推送至 Amazon ECR 私有存储库。
为 Notary 客户端配置身份验证
在使用 Notafication CLI 创建签名之前,必须先配置客户端,使其能够向 Amazon ECR 进行身份验证。如果您在安装 Notation 客户端的同一主机上安装了 Docker,那么 Notation 将重用您为 Docker 客户端使用的相同身份验证方法。Docker login
和 logout
命令将允许 Notation sign
和 verify
命令使用相同的凭证,并且您不必单独对 Notation 进行身份验证。有关配置 Notation 客户端进行身份验证的详细信息,请参阅 Notary Project 文档中的 Authenticate with OCI-compliant registries
如果您没有使用 Docker 或其他使用 Docker 凭证的工具,那么我们建议使用 Amazon ECR Docker 凭证助手作为您的凭证存储。有关如何安装和配置 Amazon ECR 凭证助手的更多信息,请参阅 Amazon ECR Docker 凭证助手
签署镜像
可以使用以下步骤创建签署容器镜像所需的资源,并将签名存储到 Amazon ECR 私有存储库中。Notation 使用摘要对镜像进行签名。
要签署映像
-
使用
Notation-OCI-SHA384-ECDSA
签名平台创建 Amazon Signer 签名配置文件。您可以选择性地使用--signature-validity-period
参数指定签名有效期。可以使用DAYS
、MONTHS
或YEARS
指定此值。如果未指定有效期,则使用默认值 135 个月。aws signer put-signing-profile --profile-name
ecr_signing_profile
--platform-id Notation-OCI-SHA384-ECDSA注意
签名配置文件名称仅支持字母数字字符和下划线(
_
)。 -
根据您的默认注册表进行 Notation 客户端身份验证。以下示例使用 Amazon CLI 根据 Amazon ECR 私有注册表对 Notation CLI 进行身份验证。
aws ecr get-login-password --region
region
| notation login --username AWS --password-stdin111122223333
.dkr.ecr.region
.amazonaws.com -
使用 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。