Comment configurer l'accès entre comptes d'Amazon QuickSight à un compartiment Amazon S3 dans un autre compte ?

Date de la dernière mise à jour : 15/12/2020

J'essaie de créer un ensemble de données dans Amazon QuickSight en utilisant des données d'un compartiment Amazon Simple Storage Service (Amazon S3) dans un autre compte. Comment dois-je procéder ?

Brève description

Pour créer un accès entre comptes d'Amazon QuickSight à un compartiment Amazon S3 chiffré dans un autre compte, effectuez les opérations suivantes :

1.    Mettez à jour votre stratégie de compartiment Amazon S3 dans le compte B (où réside votre compartiment S3).

2.    Ajoutez le compartiment Amazon S3 (compte B) en tant que ressource accessible au rôle de service Amazon QuickSight (compte A).

3.    Autorisez votre rôle de service Amazon QuickSight (compte A) à accéder à la clé KMS de votre compartiment Amazon S3 (compte B).

Remarque : cet article suppose que votre compartiment Amazon S3 est chiffré. Il est également recommandé de chiffrer votre compartiment Amazon S3 avec une clé KMS. Pour plus d'informations, voir Comment activer le chiffrement par défaut pour un compartiment Amazon S3 ?.

Résolution

Mise à jour de votre stratégie de compartiment Amazon S3 dans le compte B (où réside votre compartiment S3)

Pour configurer l'accès entre comptes d'Amazon QuickSight à Amazon S3, effectuez les opérations suivantes :

1.    Mettez à jour la politique de compartiment de votre compartiment Amazon S3 (dans le compte B) comme ceci :

{
    "Version": "2012-10-17",
    "Id": "BukcetPolicy",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<Account A>:role/service-role/aws-quicksight-service-role-v0"
            },
            "Action": ["s3:ListBucket", "s3:GetObject", "s3:GetObjectVersion" ], 
            "Resource": [
                "arn:aws:s3:::cross-account-qstest-bucket",
                "arn:aws:s3:::cross-account-qstest-bucket/*"
            ]
        }
    ]
}

2.    Ajoutez votre rôle de service Amazon Quicksight (à partir du compte A) à la liste des utilisateurs qui peuvent accéder à la clé KMS du compartiment Amazon S3 :

aws kms create-grant --key-id <KMS key ARN> --grantee-principal <Amazon QuickSight Role ARN> --operations Decrypt
Remarque : pour obtenir votre ARN de clé KMS, ouvrez la console Amazon S3. Accédez au compartiment Amazon S3 qui contient votre fichier de données et sélectionnez l'onglet Propriétés . L'ARN de clé se trouve sous Chiffrement par défaut.

Pour obtenir l'ARN du rôle de service Amazon QuickSight, ouvrez la console AWS Identity Access Management (IAM) dans le compte A, où réside votre abonnement Amazon QuickSight. Choisissez Rôles dans le volet de navigation. Recherchez aws-quicksight-service-role et sélectionnez votre rôle de service Amazon QuickSight. Copiez l'ARN du rôle de service.

Ajout du compartiment Amazon S3 (compte B) en tant que ressource accessible au rôle de service Amazon QuickSight (compte A)

Pour autoriser votre rôle de service Amazon QuickSight à accéder au compartiment Amazon S3 dans un autre compte, effectuez les opérations suivantes :

1.    Ouvrez votre console IAM.

2.    Choisissez Gérer QuickSight.

3.    Choisissez Sécurité et autorisations.

4.    Choisissez Ajouter ou supprimer.

5.    Choisissez Détails.

6.    Choisissez Sélectionner des compartiments S3.

7.    Choisissez l'onglet Compartiments S3 auxquels vous pouvez accéder via l'onglet AWS pour vérifier que votre compartiment S3 est répertorié pour un accès Amazon QuickSight.

8.    (Facultatif) Si votre compartiment Amazon S3 n'est pas répertorié, ajoutez-le sous Utiliser un compartiment différent.

9.    Choisissez Terminer.

Autoriser le rôle de service Amazon QuickSight (compte A) à accéder à la clé KMS de votre compartiment Amazon S3 (compte B)

Ajoutez la stratégie IAM en ligne suivante au rôle de service Amazon QuickSight dans le compte A :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ExampleStmt3",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": ""arn:aws:kms:us-east-1:<account ID of your S3 bucket>:key/<KEYID>"
        }
    ]
}

Cette stratégie mise à jour permet au rôle de service Amazon QuickSight d'accéder à votre clé KMS dans le compte B, où réside votre compartiment Amazon S3. Assurez-vous d'ajouter la stratégie en ligne.

Si vous attachez la stratégie de rôle mise à jour plutôt à votre rôle de service Amazon QuickSight, vous risquez de rencontrer une erreur d'autorisations. Pour plus d'informations sur la résolution de cette erreur d'autorisations, voir Comment résoudre les erreurs d'autorisations des ressources AWS dans Amazon QuickSight ?

Autres facteurs à prendre en compte

Voici quelques facteurs supplémentaires :