本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECR 中的私有儲存庫政策範例
此頁面上的儲存庫政策範例旨在套用至 Amazon ECR 私有儲存庫。如果直接與 IAM 主體搭配使用,除非為了將 Amazon ECR 儲存庫指定為資源而進行修改,否則它們將無法正常運作。如需有關設定儲存庫政策的詳細資訊,請參閱 在 Amazon ECR 中設定私有儲存庫政策陳述式。
Amazon ECR 儲存庫政策是 IAM 政策的子集,其範圍和專門用於控制對單個 Amazon ECR 儲存庫的存取。IAM 政策通常用於套用整個 Amazon ECR 服務的許可,但也可用於控制對特定資源的存取。如需詳細資訊,請參閱儲存庫政策與 IAM 政策的比較。
以下儲存庫政策範例顯示您可以用來控制 Amazon ECR 私有儲存庫存取的許可陳述式。
範例:允許一或多個 使用者
以下儲存庫政策允許一個或多個 使用者向儲存庫推送和從儲存庫提取映像。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowPushPull",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/push-pull-user-1",
"arn:aws:iam::111122223333:user/push-pull-user-2"
]
},
"Action": [
"ecr:BatchGetImage",
"ecr:BatchCheckLayerAvailability",
"ecr:CompleteLayerUpload",
"ecr:GetDownloadUrlForLayer",
"ecr:InitiateLayerUpload",
"ecr:PutImage",
"ecr:UploadLayerPart"
],
"Resource": "*"
}
]
}
範例:允許其他帳戶
下列儲存庫政策允許特定帳戶推入映像。
您授予許可的帳戶必須啟用您正在建立儲存庫政策的區域,否則會發生錯誤。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowCrossAccountPush",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:CompleteLayerUpload",
"ecr:InitiateLayerUpload",
"ecr:PutImage",
"ecr:UploadLayerPart"
],
"Resource": "*"
}
]
}
下列儲存庫政策允許部分使用者提取映像 (pull-user-1 與 pull-user-2),同時提供其他使用者 (admin-user) 完整存取權限。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowPull",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/pull-user-1",
"arn:aws:iam::111122223333:user/pull-user-2"
]
},
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Resource": "*"
},
{
"Sid": "AllowAll",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/admin-user"
},
"Action": [
"ecr:*"
],
"Resource": "*"
}
]
}
範例:拒絕全部
下列儲存庫政策拒絕所有使用者擁有抽出映像的能力。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "DenyPull",
"Effect": "Deny",
"Principal": "*",
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Resource": "*"
}
]
}
範例:限制特定 IP 地址的存取
在套用來自特定地址範圍的儲存庫時,下列範例拒絕任何使用者執行任何 Amazon ECR 操作的許可。
此陳述式中的條件會識別允許之網際網路通訊協定第 4 版 (IPv4) IP 地址的 54.240.143.* 範圍。
Condition 區塊使用 NotIpAddress條件和 aws:SourceIp 條件金鑰,這是 AWS全局條件金鑰。如需有關這些條件索引鍵的詳細資訊,請參閱 AWS 全域條件內容索引鍵。aws:sourceIp IPv4 值會使用標準 CIDR 表示法。如需詳細資訊,請參閱《IAM 使用者指南》中的 IP 地址條件運算子。
- JSON
-
-
{
"Version":"2012-10-17",
"Id": "ECRPolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": "*",
"Action": "ecr:*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": "54.240.143.0/24"
}
}
}
]
}
範例:允許 AWS 服務
下列儲存庫政策允許 AWS CodeBuild 存取與該服務整合所需的 Amazon ECR API 動作。使用以下範例時,您應該使用 aws:SourceArn 和 aws:SourceAccount 條件索引鍵來調查可以承擔這些許可的資源。如需詳細資訊,請參閱《AWS CodeBuild 使用者指南》中的 CodeBuild 的 Amazon ECR 範例。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"CodeBuildAccess",
"Effect":"Allow",
"Principal":{
"Service":"codebuild.amazonaws.com"
},
"Action":[
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Resource": "*",
"Condition":{
"ArnLike":{
"aws:SourceArn":"arn:aws:codebuild:us-east-1:123456789012:project/project-name"
},
"StringEquals":{
"aws:SourceAccount":"123456789012"
}
}
}
]
}