교차 계정 ECR to ECR PTC를 위한 권한 설정하기
교차 계정 ECR to ECR PTC를 위한 권한 설정하기 (Setting up permissions for cross-account ECR to ECR PTC)
Amazon ECR to Amazon ECR(ECR to ECR) 풀 스루 캐시 기능은 리전, AWS 계정, 또는 둘 다 사이에서 이미지를 자동으로 동기화해요. 기본 레지스트리에 이미지를 푸시하고 다운스트림 레지스트리에서 이미지를 캐시하도록 풀 스루 캐시 규칙을 구성할 수 있어요.
출처: 문서
본문
교차 계정 ECR to ECR 풀 스루 캐시에 필요한 IAM 정책 (IAM policies required for cross-account ECR to ECR pull through cache)
서로 다른 AWS 계정의 Amazon ECR 레지스트리 사이에서 이미지를 캐시하려면 다운스트림 계정에 IAM 역할을 만들고 이 섹션의 정책을 구성해 다음 권한을 제공해야 해요.
- Amazon ECR은 사용자를 대신해 업스트림 Amazon ECR 레지스트리에서 이미지를 풀할 권한이 필요해요. IAM 역할을 만들고 풀 스루 캐시 규칙에 지정해 이 권한을 부여할 수 있어요.
- 업스트림 레지스트리 소유자는 캐시 레지스트리 소유자에게 리소스 정책에서 이미지를 풀할 수 있는 권한을 부여해야 해요.
정책 구성은 IAM 역할 생성(풀 스루 캐시 권한 정의), IAM 역할의 신뢰 정책 생성, 업스트림 Amazon ECR 레지스트리의 리소스 정책 생성으로 나뉘어요.
풀 스루 캐시 권한을 정의하는 IAM 역할 생성하기 (Creating an IAM role to define the pull through cache permissions)
다음 예제는 IAM 역할에 사용자를 대신해 업스트림 Amazon ECR 레지스트리에서 이미지를 풀할 권한을 부여하는 권한 정책을 보여줘요. Amazon ECR이 역할을 수임하면 이 정책에 지정된 권한을 받아요.
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ecr:GetDownloadUrlForLayer",
"ecr:GetAuthorizationToken",
"ecr:BatchImportUpstreamImage",
"ecr:BatchGetImage",
"ecr:GetImageCopyStatus",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload",
"ecr:PutImage"
],
"Resource": "*"
}
]
}
IAM 역할의 신뢰 정책 생성하기 (Creating a Trust policy for the IAM role)
다음 예제는 Amazon ECR 풀 스루 캐시를 역할을 수임할 수 있는 AWS 서비스 프린시펄로 식별하는 신뢰 정책을 보여줘요.
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "pullthroughcache.ecr.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
업스트림 Amazon ECR 레지스트리에 리소스 정책 생성하기 (Creating a resource policy in the upstream Amazon ECR registry)
업스트림 Amazon ECR 레지스트리 소유자는 다운스트림 레지스트리 소유자에게 다음 액션을 수행할 권한을 부여하기 위해 레지스트리 정책이나 레포지토리 정책도 추가해야 해요.
참고: 다음 리소스 정책은 교차 계정 ECR to ECR 풀 스루 캐시 구성에서만 필요해요. 동일 계정, 교차 리전 풀 스루 캐시의 경우 이전 섹션에서 본 IAM 역할 정책과 신뢰 정책만 있으면 돼요. 업스트림과 다운스트림 레지스트리가 같은 AWS 계정에 있으면 루트 계정 프린시펄 권한은 필요하지 않아요.
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::444455556666:root"
},
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchImportUpstreamImage",
"ecr:GetImageCopyStatus"
],
"Resource": "arn:aws:ecr:region:111122223333:repository/*"
}