![ECR 교차 계정 풀 권한](https://rvso.com/image/717731/ECR%20%EA%B5%90%EC%B0%A8%20%EA%B3%84%EC%A0%95%20%ED%92%80%20%EA%B6%8C%ED%95%9C.png)
AWS 계정이 두 개 있습니다. 계정 A에는 ECR 리포지토리가 있고 계정 B는 이 저장소에서 가져올 수 있습니다.
계정 B에서 가져올 수 있도록 계정 A의 리포지토리 권한 설명을 설정하려고 시도했지만 AWS에서는 내 정책이 유효하지 않다고 주장합니다.
나는 시도했다:
- 주체를 계정 B의 계좌 번호로 설정하면 오류가 발생합니다.
Your permission statements have one or more invalid parameters. Invalid parameter at 'PolicyText' failed to satisfy constraint: 'Invalid repository policy provided'
- 보안 주체를 계정 B( )의 루트 사용자 ARN으로 설정합니다
arn:aws:iam::1234567891011:root
. 이로 인해 오류가 발생합니다.The service name arn:aws:iam::1234567891011:root is invalid. A valid service name format is [service].amazonaws.com.
- 계정 B에 있는 IAM 사용자의 ARN으로 보안 주체를 설정합니다. 위와 동일한 오류입니다.
위 작업은 ECR 권한에 대한 JSON 직접 편집을 허용하지 않는 AWS 콘솔을 통해 수행되었습니다. 위의 변경 사항을 적용하여 CLI 명령을 시도했지만 aws ecr set-repository-policy
터미널에 동일한 오류가 반환되었습니다.
IAM 사용자에 대한 권한 추가똑같다계정은 잘 작동합니다.
정책에 따라 추가하려고 시도한 작업은 다음과 같습니다.
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:ListImages",
"ecr:DescribeRepositories"
]
내가 뭘 잘못하고 있는지 어떤 아이디어가 있습니까?
답변1
또한 교차 계정 액세스를 위해 ECR에서 권한을 구성해야 합니다. 계정 A의 ECR에 대한 풀 액세스 권한을 계정 B에 부여하려면 ECR 권한 탭에 다음 JSON 정책을 추가합니다.
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowCrossAccountPull",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::aws_account_b_number:root"
},
"Action": [
"ecr:GetDownloadUrlForLayer",
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage"
]
}
]
}
답변2
계정 b가 맡을 교차 계정 역할을 설정해야 합니다.
레지스트리 A가 있는 계정에서 교차 계정 역할을 생성하고 해당 역할의 레지스트리에 대한 액세스 권한을 부여합니다. 그리고 계정 B에 해당 역할을 맡을 수 있는 권한을 부여합니다.
http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html
http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html