web-dev-qa-db-fra.com

Rechercher le rôle utilisé sur le serveur à partir de l'AWS CLI

Je suis sur une instance EC2 à laquelle est associé un rôle IAM et je voudrais pouvoir vérifier que j'utilise bien ce rôle à partir de l'AWS CLI.

J'imagine pouvoir appeler quelque chose comme ça (mais je ne trouve rien de semblable dans les documents CLI):

$ aws get-current-role-details

Cette fonctionnalité existe-t-elle?

15
Ryan Tuck

Voir commande AWS STSget-caller-identity.

Renvoie des détails sur l'identité IAM dont les informations d'identification sont utilisées pour appeler l'API.

$ aws sts get-caller-identity
{
    "Account": "0123456789",
    "UserId": "AROAxxx:i-abc123",
    "Arn": "arn:aws:sts::0123456789:assumed-role/EMR_EC2_DefaultRole/i-abc123"
}

Vous pouvez ensuite prendre le nom du rôle et interroger IAM pour les détails du rôle.

$ aws iam list-attached-role-policies --role-name EMR_EC2_DefaultRole
{
    "AttachedPolicies": [
        {
            "PolicyName": "AmazonElasticMapReduceforEC2Role",
            "PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role"
        },
        {
            "PolicyName": "AmazonEC2RoleforDataPipelineRole",
            "PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforDataPipelineRole"
        }
    ]
}
33
Tyrone321

Malheureusement, il n'y a pas de moyen simple d'obtenir ces informations. Vous devrez vous y rendre par le chemin suivant:

Étape 1. Obtenez l'ID d'instance EC2 actuel à partir des métadonnées d'instance.

curl -s http://169.254.169.254/latest/meta-data/instance-id

Vous pouvez également avoir besoin de la région actuelle.

curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/\(.*\)[a-z]/\1/'

Étape 2. Obtenez l'ID du profil d'instance IAM attaché à votre instance EC2.

aws ec2 describe-instances \
    --region us-east-1 \
    --instance-id i-12345678 \
    --query 'Reservations[0].Instances[0].IamInstanceProfile.Id'

N'oubliez pas de remplacer l'ID d'instance EC2 et la région si nécessaire.

Étape 3. Obtenez les rôles de profil d'instance IAM.

aws iam list-instance-profiles \
    --query "InstanceProfiles[?InstanceProfileId=='ABCDEFG'].Roles"

N'oubliez pas de remplacer l'ID de profil d'instance IAM.

Remarques:

  • Un profil d'instance IAM peut avoir plusieurs rôles IAM associés. Habituellement, ce ne sera qu'un, mais il pourrait en avoir plus.
7
Matt Houser

Il existe un moyen plus simple et élégant d'obtenir les détails du rôle actuel.

$ curl http://169.254.169.254/latest/meta-data/iam/info

{
  "Code" : "Success",
  "LastUpdated" : "2019-05-08T13:15:52Z",
  "InstanceProfileArn" : "arn:aws:iam::xxxxxxxxxxxx:instance-profile/rolename",
  "InstanceProfileId" : "AIPAIFNV5UU4JJLAXXXXX"
}

Dans InstanceProfileArn, vous pouvez voir le nom de votre rôle

6
Aditya Jangid