Comment puis-je utiliser un jeton MFA pour authentifier l'accès à mes ressources AWS via l'AWS CLI ?

Lecture de 5 minute(s)
0

Comment puis-je utiliser un jeton MFA pour authentifier l'accès à mes ressources AWS avec l'Interface de la ligne de commande AWS (AWS CLI) ?

Résolution

Une bonne pratique consiste à protéger votre compte et ses ressources à l'aide d'un périphérique authentification multifactorielle (MFA). Si vous planifiez d'interagir avec vos ressources à l'aide de l'AWS CLI lorsque vous utilisez un dispositif MFA, vous devez créer une session temporaire. Si vous utilisez un dispositif MFA matériel, la valeur est similaire à GAHT12345678. Si vous utilisez un MFA virtuel, la valeur peut être trouvée en consultant les informations d'identification de sécurité. Cela ressemble à arn:aws:iam::123456789012:mfa/user. Pour plus d'informations, consultez la section Vérification du statut MFA.

Important :

Exécutez la commande sts get-session-token de l'interface de ligne de commande AWS en remplaçant les variables par les informations de votre compte, de vos ressources et de l’appareil MFA :

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

Vous recevez une sortie avec des informations d'identification temporaires et un délai d'expiration (par défaut, 12 heures), similaire à ce qui suit :

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

Remarque : vous pouvez spécifier une durée d'expiration (en seconde) à l'aide de l'option --duration-seconds dans la commande sts get-session-token. La durée peut être comprise entre 900 secondes (15 minutes) et 129 600 secondes (36 heures). Si vous utilisez les informations d'identification de l'utilisateur root, la durée est comprise entre 900 secondes (15 minutes) et 3 600 secondes (1 heure).

Utilisation des informations d'identification temporaires avec des variables d'environnement

Vous pouvez utiliser des informations d'identification temporaires en exportant leurs valeurs vers des variables d'environnement à l'aide de ces commandes.

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

Si vous définissez les variables d'environnement, veillez à les annuler avant de faire un nouvel appel get-session-token à l'aide de ces commandes.

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=

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

Vous pouvez également utiliser des profils nommés afin de spécifier les commandes qui nécessitent une authentification MFA. Pour ce faire, modifiez le fichier d'informations d'identification dans le dossier .aws du répertoire de base de l’utilisateur pour ajouter une nouvelle configuration de profil en vue d’émettre des commandes authentifiées MFA. Voici un 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 vers la configuration de profil.

Conseil : envisagez d'exécuter un script ou une tâche cron en arrière-plan qui vérifie « expiration » à partir de la sortie de la commande get-session-token, puis qui invite à procéder à une réauthentification.

Si l'AWS CLI est configurée à l'aide de la commande configure, il existe une configuration par défaut avec des informations d'identification d'utilisateur AWS Identity and Access Management (IAM) permanentes. Cet utilisateur IAM peut utiliser des commandes qui ne nécessitent pas d'authentification MFA.

Exemple de configuration :

.aws/credentials

[default]
aws_access_key_id = example-access-Key-for-an-IAM-user
aws_secret_access_key = example-secret-access-key-for-IAM-user

Remarque : vous ne pouvez pas utiliser le paramètre mfa_serial avec des informations d'identification IAM permanentes.

Remarque : si vous utilisez des profils pour authentifier les commandes à l'aide de l'interface de ligne de commande AWS, spécifiez l'option --profile suivie du nom du profil pour vérifier que les appels sont authentifiés à l'aide de MFA.

Par exemple, cette commande utilise les informations d'identification de profil par défaut et n'est pas authentifiée via MFA.

$ aws s3 ls

Important : assurez-vous de bien comprendre la priorité des informations d'identification, afin de vérifier que les bonnes informations d'identification sont utilisées lors des appels d'API. Cela peut être fait à l'aide de la commande GetCallerIdentity

$ aws s3 ls --profile mfa

Vous pouvez également exiger qu'un utilisateur soit authentifié à l'aide d'une MFA pour effectuer des actions d'API spécifiques avec les conditions aws:MultiFactorAuthPresent ou aws:MultiFactorAuthAge dans une politique IAM.


Informations connexes

Activation des appareils MFA pour les utilisateurs d'AWS

Dispositif d'authentification multifactorielle (MFA) perdu ou inutilisable