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 : 08/12/2020

Pour plus de sécurité, je souhaite obliger les utilisateurs d'autres comptes AWS à utiliser un appareil Multi-Factor Authentication (MFA) pour accéder à mes compartiments Amazon Simple Storage Service (Amazon S3). Comment dois-je 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 stratégie 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 appareil MFA.

Par exemple, supposons que vous souhaitiez refuser à un utilisateur d'un autre compte l'autorisation d'exécuter des actions s3:PutObject, s3:PutObjectAcl ou s3:DeleteObject, sauf s'il s'authentifie à l'aide d'un appareil MFA. Vous pouvez écrire une stratégie de compartiment en deux parties :

1.    La première partie peut refuser explicitement ces actions lorsque l'utilisateur n'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"
                }
            }
        },
...

2.    La deuxième partie de la stratégie 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), comme suit :

...
        {
            "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/*"
            ]
        }
    ]
}

Lorsque vous ajoutez une stratégie de compartiment de ce type à votre compartiment, les utilisateurs peuvent exécuter la commande get-session-token de l'interface de ligne de commande AWS (AWS CLI) pour 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 l'appareil 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 ?