设置私有注册表权限声明
您可以使用以下步骤添加或更新注册表的权限策略。您可以为每个注册表添加多个策略声明。有关示例策略,请参阅 私有注册表策略示例。
私有注册表复制权限
跨账户策略类型被用于向 Amazon 主体授予权限,允许将存储库从源注册表复制到您的注册表。预设情况下,您有权在自己的注册表中配置跨区域复制。如果您授予其他账户将内容复制到注册表的权限,则只需配置注册表策略。
注册表策略必须授予 ecr:ReplicateImage API 操作权限。此 API 是一个内部 Amazon ECR API,可在区域或账户之间复制镜像。您还可以授予 ecr:CreateRepository 权限,该权限允许 Amazon ECR 在您的注册表中创建存储库 (如果存储库尚不存在)。如果未提供 ecr:CreateRepository 权限,则必须在注册表中手动创建与源存储库名称相同的存储库。如果两者均未完成,复制将失败。任何失败的 CreateRepository 或 ReplicateImage API 操作都会显示在 CloudTrail 中。
要为私有注册表配置复制权限策略 (Amazon Web Services Management Console)
打开位于 https://console.aws.amazon.com/ecr/
的 Amazon ECR 控制台。 -
从导航栏中,选择区域以配置注册表策略。
-
在导航窗格中,选择 Private registry(私有注册表)、Registry permissions(注册表权限)。
-
在 Registry permissions(注册表权限)页面上,选择 Generate statement(生成语句)。
-
使用策略生成器完成以下步骤以定义策略声明。
-
对于 Policy type(策略类型),选择 Cross account policy(跨账户策略)。
-
对于声明 ID,输入唯一的声明 ID。此字段在注册表策略上用作
Sid。 -
对于账户,输入要向其授予权限的每个账户的账户 ID。当指定多个账户 ID 时,请将它们以逗号分隔。
-
-
展开预览策略声明部分以查看注册表权限策略声明。
-
确认策略声明后,选择添加到策略以将策略保存到您的注册表。
为私有注册表配置权限策略 (Amazon CLI)
-
创建名为
registry_policy.json的文件并使用注册表策略填充它。{ "Version":"2012-10-17", "Statement":[ { "Sid":"ReplicationAccessCrossAccount", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::source_account_id:root" }, "Action":[ "ecr:CreateRepository", "ecr:ReplicateImage" ], "Resource": [ "arn:aws:ecr:us-west-2:your_account_id:repository/*" ] } ] } -
使用策略文件创建注册表策略。
aws ecr put-registry-policy \ --policy-text file://registry_policy.json\ --regionus-west-2 -
检索要确认的注册表策略。
aws ecr get-registry-policy \ --regionus-west-2
私有注册表缓存提取权限
Amazon ECR 私有注册表权限可用于限定各个 IAM 实体使用推送缓存的权限范围。如果 IAM policy 授予 IAM 实体的权限多于注册表权限策略授予的权限,则 IAM policy 优先。
要创建私有注册表的权限策略 (Amazon Web Services Management Console)
打开位于 https://console.aws.amazon.com/ecr/
的 Amazon ECR 控制台。 -
从导航栏中,选择您在其中配置私有注册表权限语句的区域。
-
在导航窗格中,选择 Private registry(私有注册表)、Registry permissions(注册表权限)。
-
在 Registry permissions(注册表权限)页面上,选择 Generate statement(生成语句)。
-
对于要创建的每个缓存提取权限策略语句,请执行以下操作。
-
对于 Policy type(策略类型),请选择 Pull through cache policy(推送缓存策略)。
-
对于 Statement id(语句 ID),为推送缓存语句策略提供名称。
-
对于 IAM entities(IAM 实体),指定要包含在策略中的用户、组或角色。
-
对于 Repository namespace(存储库命名空间),选择要与策略关联的推送缓存规则。
-
对于 Repository names(存储库名称),指定要应用规则的存储库基本名称。例如,如果您想在 Amazon ECR Public 上指定 Amazon Linux 存储库,存储库名称将为
amazonlinux。
-