#amazon-web-services #amazon-cloudformation #amazon-iam
#amazon-web-services #aws-cloudformation #amazon-iam
Вопрос:
Я создал роль AWS IAM, и она включала следующее
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Principal:
Service:
- "ec2.amazonaws.com"
Action:
- "sts:AssumeRole"
Condition:
StringEquals:
ec2:ResourceTag/AppCode: !Sub "${AppCode}"
Я проверил, что мой EC2 действительно содержит тег AppCode, и у него было значение, переданное в CloudFormation.
После связывания роли с EC2 я не смог увидеть роль при запуске «aws configure list» на EC2.
После устранения вышеуказанного условия это сработало немедленно! ‘aws configure list’ вернул правильные результаты.
Как правильно запретить ассоциацию роли с экземплярами EC2, если у них нет определенного тега с определенным значением?
Спасибо
Комментарии:
1. Вы говорите о двух разных ролях? Будет ли 1 связанная роль препятствовать вызову экземпляров
AssumeRole
для другой существующей роли? Потому что после того, как вы связываете роль с экземпляром EC2, эта роль уже «принята» экземпляром EC2. Не уверен, чего вы хотите достичь.2. Я хотел бы создать роль с прикрепленной политикой и связанным InstanceProfile. Этот instance-profile (или связанная с ним роль) может быть связан только с экземплярами EC2, которые имеют определенный тег key = value.
Ответ №1:
Я не уверен, возможно ли то, что вы описываете, но, пожалуйста, продолжайте изучать!
В вашей политике говорится «Разрешить службе EC2 вызывать AssumeRole, если у нее есть определенный тег».
Официальный способ контролировать, может ли быть назначена роль экземпляру EC2, — это предоставить iam:PassRole
объекту IAM, который запускает экземпляр.
Если у кого-то его нет iam:PassRole
, то он не сможет указать роль при запуске экземпляра. Если вы хотите, чтобы они могли использовать определенную роль, вы можете предоставить им iam:PassRole
определенную роль, которую они затем смогут использовать при запуске экземпляра.
Этот метод предоставляет пользователю / группе / роли IAM разрешение на выбор роли, вместо того, чтобы управлять разрешениями на основе экземпляра (который необязательно даже еще существует).
Комментарии:
1. Спасибо, Джон. Я бы хотел, чтобы у объекта, запускающего экземпляр, была функция iam: PassRole, но роли, которые могут быть назначены EC2, ограничены на основе тегов EC2.