将上游注册表与 Amazon ECR 私有注册表同步所需的 IAM 权限 - Amazon ECR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将上游注册表与 Amazon ECR 私有注册表同步所需的 IAM 权限

除了对私有注册表进行身份验证以及推送和提取映像时所需的 Amazon ECR API 权限之外,还需要以下其他权限才能有效使用缓存提取规则。

  • ecr:CreatePullThroughCacheRule – 授予创建拉取缓存规则的权限。此权限必须通过基于身份的 IAM policy 授予。

  • ecr:BatchImportUpstreamImage – 授权检索外部镜像并将其导入到您的私有注册表。可以通过使用私有注册表权限策略、基于身份的 IAM policy 或通过使用基于资源的存储库权限策略授予此权限。有关使用存储库权限的更多信息,请参阅 Amazon ECR 中的私有存储库政策

  • ecr:CreateRepository – 授予在私有注册表中创建存储库的权限。如果存储缓存图像的存储库不存在,则需要此权限。可以通过基于身份的 IAM policy 或私有注册表权限策略授予此权限。

  • ecr:TagResource – 授权将元数据标签添加到 Amazon RDS 资源。仅当以下情况时需要此权限:您提取的映像采用缓存提取规则,该规则具有关联的存储库创建模板,而该模板配置为向存储库添加资源标签。此权限必须通过基于身份的 IAM policy 授予。

使用注册表权限

Amazon ECR 私有注册表权限可用于限定各个 IAM 实体使用缓存提取的权限范围。如果 IAM policy 授予 IAM 实体的权限多于注册表权限策略授予的权限,则 IAM policy 优先。例如,如果用户已授予 ecr:* 权限,则无需额外的注册表级别权限。

  1. 打开 Amazon ECR 控制台:https://console.aws.amazon.com/ecr/

  2. 从导航栏中,选择您在其中配置私有注册表权限语句的区域。

  3. 在导航窗格中,选择 Private registry(私有注册表)、Registry permissions(注册表权限)。

  4. Registry permissions(注册表权限)页面上,选择 Generate statement(生成语句)。

  5. 对于要创建的每个缓存提取权限策略语句,请执行以下操作。

    1. 对于 Policy type(策略类型),请选择 Pull through cache policy(推送缓存策略)。

    2. 对于 Statement id(语句 ID),为推送缓存语句策略提供名称。

    3. 对于 IAM entities(IAM 实体),指定要包含在策略中的用户、组或角色。

    4. 对于 Repository namespace(存储库命名空间),选择要与策略关联的推送缓存规则。

    5. 对于 Repository names(存储库名称),指定要应用规则的存储库基本名称。例如,如果您想在 Amazon ECR Public 上指定 Amazon Linux 存储库,存储库名称将为 amazonlinux

使用以下 Amazon CLI 命令通过指定私有注册表权限 Amazon CLI。

  1. 创建名为 ptc-registry-policy.json 的本地文件,其中包含注册表策略的内容。以下示例授予创建存储库并从 Amazon ECR Public 中拉取镜像的 ecr-pull-through-cache-user 权限,Amazon ECR Public 是与之前创建的拉取缓存规则相关联的上游源。

    { "Sid": "PullThroughCacheFromReadOnlyRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ecr-pull-through-cache-user" }, "Action": [ "ecr:CreateRepository", "ecr:BatchImportUpstreamImage" ], "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/ecr-public/*" }
    重要

    仅当存储缓存镜像的存储库不存在时才需要 ecr-CreateRepository 权限。例如,如果存储库创建操作和镜像拉取操作是由单独的 IAM 主体(例如管理员和开发人员)完成。

  2. 使用 put-registry-policy 命令设置注册表策略。

    aws ecr put-registry-policy \ --policy-text file://ptc-registry.policy.json

后续步骤

准备好开始使用缓存提取规则后,请执行以下后续步骤。