Comment obliger les utilisateurs d'autres comptes AWS à utiliser l'authentification MFA pour accéder à mes compartiments Amazon S3 ?

Date de la dernière mise à jour : 20/01/2022

Je souhaite obliger les autres utilisateurs à utiliser un dispositif MFA (authentification multifacteur) pour accéder à mes compartiments Amazon Simple Storage Service (Amazon S3). Comment procéder ?

Résolution

Ajoutez à votre stratégie de compartiment des conditions liées à MFA exigeant que les utilisateurs d'autres comptes AWS s'authentifient à l'aide d'un appareil MFA.

Avant de commencer, les utilisateurs d'autres comptes AWS doivent respecter les conditions requises suivantes :

  • Ils doivent disposer des autorisations pour accéder à Amazon S3. Par exemple, les utilisateurs respectent cette condition si la stratégie gérée par AWS AmazonS3FullAccess est incluse dans leurs stratégies AWS Identity and Access Management (IAM).
  • Ils doivent disposer d'une stratégie IAM attachée qui les autorise à appeler GetSessionToken.
  • Ils doivent avoir un appareil MFA configuré pour être utilisé avec leur identité IAM.

Ensuite, créez une politique de compartiment qui utilise les conditions aws:MultiFactorAuthPresent ou aws:MultiFactorAuthAge. Ces conditions déterminent si l'utilisateur s'est authentifié à l'aide d'un dispositif MFA.

Supposons, par exemple, que vous souhaitez empêcher un utilisateur d'effectuer certaines actions à moins qu'il ne s'authentifie à l'aide d'un dispositif MFA. Vous pouvez écrire une politique de compartiment en deux parties :

1.    La première partie peut refuser explicitement ces actions lorsque l'utilisateur ne s'est pas authentifié à l'aide de l'authentification MFA (la condition "aws:MultiFactorAuthPresent": "false" est remplie), comme suit :

{
    "Version": "2012-10-17",
    "Id": "Policy201612130001aa",
    "Statement": [
        {
            "Sid": "Stmt201612130001ab",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::example.accounta.bucket/*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        },
...

Dans cet exemple, nous empêchons l'utilisateur d'effectuer les actions s3:PutObject, s3:PutObjectAcl et s3:DeleteObject.

2.    La deuxième partie de la politique peut autoriser explicitement ces actions lorsque l'utilisateur s'est authentifié à l'aide de l'authentification MFA (la condition "aws:MultiFactorAuthPresent": "false" n'est pas remplie) :

...
        {
            "Sid": "Stmt201612130001ac",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::example.accounta.bucket",
                "arn:aws:s3:::example.accounta.bucket/*"
            ]
        }
    ]
}

Après que vous avez ajouté une politique de compartiment similaire à votre compartiment, les utilisateurs peuvent exécuter la commande AWS Command Line Interface (AWS CLI) get-session-token. La commande get-session-token permet d'obtenir les informations d'identification requises pour accéder aux ressources de votre compartiment. Cette commande nécessite que l'utilisateur fournisse :

  • Le code temporaire généré par le dispositif MFA
  • Le numéro de série de l'appareil s'il s'agit d'un appareil MFA matériel, ou l'Amazon Resource Name (ARN) s'il s'agit d'un appareil MFA logiciel

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis AWS CLI, assurez-vous que vous utilisez la version AWS CLI la plus récente.

Pour obtenir les informations d'identification, les utilisateurs peuvent également choisir d'exporter les informations d'identification temporaires en tant que variables d'environnement.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?