J'utilise la commande "aws ec2 run-instances" (à partir de l' interface de ligne de commande AWS (CLI) ) pour lancer une instance Amazon EC2 . Je veux définir un rôle IAM pour l'instance EC2 que je lance. Le rôle IAM est configuré et je peux l'utiliser avec succès lors du lancement d'une instance à partir de l'interface utilisateur Web AWS. Mais lorsque j'essaie de le faire en utilisant cette commande et l'option "--iam-instance-profile", cela a échoué. Faire "aide aux instances d'exécution aws ec2" affiche les sous-champs Arn = et Name = pour la valeur. Lorsque j'essaie de rechercher Arn en utilisant "aws iam list-instance-profiles", il donne ce message d'erreur:
Une erreur client (AccessDenied) s'est produite: utilisateur: arn: aws: sts :: xxxxxxxxxxxx: assume-role / shell / i-15c2766d n'est pas autorisé à effectuer: iam: ListInstanceProfiles sur la ressource: arn: aws: iam :: xxxxxxxxxxxxx: instance -profil/
(où xxxxxxxxxxxx est mon numéro de compte AWS à 12 chiffres)
J'ai recherché la chaîne Arn via l'interface utilisateur Web et l'ai utilisée via "--iam-instance-profile Arn = arn: aws: iam :: xxxxxxxxxxxx: instance-profile / shell" sur la commande run-instances, et cela a échoué avec :
Une erreur client (UnauthorizedOperation) s'est produite: vous n'êtes pas autorisé à effectuer cette opération.
Si je laisse complètement l'option "--iam-instance-profile", l'instance se lancera mais elle n'aura pas le paramètre de rôle IAM dont j'ai besoin. La permission semble donc avoir quelque chose à voir avec l'utilisation de "--iam-instance-profile" ou l'accès aux données IAM. J'ai répété plusieurs fois en cas de pépins AWS (ils se produisent parfois) et sans succès.
Je soupçonne qu'il existe peut-être une restriction selon laquelle une instance avec un rôle IAM n'est pas autorisée à lancer une instance avec un rôle IAM plus puissant. Mais dans ce cas, l'instance dans laquelle je fais la commande a le même rôle IAM que j'essaie d'utiliser. nommé "shell" (bien que j'aie aussi essayé d'en utiliser un autre, pas de chance).
La définition d'un rôle IAM n'est-elle même pas autorisée à partir d'une instance (via ses informations d'identification de rôle IAM)?
Existe-t-il une autorisation de rôle IAM plus élevée nécessaire pour utiliser les rôles IAM que celle requise pour le lancement d'une instance simple?
"--Iam-instance-profile" est-il la manière appropriée de spécifier un rôle IAM?
Dois-je utiliser un sous-ensemble de la chaîne Arn ou le formater d'une autre manière?
Est-il possible de configurer un rôle IAM pouvant accéder à n'importe quel rôle IAM (peut-être un "Super Root IAM" ... constituant ce nom)?
Pour info, tout implique Linux fonctionnant sur les instances. De plus, j'exécute tout cela à partir d'une instance car je n'ai pas pu installer ces outils sur mon bureau. Cela et je ne veux pas mettre mes informations d'identification d'utilisateur IAM sur un stockage AWS comme conseillé par AWS ici .
après avoir répondu:
Je n'ai pas mentionné l'autorisation d'instance de lancement de "PowerUserAccess" (par rapport à "AdministratorAccess") car je ne savais pas qu'un accès supplémentaire était nécessaire au moment où la question a été posée. J'ai supposé que le rôle IAM était une "information" attachée au lancement. Mais c'est vraiment plus que ça. Il s'agit d'une autorisation.
la source
Le lancement d'une instance EC2 avec un rôle IAM nécessite un accès administratif à la fonction IAM. Cela s'applique même si la nouvelle instance doit avoir exactement le même rôle que l'instance effectuant le lancement. L'instance à partir de laquelle je lancais avait l'autorisation "PowerUserAccess", qui permettait de lancer une instance, mais pas l'accès au rôle IAM. Une fois que j'ai avancé l'autorisation dans l'instance de lancement à "AdministratorAccess", cela a fonctionné.
Étant donné que les rôles IAM accordent des autorisations, il existe clairement un problème de sécurité à résoudre. Vous ne voudriez pas que les rôles IAM soient un moyen d'autoriser l'escalade des autorisations. Mais cela signifie également que pour accorder un rôle IAM, l'instance de lancement doit avoir "AdministratorAccess" ou utiliser des clés d'accès utilisateur / secrètes (avec une telle autorisation) à partir de l'instance (non recommandé), ce qui permettrait d'accorder n'importe quel rôle IAM.
Pouvoir lancer une instance avec la même autorisation (même rôle IAM) que celle détenue par l'instance effectuant le lancement serait utile, mais EC2 ou IAM n'ont pas ce niveau de granularité ou n'ont pas les moyens de le vérifier en toute sécurité. .
la source