У нас есть два аккаунта AWS. У учетной записи A есть репозитории ECR, и учетная запись B предназначена для извлечения информации из них.
Я попытался настроить разрешения для репозитория в учетной записи A, чтобы разрешить извлечение из учетной записи B, но AWS утверждает, что моя политика недействительна.
Я пытался:
Your permission statements have one or more invalid parameters. Invalid parameter at 'PolicyText' failed to satisfy constraint: 'Invalid repository policy provided'
arn:aws:iam::1234567891011:root
). Это приводит к ошибке The service name arn:aws:iam::1234567891011:root is invalid. A valid service name format is [service].amazonaws.com.
Вышеупомянутое было сделано через консоль AWS, которая не позволяет редактировать JSON напрямую для разрешений ECR. Я пробовал команду CLI aws ecr set-repository-policy
с вышеуказанными изменениями, но в терминале были возвращены те же ошибки.
Добавление разрешений для пользователей IAM в тот же самый аккаунт работает нормально.
Действия, которые я пытался добавить в политику:
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:ListImages",
"ecr:DescribeRepositories"
]
Есть идеи, что я делаю неправильно?
Вам также необходимо настроить разрешения в ECR для доступа между аккаунтами. Чтобы предоставить доступ по запросу к 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"
]
}
]
}
Вам необходимо настроить роль перекрестной учетной записи для учетной записи 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