Интерфейс командной строки AWS: создайте экземпляр EC2 и прикрепите профиль экземпляра (неавторизованный)

#amazon-web-services #amazon-ec2 #aws-cli

Вопрос:

Из экземпляра ec2 «A» я хотел бы запустить другой экземпляр ec2 «B» и назначить ему профиль экземпляра.

Я могу создать новый экземпляр «B» без профиля экземпляра:

 aws ec2 run-instances --image-id ami-<redacted> --count 1 --instance-type t2.micro --key-name <redacted> --security-group-ids sg-<redacted> --subnet-id subnet-<redacted> 
 

Однако, когда я добавляю --iam-instance-profile Name="<redacted>" флаг для прикрепления профиля экземпляра, я получаю сообщение об ошибке:

 An error occurred (UnauthorizedOperation) when calling the RunInstances operation:  
You are not authorized to perform this operation. Encoded authorization failure message: <redacted>
 

Похоже, что профилю экземпляра, прикрепленному к экземпляру «A» (и используемому для создания экземпляра «B»), не хватает некоторых разрешений на ресурсы, но я не могу придумать решение.

Я расшифровал сообщение об ошибке ( aws sts decode-authorization-message --encoded-message <message> ), но я все еще не понимаю смысла:

 {
    "DecodedMessage": 
"{"allowed":false,"explicitDeny":false,"matchedStatements":{"items":[]},"failures":{"items":[]},"context":{"principal":{"id":"<redacted>","arn":"arn:aws:sts::<redacted>:assumed-role/<redacted>/<redacted>"},"action":"iam:PassRole","resource":"arn:aws:iam::<redacted>:role/<redacted>","conditions":{"items":[{"key":"aws:Region","values":{"items":[{"value":"eu-central-1"}]}},{"key":"aws:Service","values":{"items":[{"value":"ec2"}]}},{"key":"aws:Resource","values":{"items":[{"value":"role/<redacted>"}]}},{"key":"iam:RoleName","values":{"items":[{"value":"<redacted>"}]}},{"key":"aws:Type","values":{"items":[{"value":"role"}]}},{"key":"aws:Account","values":{"items":[{"value":"<redacted>"}]}},{"key":"aws:ARN","values":{"items":[{"value":"arn:aws:iam::<redacted>:role/<redacted>"}]}}]}}}"
}
 

Что я упускаю?

Ответ №1:

Участнику IAM (обычно роль IAM), связанному с экземпляром A, требуется разрешение на передачу роли IAM, связанной с выбранным вами профилем, в службу AWS EC2, чтобы экземпляр B можно было запустить с выбранным профилем/ролью.

Причина, по которой требуется это разрешение, заключается в том, чтобы запретить одной роли запускать вычисления с другой ролью, которая предоставляет повышенные разрешения (это называется «повышением привилегий»).

Добавьте что-то вроде следующего в политики, связанные с ролью IAM, с которой был запущен экземпляр A:

 {
  "Effect": "Allow",
  "Action": "iam:PassRole",
  "Resource": "arn:aws:::your-account:role/your-role"
}
 

Комментарии:

1. Спасибо, вот и все! Вы также помогли мне понять сообщение об ошибке.