Amazon ECR 中的私有儲存庫政策範例 - Amazon ECR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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-1pull-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:SourceArnaws: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" } } } ] }