ECR 교차 계정 풀 권한

ECR 교차 계정 풀 권한

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

관련 정보