Можно ли указать шаблон для роли AWS Доверительные отношения
Я хочу разрешить некоторым ролям из другого аккаунта выполнять роль в моем аккаунте. Я не хочу указывать роли по одной, потому что они часто меняются.
Я разработал эту политику для доверительных отношений, которая должна разрешать любую роль, имя которой заканчивается _my_suffix
, но это не работает (доступ запрещен):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_NR_A:root"
},
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:iam::ACCOUNT_NR_A:role/*_my_suffix"
}
},
"Action": "sts:AssumeRole"
}
]
}
С другой стороны, эта политика работает, но она слишком открыта, поскольку она позволяет любому пользователю / роли в учетной записи A выполнять мою роль:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_NR_A:root"
},
"Action": "sts:AssumeRole"
}
]
}
Итак, есть ли способ разрешить только набор ролей без явного указания?
2 ответа
Невозможно использовать подстановочный знак в политике доверия, кроме "Principal" : { "AWS" : "*" }
, Причина в том, что при указании идентификатора в качестве принципала необходимо использовать полный ARN, поскольку IAM преобразуется в уникальный идентификатор, например AIDAxxx (для пользователя IAM) или AROAxxx (для роли IAM). Ниже приводится документ:
Если ваш элемент Principal в политике доверия роли содержит ARN, указывающий на конкретного пользователя IAM, то этот ARN преобразуется в уникальный идентификатор участника пользователя при сохранении политики. Это помогает снизить риск того, что кто-то повысит свои привилегии, удалив и воссоздав пользователя. Обычно этот идентификатор не отображается в консоли, поскольку при отображении политики доверия происходит обратное преобразование обратно в ARN пользователя.
Недавно я столкнулся с таким же вариантом использования. Ни один из ответов не помог мне решить эту проблему.
Чарли, ваше исходное решение действительно, но мне потребовались некоторые настройки, чтобы заставить его работать, а именно: мне нужно было заменить 'ArnLike' на 'stringLike' и переключить 'aws:SourceArn' на использование 'aws:PrincipalArn':
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<ACCOUNT_ID>:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringLike": {
"aws:PrincipalArn": "arn:aws:iam::<ACCOUNT_ID>:role/test-role-name-*"
}
}
}
Это похоже на проблему с делегированием доступа к доверенной учетной записи (вашей учетной записи), а не доверенной учетной записи (_my_suffix - учетная запись AWS). Это несколько вещей, которые вы можете проверить по следующему URL.
Ссылка: https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html
Спасибо