У меня две учетные записи, a1
и a2
.
У меня экземпляр EC2 в a1, a1.ec2
. Он принимает на себя некоторую роль в этом аккаунте, a1.r
. Эта роль имеет полный доступ ко всем действиям ECR.
Теперь у меня есть реестр образов (ECR) в a2
, и я хотел бы иметь к нему доступ из a1.ec2
.
Итак, я подключился к этому экземпляру по ssh и, чтобы проверить доступ, я запустил
aws ecr describe-repositories --region <my-region> --registry-id <id of a2>
Но я получаю ошибку
An error occurred (AccessDeniedException) when calling the DescribeRepositories operation: User: arn:aws:sts::<id of a1>:assumed-role/a1.r/i-075fad654b998275c is not authorized to perform: ecr:DescribeRepositories on resource: arn:aws:ecr:*:*:repository/*
Однако это разрешение действительно предоставлено роли a1.r
. Я проверил это, имея возможность получить доступ к ECR в a1
очень хорошо.
Кроме того, ECR, к которому я хотел бы получить доступ, имеет следующие политики разрешений, поэтому я убеждаюсь, что проблема не вызвана ECR a2
:
{
"Sid": "new statement",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<id of a1>:root"
},
"Action": "*"
},
{
"Sid": "new statement",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<id of a1>:role/a1.r"
},
"Action": "*"
}
Я посмотрел https://serverfault.com/questions/897392/ecr-cross-account-pull-permissions, где решение, по-видимому, заключается в создании ролей для нескольких учетных записей. Хотя я мог бы создать такую роль a2.cross-acc-r
, я не могу понять, как я могу принять эту роль для команд aws ecr
cli. Я не хочу, чтобы экземпляр EC2 взял на себя эту роль, поскольку он находится в другой учетной записи (даже не уверен, возможно ли это вообще).
Мне не хватает чего-то базового относительно того, как работает AWS IAM?