Я пытаюсь изменить политику IAM, чтобы пользователи могли связывать роль IAM с экземплярами EC2, которые предоставляют права только на чтение для наших корзин S3.
Наши команды проводят довольно много исследований и разработок с AWS, поэтому я не хочу ограничивать доступ к любым сервисам AWS, кроме IAM, что позволило бы повысить привилегии.
Я использовал информацию в этот вопрос чтобы добавить iam: PassRole, но политика не проходит проверку в симуляторе.
{
"Statement": [
{
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::ACCOUNTID:role/MYROLE"
}
]
}
Если я изменю ресурс второго оператора на "Resource": "*"
проверка проходит успешно, и симулятор показывает, что PassRole явно разрешена, все остальное в IAM неявно запрещается, а все в S3 явно разрешено.
Что я делаю не так с указанной ролью? Какие могут быть последствия для безопасности, если разрешить PassRole для всех (я предполагаю, что симулятор политики не обманывает). Есть ли лучший способ достичь того, чего я хочу?
Мне это кажется ошибкой в Симуляторе политик. Даже сами Amazon декларируют такую же политику, как ваша в их примере. Симулятор жалуется, но на самом деле привязка этой политики к пользователю работает нормально.
Что я делаю не так с указанной ролью?
Насколько мне известно, ничего.
Какие могут быть последствия для безопасности, если разрешить PassRole для всех (я предполагаю, что симулятор политики не обманывает).
Что ж, вы бы позволили iam:PassRole
действие на любую роль. По сути, это означает, что пользователь с этой политикой сможет запустить экземпляр EC2 с любой прикрепленной к нему ролью IAM. Это также объясняется в Документация AWS, указанная выше:
В качестве альтернативы вы можете предоставить пользователям IAM доступ ко всем вашим ролям, указав ресурс как «*» в этой политике. Однако подумайте, могут ли пользователи, запускающие экземпляры с вашими ролями (существующие или создаваемые вами позже), получить разрешения, которые им не нужны или не должны иметь.