Как предотвратить ассоциацию роли с EC2 без определенного тега?

#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.