![Permisos de extracción de ECR entre cuentas](https://rvso.com/image/717731/Permisos%20de%20extracci%C3%B3n%20de%20ECR%20entre%20cuentas.png)
Tenemos dos cuentas de AWS. La cuenta A tiene repositorios ECR y la cuenta B debe poder extraer de ellos.
Intenté configurar las declaraciones de permiso del repositorio en la Cuenta A para permitir la extracción de la Cuenta B, pero AWS afirma que mi política no es válida.
Yo he tratado:
- Establecer el principal como el número de cuenta de la cuenta B. Esto produce el error
Your permission statements have one or more invalid parameters. Invalid parameter at 'PolicyText' failed to satisfy constraint: 'Invalid repository policy provided'
- Establecer el principal en el ARN del usuario raíz en la cuenta B (
arn:aws:iam::1234567891011:root
). Esto da como resultado el errorThe service name arn:aws:iam::1234567891011:root is invalid. A valid service name format is [service].amazonaws.com.
- Configuración del principal en el ARN de un usuario de IAM en la cuenta B. El mismo error que el anterior.
Lo anterior se realizó a través de la consola de AWS, que no permite editar el JSON directamente para los permisos de ECR. Probé el comando CLI aws ecr set-repository-policy
con los cambios anteriores pero se devolvieron los mismos errores en la terminal.
Agregar permisos para usuarios de IAM dentrolo mismoLa cuenta funciona bien.
Las acciones que he intentado agregar bajo la política son:
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:ListImages",
"ecr:DescribeRepositories"
]
¿Alguna idea de lo que podría estar haciendo mal?
Respuesta1
También necesita configurar permisos en la ECR para el acceso entre cuentas. Para otorgar acceso de extracción a la ECR de la cuenta A a la cuenta B, coloque la siguiente política JSON en la pestaña Permisos de 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"
]
}
]
}
Respuesta2
Debe configurar una función entre cuentas para que la asuma la cuenta b.
Cree el rol de cuenta cruzada en la cuenta que tiene el Registro, A, dé acceso al registro en el rol. Y dale a la Cuenta B los permisos para asumir ese rol.
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