Amazon ECR
用户指南 (API 版本 2015-09-21)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon ECR 存储库策略示例

以下示例显示了可用于控制用户对 Amazon ECR 存储库的权限的策略声明。

重要

Amazon ECR 用户需要先获得调用 ecr:GetAuthorizationToken 的权限,然后才能对注册表进行身份验证,并从任何 Amazon ECR 存储库推送或提取任何映像。Amazon ECR 提供一些托管策略来控制不同级别下的用户访问,有关更多信息,请参阅 Amazon ECR 托管策略

示例:允许所有 AWS 账户提取映像

以下存储库策略允许所有 AWS 账户拉取映像。

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

示例:允许您账户中的特定 IAM 用户

以下存储库策略允许您的账户中的 IAM 用户推送和拉取映像。

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

示例:允许其他账户

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

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

以下存储库策略允许部分 IAM 用户拉取映像(pull-user-1pull-user-2),并为其他用户提供完全的访问权限 (admin-user)。

注意

对于 AWS 管理控制台 中当前不支持的较复杂的存储库策略,您可以使用 set-repository-policy AWS CLI 命令应用此策略。

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

示例:拒绝所有

以下存储库策略拒绝所有用户拉取映像。

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

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

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

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

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

{ "Version": "2012-10-17", "Id": "ECRPolicyId1", "Statement": [ { "Sid": "IPAllow", "Effect": "Allow", "Principal": "*", "Action": "ecr:*", "Resource": "arn:aws-cn:ecr:us-east-1:123456789012:repository/my-repo", "Condition": { "NotIpAddress": { "aws:SourceIp": "54.240.143.188/32" }, "IpAddress": { "aws:SourceIp": "54.240.143.0/24" } } } ] }

示例:服务相关角色

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

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