Разрешения на перемещение средств между счетами ECR

Разрешения на перемещение средств между счетами ECR

У нас есть два аккаунта AWS. Аккаунт A имеет репозитории ECR, а аккаунт B предназначен для извлечения данных из них.

Я попытался настроить разрешения репозитория в учетной записи A, чтобы разрешить извлечение данных из учетной записи B, но AWS утверждает, что моя политика недействительна.

Я пытался:

  • Установка в качестве принципала номера счета B. Это приводит к ошибкеYour permission statements have one or more invalid parameters. Invalid parameter at 'PolicyText' failed to satisfy constraint: 'Invalid repository policy provided'
  • Установка принципала на ARN пользователя root в учетной записи B ( arn:aws:iam::1234567891011:root). Это приводит к ошибкеThe service name arn:aws:iam::1234567891011:root is invalid. A valid service name format is [service].amazonaws.com.
  • Установка принципала на ARN пользователя IAM в учетной записи B. Та же ошибка, что и выше.

Вышеуказанное было сделано через консоль AWS, которая не позволяет редактировать JSON напрямую для разрешений ECR. Я попробовал команду CLI aws ecr set-repository-policyс вышеуказанными изменениями, но в терминале были возвращены те же ошибки.

Добавление разрешений для пользователей IAM водинаковыйаккаунт работает отлично.

Действия, которые я попытался добавить в политику, следующие:

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

Есть идеи, что я делаю не так?

решение1

Вам также необходимо настроить разрешения в ECR для доступа к кросс-аккаунтам. Чтобы предоставить доступ pull к ECR аккаунта A аккаунту B, поместите следующую политику JSON на вкладку ECR Permissions.

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

Связанный контент