Passer au contenu

Comment puis-je endosser un rôle IAM à l’aide de l’AWS CLI ?

Lecture de 8 minute(s)
0

Je souhaite endosser un rôle AWS Identity and Access Management (IAM) à l’aide de l’interface de la ligne de commande AWS (AWS CLI).

Résolution

**Remarque :**Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez l’article Résoudre les erreurs AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Pour utiliser l'AWS CLI afin d'endosser un rôle IAM ayant un accès en lecture seule aux instances Amazon Elastic Compute Cloud (Amazon EC2), effectuez les actions suivantes.

Important : Vos informations d'identification, telles que vos mots de passe, sont visibles en texte clair lorsque vous exécutez les commandes des étapes suivantes. Une fois que vous avez endossé le rôle IAM, il est recommandé de modifier vos mots de passe.

Créer un utilisateur IAM doté d’autorisations pour endosser des rôles

  1. Créez un utilisateur IAM à partir de l'AWS CLI à l’aide de la commande suivante :
    Remarque : Remplacez Bob par votre nom d’utilisateur IAM
  2. Créez la politique IAM qui accorde les autorisations à l'utilisateur Bob. Pour ce faire, utilisez l'éditeur de texte de votre choix pour créer le fichier JSON qui définit la politique IAM. Vous pouvez utiliser l'exemple JSON suivant, example-policy.json, comme modèle :
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "ec2:Describe*",
            "iam:ListRoles",
            "sts:AssumeRole"
          ],
          "Resource": "*"
        }
      ]
    }

Pour plus d’informations sur la création de politiques IAM, consultez les sections Création de stratégies IAM, Exemples de stratégies IAM basées sur l’identité et Référence de stratégie JSON IAM.

Créer la stratégie IAM

Pour créer votre stratégie IAM, procédez comme suit :

  1. Utilisez la commande aws iam create-policy suivante :
    aws iam create-policy --policy-name example-policy --policy-document file://example-policy.json
    La commande aws iam create-policy génère plusieurs informations, notamment l’ARN (Amazon Resource Name) de la stratégie IAM comme suit :
    arn:aws:iam::123456789012:policy/example-policy
    Remarque : Remplacez 123456789012 par votre propre ID de compte.
  2. Notez l’ARN de la stratégie IAM figurant dans la sortie et attachez la stratégie à Bob à l’aide de la commande attach-user-policy. Puis, vérifiez que l’attachement est en place à l’aide de la commande list-attached-user-policies comme suit :
    aws iam attach-user-policy --user-name Bob --policy-arn "arn:aws:iam::123456789012:policy/example-policy"
    aws iam list-attached-user-policies --user-name Bob

Créer le fichier JSON qui définit la relation de confiance du rôle IAM

Utilisez un éditeur de texte pour créer un fichier JSON qui définit la relation de confiance. Vous pouvez utiliser la politique de confiance suivante à titre d'exemple :

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "AWS": "123456789012"
    },
    "Action": "sts:AssumeRole"
  }
}

Cette politique de confiance permet aux utilisateurs et aux rôles du compte 123456789012 d’endosser ce rôle s’ils autorisent l’action sts:AssumeRole dans leur stratégie d’autorisations. Vous pouvez également restreindre la relation de confiance afin que le rôle IAM puisse être endossé uniquement par des utilisateurs IAM spécifiques. Pour ce faire, spécifiez des principes similaires à arn:aws:iam::123456789012:user/example-username. Pour en savoir plus, consultez la section Éléments de stratégie JSON AWS : Principal.

Créer le rôle IAM et attacher la politique

Créez un rôle IAM qui peut être endossé par Bob et qui dispose d’un accès en lecture seule aux instances Amazon Relational Database Service (Amazon RDS). Pour autoriser un utilisateur IAM à endosser un rôle IAM, vous devez spécifier un principal qui autorise les utilisateurs IAM à endosser ce rôle. Par exemple, un principal similaire à arn:aws:iam::123456789012:root permet à toutes les identités IAM du compte 123456789012 d’endosser ce rôle. Pour plus d’informations, consultez la section Création d’un rôle pour déléguer des autorisations à un utilisateur IAM.

  1. Créez le rôle IAM qui dispose d’un accès en lecture seule aux instances de base de données Amazon RDS. Attachez les politiques IAM à votre rôle IAM en fonction de vos exigences de sécurité.

    La commande aws iam create-role crée le rôle IAM et définit la relation de confiance en fonction du fichier JSON que vous avez créé dans la section précédente. La commande aws iam create-role attache la stratégie gérée par AWS AmazonRDSReadOnlyAccess au rôle. Vous pouvez attacher différentes politiques (politiques gérées et politiques personnalisées) selon vos exigences de sécurité. La commande aws iam list-attached-role-policies affiche les stratégies IAM attachées au rôle IAM example-role. Par exemple, exécutez la commande suivante :

    aws iam create-role --role-name example-role --assume-role-policy-document file://example-role-trust-policy.json
    aws iam attach-role-policy --role-name example-role --policy-arn "arn:aws:iam::aws:policy/AmazonRDSReadOnlyAccess"
    aws iam list-attached-role-policies --role-name example-role

    Remarque : Vérifiez que Bob dispose d’un accès en lecture seule aux instances EC2 et qu’il peut endosser le rôle example-role.

  2. Créez des clés d’accès pour Bob à l’aide de la commande suivante :

    aws iam create-access-key --user-name Bob

    Important : Cette commande AWS CLI génère un ID de clé d’accès et une clé d’accès secrète. N’oubliez pas de noter ces clés.

Configurer les clés d’accès

