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

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

存储库策略示例

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

重要

Amazon ECR 要求用户先通过 IAM 策略允许对 ecr:GetAuthorizationToken API 的权限,然后才能对镜像仓库进行身份验证并对任意 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: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::account-id:root" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchCheckLayerAvailability", "ecr:PutImage", "ecr:InitiateLayerUpload", "ecr:UploadLayerPart", "ecr:CompleteLayerUpload" ] } ] }

以下存储库策略允许某些 IAM 用户可以拉动图像(pull-user-1 $and pull-user-2),同时提供对另一个(admin-user).

注意

对于 AWS 管理控制台 中当前不支持的较复杂的存储库策略,您可以使用 set-repository-policy AWS 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:GetDownloadUrlForLayer", "ecr:BatchGetImage" ] }, { "Sid": "AllowAll", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:user/admin-user" }, "Action": [ "ecr:*" ] } ] }

示例:允许全部 AWS 要拉动图像的帐户

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

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

示例:拒绝全部

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

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

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

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

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

TheThethe Condition Block使用 IpAddressNotIpAddress 条件和 aws:SourceIp 条件键,这是 AWS-widecondition键。有关这些条件密钥的详细信息,请参阅 AWS 全局条件上下文关键字. TheThetheaws:sourceIp Ipv4值使用标准CIDR标记。有关详细信息,请参阅 IP地址条件操作符IAM 用户指南.

{ "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" } } } ] }

示例:服务相关角色

以下存储库策略允许 AWS CodeBuild 访问 Amazon ECR 与该服务集成所需的API操作。有关详细信息,请参阅 Amazon ECR 样本 CodeBuildAWS CodeBuild 用户指南.

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