![ECR クロスアカウント プル権限](https://rvso.com/image/717731/ECR%20%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%20%E3%83%97%E3%83%AB%E6%A8%A9%E9%99%90.png)
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