Pour configurer les clés d’accès, utilisez le profil par défaut ou un profil spécifique. Pour configurer le profil par défaut, exécutez la commande aws configure. Pour créer un nouveau profil spécifique, exécutez aws configure --profile example_-_profile-name. Dans cet exemple, le profil par défaut est configuré comme suit :

aws configure
AWS Access Key ID [None]: ExampleAccessKeyID1
AWS Secret Access Key [None]: ExampleSecretKey1
Default region name [None]: eu-west-1
Default output format [None]: json

Remarque : pour Nom de la région par défaut, indiquez votre région AWS.

Vérifier que les commandes de l’AWS CLI sont invoquées, puis vérifier l’accès utilisateur IAM

Procédez comme suit :

  1. Exécutez la commande aws sts get-caller-identity comme suit :

    aws sts get-caller-identity

    La sortie de la commande aws sts get-caller-identity inclut l'ARN. Pour vous assurer que les commandes AWS CLI sont invoquées en tant que Bob, vérifiez que la sortie inclut une ligne similaire à arn:aws:iam::123456789012:user/Bob.

  2. Exécutez les commandes suivantes pour confirmer que l’utilisateur IAM dispose d’un accès en lecture seule aux instances EC2 et qu’il n’a aucun accès aux instances de base de données Amazon RDS :

    aws ec2 describe-instances --query "Reservations[*].Instances[*].[VpcId, InstanceId, ImageId, InstanceType]"
    aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier, DBName, DBInstanceStatus, AvailabilityZone, DBInstanceClass]"

    La commande aws ec2 describe-instances présente toutes les instances EC2 qui se trouvent dans la région eu-west-1. La commande aws rds describe-db-instances doit générer un message d’erreur d’accès refusé, car Bob n’a pas accès à Amazon RDS.

Endosser le rôle IAM

Procédez de l’une des manières suivantes :

Créez un profil dans le fichier ~/.aws/config pour utiliser un rôle AIM. Pour plus d’informations, consultez la section Utiliser un rôle IAM dans l’AWS CLI.

-ou-

Pour endosser le rôle IAM, exécutez la commande suivante :

  1. Obtenez l'ARN du rôle à l'aide de la commande suivante :

    aws iam list-roles --query "Roles[?RoleName == 'example-role'].[RoleName, Arn]"
  2. La commande répertorie les rôles IAM, mais filtre la sortie par nom de rôle. Pour endosser le rôle IAM, exécutez la commande suivante :

    aws sts assume-role --role-arn "arn:aws:iam::123456789012:role/example-role" --role-session-name AWSCLI-Session

Ces commandes génèrent plusieurs éléments d’information. Dans le bloc d’informations d’identification, vous avez besoin de AccessKeyId, de SecretAccessKey et de SessionToken. Cet exemple utilise les variables d’environnement RoleAccessKeyID, RoleSecretKey et RoleSessionToken. Notez que l’horodatage du champ d’expiration est dans le fuseau horaire UTC. L’horodatage indique la date d’expiration des informations d’identification temporaires du rôle IAM. Si les informations d’identification temporaires ont expiré, vous devez à nouveau invoquer l’appel d’API sts:AssumeRole.

Remarque : Vous pouvez augmenter la durée maximale d’expiration de session des informations d’identification temporaires pour les rôles IAM à l’aide du paramètre DurationSeconds.

Créer des variables d’environnement pour endosser le rôle IAM et vérifier l’accès

  1. Créez trois variables d’environnement pour endosser le rôle IAM. Ces variables d'environnement contiennent les résultats suivants :

    export AWS_ACCESS_KEY_ID=RoleAccessKeyID
    export AWS_SECRET_ACCESS_KEY=RoleSecretKey
    export AWS_SESSION_TOKEN=RoleSessionToken

    Remarque : Pour les systèmes Windows, remplacez export par set dans cette commande.

  2. Exécutez la commande suivante pour vérifier que vous avez endossé le rôle IAM :

    aws sts get-caller-identity

    Si vous endossez le example-role, cette commande AWS CLI génère l’ARN en tant que arn:aws:sts::123456789012:assumed-role/example-role/AWSCLI-Session au lieu de arn:aws:iam::123456789012:user/Bob.

  3. Exécutez les commandes suivantes pour vérifier que vous avez créé un rôle IAM doté d’un accès en lecture seule aux instances de base de données Amazon RDS et aucun accès aux instances EC2 :

    aws ec2 describe-instances --query "Reservations[*].Instances[*].[VpcId, InstanceId, ImageId, InstanceType]"
    aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier, DBName, DBInstanceStatus, AvailabilityZone, DBInstanceClass]"

    La commande aws ec2 describe-instances doit générer un message d’erreur d’accès refusé. La commande aws rds describe-db-instances doit renvoyer les instances de base de données Amazon RDS. Cela permet de vérifier que les autorisations attribuées au rôle IAM fonctionnent correctement.

  4. Pour revenir à l’utilisateur IAM, supprimez les variables d’environnement comme suit :

    unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
    aws sts get-caller-identity

    La commande unset supprime les variables d’environnement et la commande aws sts get-caller-identity vérifie que vous êtes retourné en tant qu’utilisateur IAM Bob.

    Remarque : pour les systèmes Windows, définissez les variables d’environnement sur des chaînes vides pour effacer leur contenu comme suit :

    SET AWS_ACCESS_KEY_ID=
    SET AWS_SECRET_ACCESS_KEY=
    SET AWS_SESSION_TOKEN=

Informations connexes

Rôles, termes et concepts

create-role

Création d’un rôle pour déléguer des autorisations à un service AWS