Permisos de extracción de ECR entre cuentas

Permisos de extracción de ECR entre cuentas

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 errorYour 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-policycon 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"
        ]
      }
    ]
  }

ingrese la descripción de la imagen aquí

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

información relacionada