프라이빗 리포지토리 정책 예제
다음 예제는 권한이 있는 사용자가 Amazon ECR 리포지토리에 대해 갖는 권한을 제어하는 데 사용할 수 있는 정책 설명을 보여줍니다.
중요
Amazon ECR의 요구 사항에 따라 사용자가 레지스트리에 대해 인증하고 Amazon ECR 리포지토리에서 이미지를 푸시 또는 풀하기 전에 IAM 정책을 통해 ecr:GetAuthorizationToken
API에 호출을 할 권한이 있어야 합니다. 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" ] } ] }
다음 리포지토리 정책은 다른 사용자에게 전체 액세스 권한을 제공하면서(admin-user
) 일부 사용자가 이미지를 가져오도록 허용합니다(pull-user-1
and pull-user-2
).
참고
현재 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 작업을 수행할 수 있는 권한을 부여하지 않습니다.
이 문의 조건은 허용되는 IPv4(인터넷 프로토콜 버전 4) IP 주소의 54.240.143.*
범위를 식별합니다.
Condition
블록은 AWS 전체 조건 키인 NotIpAddress
및 aws:SourceIp
조건 키를 사용합니다. 이 조건 키에 대한 자세한 내용은 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
" } } } ] }