存储库策略示例 - Amazon ECR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

存储库策略示例

以下示例显示了您可用于控制通过身份验证的用户对 Amazon ECR 存储库的权限的策略声明。

重要

Amazon ECR 要求用户有权调用ecr:GetAuthorizationTokenAPI,然后才能对镜像仓库进行身份验证并对任意 Amazon ECR 存储库推送或提取任意镜像。Amazon ECR 提供多个托管 IAM 策略来控制不同级别下的用户访问权限;有关更多信息,请参阅。Amazon Elastic Container Registry 基于身份的策略示例.

例如:允许一个或多个 IAM 用户

以下存储库策略允许一个或多个 IAM 用户向存储库推送和拉取镜像。

{ "Version": "2008-10-17", "Statement": [ { "Sid": "AllowPushPull", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id:user/push-pull-user-1", "arn:aws:iam::account-id:user/push-pull-user-2" ] }, "Action": [ "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability", "ecr:CompleteLayerUpload", "ecr:GetDownloadUrlForLayer", "ecr:InitiateLayerUpload", "ecr:PutImage", "ecr:UploadLayerPart" ] } ] }

例如:允许其他帐户

以下存储库策略允许特定账户推送映像。

重要

您授予权限的帐户必须启用您正在创建存储库策略的区域,否则将发生错误。

{ "Version": "2008-10-17", "Statement": [ { "Sid": "AllowCrossAccountPush", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:root" }, "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:CompleteLayerUpload", "ecr:InitiateLayerUpload", "ecr:PutImage", "ecr:UploadLayerPart" ] } ] }

以下存储库策略允许某些 IAM 用户拉取镜像 (拉取用户 1拉取用户 2),同时提供对另一个(管理员用户名称)。

注意

对于 Amazon Web Services Management Console 中当前不支持的较复杂的存储库策略,您可以使用 set-repository-policy Amazon CLI 命令应用此策略。

{ "Version": "2008-10-17", "Statement": [ { "Sid": "AllowPull", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id:user/pull-user-1", "arn:aws:iam::account-id:user/pull-user-2" ] }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] }, { "Sid": "AllowAll", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:user/admin-user" }, "Action": [ "ecr:*" ] } ] }

例如:允许 IAM 组中的所有用户提取映像

以下存储库策略允许 IAM 组中的所有用户拉取镜像。有关 IAM 组的更多信息,请参阅IAM 用户组中的IAM 用户指南.

{ "Version": "2008-10-17", "Statement": [ { "Sid": "AllowPull", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:group/group-name" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }

例如:拒绝所有

以下存储库策略拒绝所有账户中的所有用户拉取镜像。

{ "Version": "2008-10-17", "Statement": [ { "Sid": "DenyPull", "Effect": "Deny", "Principal": "*", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }

例如:限制对特定 IP 地址的访问

以下示例向任何用户授予在应用于存储库时执行 Amazon ECR 操作的权限。但是,请求必须来自条件中指定的 IP 地址范围。

此语句中的条件确定允许的 Internet 协议版本 4 (IPv4) IP 地址范围为 54.240.143.*,只有一个例外:54.240.143.188

Condition 块使用 IpAddressNotIpAddress 条件以及 aws:SourceIp 条件键(这是 Amazon 范围的条件键)。有关这些条件键的更多信息,请参阅 Amazon 全局条件上下文键aws:sourceIp IPv4 值使用标准 CIDR 表示法。有关更多信息,请参阅《IAM 用户指南》中的 IP 地址条件运算符

{ "Version": "2012-10-17", "Id": "ECRPolicyId1", "Statement": [ { "Sid": "IPAllow", "Effect": "Allow", "Principal": "*", "Action": "ecr:*", "Condition": { "NotIpAddress": { "aws:SourceIp": "54.240.143.188/32" }, "IpAddress": { "aws:SourceIp": "54.240.143.0/24" } } } ] }

例如:允许一个Amazon服务

以下存储库策略允许Amazon CodeBuild访问与该服务集成所需的 Amazon ECR API 操作。有关更多信息,请参阅 。用于 CodeBuild 的亚马逊 ECR 示例中的Amazon CodeBuild用户指南.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "CodeBuildAccess", "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] }] }