Permissões de pull entre contas do ECR

Permissões de pull entre contas do ECR

Temos duas contas AWS. A conta A possui repositórios ECR e a conta B deve ser capaz de extrair deles.

Tentei definir as declarações de permissão do repositório na Conta A para permitir a extração da Conta B, mas a AWS afirma que minha política não é válida.

Eu tentei:

  • Definir o principal como o número da conta B. Isso resulta no erroYour permission statements have one or more invalid parameters. Invalid parameter at 'PolicyText' failed to satisfy constraint: 'Invalid repository policy provided'
  • Definir o principal como o ARN do usuário root na conta B ( arn:aws:iam::1234567891011:root). Isso resulta no erroThe service name arn:aws:iam::1234567891011:root is invalid. A valid service name format is [service].amazonaws.com.
  • Definir o principal para o ARN de um usuário IAM na conta B. Mesmo erro acima.

O procedimento acima foi feito por meio do console AWS, que não permite a edição do JSON diretamente para permissões ECR. Tentei o comando CLI aws ecr set-repository-policycom as alterações acima, mas os mesmos erros foram retornados no terminal.

Adicionando permissões para usuários do IAM dentroo mesmoconta funciona perfeitamente.

As ações que tentei adicionar na política são:

        "Action": [
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetRepositoryPolicy",
            "ecr:ListImages",
            "ecr:DescribeRepositories"
        ]

Alguma idéia do que posso estar fazendo de errado?

Responder1

Você também precisa configurar permissões no ECR para acesso entre contas. Para conceder acesso pull ao ECR da Conta A para a Conta B, coloque a seguinte política JSON na guia Permissões do ECR.

{
    "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"
        ]
      }
    ]
  }

insira a descrição da imagem aqui

Responder2

Você precisa configurar uma função entre contas para a conta b assumir.

Crie a função de conta cruzada na conta que possui o Registro, A, para dar acesso ao registro na função. E dê à Conta B as permissões para assumir essa função.

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

informação relacionada