Comment puis-je utiliser l'interface de ligne de commande AWS pour authentifier l'accès aux ressources AWS à l'aide d'un jeton MFA ?

Lecture de 4 minute(s)
0

Je souhaite utiliser un jeton d'authentification multifactorielle (MFA) avec l'interface de ligne de commande AWS (AWS CLI) pour authentifier l'accès à mes ressources AWS.

Brève description

Vous pouvez activer jusqu'à huit appareils MFA pour chaque utilisateur d'AWS Identity and Access Management (IAM).

Remarque : L'activation de la MFA pour l'utilisateur racine n'affecte que les informations d'identification de ce dernier. Chaque identité IAM de votre compte AWS comporte sa propre configuration MFA.

Pour activer la MFA, consultez les sections Sécuriser la connexion de votre utilisateur racine avec la MFA et MFA dans IAM.

Résolution

Pour utiliser l'interface de ligne de commande AWS afin de vous authentifier auprès des ressources AWS, utilisez l'action d'API GetSessionToken pour obtenir des informations d'identification temporaires.

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS, consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

ARN de l’appareil MFA

Pour obtenir l'ARN de l’appareil MFA, procédez comme suit :

  1. Ouvrez la console IAM.
  2. Dans le volet de navigation, sélectionnez Utilisateurs, puis ajoutez votre utilisateur IAM.
  3. Sur la page Résumé, sélectionnez l’onglet Informations d'identification de sécurité.
  4. Dans Appareil MFA affecté, copiez l'ARN de l’appareil MFA.

Utiliser l'interface de ligne de commande AWS pour obtenir des informations d'identification temporaires

Exécutez la commande get-session-token :

aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

Exemple de sortie :

{
    "Credentials": {
        "SecretAccessKey": "secret-access-key",
        "SessionToken": "temporary-session-token",
        "Expiration": "expiration-date-time",
        "AccessKeyId": "access-key-id"
    }
}

Important : Assurez-vous que le numéro de série, le jeton et l'ARN de l’appareil MFA sont corrects, sous peine de recevoir un message d'erreur similaire au message suivant :

« An error occurred (AccessDenied) when calling the GetSessionToken operation: MultiFactorAuthentication failed, unable to validate MFA code. Please verify your MFA serial number is valid and associated with this user. »

Pour authentifier votre appareil matériel MFA, le numéro de série se trouve généralement au dos de l'appareil et sa valeur est similaire à GAHT12345678. Pour authentifier votre appareil virtuel MFA, la valeur est similaire à arn:aws:iam::123456789012:mfa/user.

Remarque : L'AWS CLI prend en charge l'authentification MFA uniquement avec un appareil MFA virtuel ou matériel. L'AWS CLI ne prend pas en charge l'authentification MFA avec la clé de sécurité FIDO.

Pour plus d'informations, consultez la section Affecter des appareils MFA dans l'AWS CLI ou l'API AWS.

Utiliser des informations d'identification temporaires pour exporter leurs valeurs vers des variables d'environnement

Exécutez les commandes suivantes en fonction de votre système d’exploitation :

Linux

export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output

Windows

set AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
set AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
set AWS_SESSION_TOKEN=example-session-Token-as-in-previous-output

Avant de réexécuter la commande get-session-token, exécutez les commandes suivantes pour annuler la définition des variables d'environnement :

Linux

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN

Windows

set AWS_ACCESS_KEY_ID=
set AWS_SECRET_ACCESS_KEY=
set AWS_SESSION_TOKEN=

Utiliser des informations d'identification temporaires avec des profils nommés

Vous pouvez également utiliser des profils nommés pour spécifier les commandes qui requièrent une authentification MFA. Dans le fichier d’informations d’identification qui se trouve dans le dossier .aws du répertoire de base de l'utilisateur, ajoutez une nouvelle configuration de profil pour émettre des commandes authentifiées par MFA.

Exemple de configuration de profil :

[mfa]aws_access_key_id = example-access-key-as-in-returned-output
aws_secret_access_key = example-secret-access-key-as-in-returned-output
aws_session_token = example-session-token-as-in-returned-output

Une fois les informations d'identification expirées, exécutez à nouveau la commande get-session-token, puis exportez les valeurs renvoyées vers les variables d'environnement ou la configuration du profil.

Il est recommandé d'exécuter un script ou une tâche cron en arrière-plan qui vérifie l'expiration à partir de la sortie de la commande get-session-token. Si le jeton MFA a expiré, assurez-vous que le script ou la tâche cron vous invite à vous réauthentifier.

Lorsque vous utilisez des profils nommés pour vous authentifier, spécifiez l'option —profil suivie du nom du profil pour vérifier que les appels d'API utilisent l'authentification MFA.

Informations connexes

Comment puis-je réinitialiser un appareil MFA perdu ou cassé pour mon utilisateur IAM ou l'utilisateur racine de mon compte AWS ?

Comment puis-je appliquer l'authentification MFA aux utilisateurs IAM qui utilisent la console de gestion AWS et l'AWS CLI ?