![Permissões de pull entre contas do ECR](https://rvso.com/image/717731/Permiss%C3%B5es%20de%20pull%20entre%20contas%20do%20ECR.png)
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 erro
Your 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-policy
com 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"
]
}
]
}
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