本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECR 中的私有儲存庫政策範例
重要
此頁面上的儲存庫政策範例旨在套用至 Amazon ECR 私有儲存庫。如果直接與 IAM 主體搭配使用,除非為了將 Amazon ECR 儲存庫指定為資源而進行修改,否則它們將無法正常運作。如需有關設定儲存庫政策的詳細資訊,請參閱 在 Amazon ECR 中設定私有儲存庫政策聲明。
Amazon ECR 儲存庫政策是 IAM 政策的子集,其範圍和專門用於控制對單個 Amazon ECR 儲存庫的存取。IAM 政策通常用於套用整個 Amazon ECR 服務的許可,但也可用於控制對特定資源的存取。如需詳細資訊,請參閱 儲存庫政策與 IAM 政策的比較。
以下儲存庫政策範例顯示您可以用來控制 Amazon ECR 私有儲存庫存取的許可陳述式。
重要
Amazon ECR 要求使用者擁有透過 IAM 政策呼叫 ecr:GetAuthorizationToken
API 的許可,然後才能對登錄檔進行身分驗證,並從任何 Amazon ECR 儲存庫推送或提取任何映像。Amazon ECR 提供數個受管 IAM 政策來控制各種層級的使用者存取;如需詳細資訊,請參閱 Amazon Elastic Container Registry 身分型政策的範例。
範例:允許一或多個 使用者
以下儲存庫政策允許一個或多個 使用者向儲存庫推送和從儲存庫提取映像。
{ "Version": "2012-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": "2012-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" ] } ] }
下列儲存庫政策允許部分使用者提取映像 (pull-user-1
與 pull-user-2
),同時提供其他使用者 (admin-user
) 完整存取權限。
注意
對於目前不支援的更複雜的儲存庫原則 AWS Management Console,您可以使用set-repository-policy AWS CLI 命令套用原則。
{ "Version": "2012-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:*" ] } ] }
範例:拒絕全部
下列儲存庫政策拒絕所有使用者擁有抽出映像的能力。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyPull", "Effect": "Deny", "Principal": "*", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }
範例:限制特定 IP 地址的存取
在套用來自特定地址範圍的儲存庫時,下列範例拒絕任何使用者執行任何 Amazon ECR 操作的許可。
此陳述式中的條件會識別允許之網際網路通訊協定第 4 版 (IPv4) IP 地址的 54.240.143.*
範圍。
該Condition
塊使用NotIpAddress
條件和條aws:SourceIp
件鍵,這是一個 AWS寬的條件鍵。如需有關這些條件索引鍵的詳細資訊,請參閱 AWS 全域條件內容索引鍵。aws:sourceIp
IPv4 值會使用標準 CIDR 表示法。如需詳細資訊,請參閱《IAM 使用者指南》中的 IP 地址條件運算子。
{ "Version": "2012-10-17", "Id": "
ECRPolicyId1
", "Statement": [ { "Sid": "IPAllow
", "Effect": "Deny", "Principal": "*", "Action": "ecr:*", "Condition": { "NotIpAddress": { "aws:SourceIp": "54.240.143.0/24
" } } } ] }
範例:允許 AWS 服務
下列儲存庫政策允許 AWS CodeBuild 存取與該服務整合所需的 Amazon ECR API 動作。使用以下範例時,您應該使用 aws:SourceArn
和 aws:SourceAccount
條件索引鍵來調查可以承擔這些許可的資源。如需詳細資訊,請參閱AWS CodeBuild 使用者指南 CodeBuild中的 Amazon ECR 範例。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"CodeBuildAccess", "Effect":"Allow", "Principal":{ "Service":"codebuild.amazonaws.com" }, "Action":[ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Condition":{ "ArnLike":{ "aws:SourceArn":"arn:aws:codebuild:
region
:123456789012
:project/project-name
" }, "StringEquals":{ "aws:SourceAccount":"123456789012
" } } } ] }