ECR クロスアカウント プル権限

ECR クロスアカウント プル権限

AWS アカウントが 2 つあります。アカウント A には ECR リポジトリがあり、アカウント B はそこからプルできるようになっています。

アカウント B からのプルを許可するようにアカウント A のリポジトリ権限ステートメントを設定しようとしましたが、AWS はポリシーが無効であると主張します。

私が試してみました:

  • 元金をアカウントBの口座番号に設定すると、次のエラーが発生します。Your permission statements have one or more invalid parameters. Invalid parameter at 'PolicyText' failed to satisfy constraint: 'Invalid repository policy provided'
  • アカウントBのルートユーザーのARNにプリンシパルを設定します(arn:aws:iam::1234567891011:root)。これにより、エラーが発生します。The service name arn:aws:iam::1234567891011:root is invalid. A valid service name format is [service].amazonaws.com.
  • プリンシパルをアカウント B の IAM ユーザーの ARN に設定します。上記と同じエラーです。

上記は AWS コンソールを通じて実行されましたが、ECR 権限の JSON を直接編集することはできません。上記の変更を加えた CLI コマンドを試しましたaws ecr set-repository-policyが、ターミナルで同じエラーが返されました。

IAMユーザーへの権限の追加同じアカウントは正常に動作します。

ポリシーに基づいて追加しようとしたアクションは次のとおりです。

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

私が何を間違っているのか、何かアイデアはありますか?

答え1

また、クロスアカウント アクセス用に ECR の権限を設定する必要があります。アカウント A の ECR へのプル アクセスをアカウント B に付与するには、ECR の [権限] タブに次の JSON ポリシーを配置します。

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

詳細は、AWS API リファレンスの「API Reference」セクションを参照してください。

関連情報