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 : 24/05/2021

Je souhaite créer un ensemble de données dans Amazon QuickSight à partir des données d'un compartiment Amazon Simple Storage Service (Amazon S3) d'un autre compte. Comment faire ?

Brève description

Supposons que le compte A est l'endroit où réside votre instance Amazon QuickSight et que votre compartiment Amazon S3 se trouve dans le compte B. Vous pouvez créer un accès entre comptes d'Amazon QuickSight à un compartiment Amazon S3 chiffré dans un autre compte en effectuant 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 sur l'activation du chiffrement par défaut pour S3, consultez la section Activation du chiffrement par défaut du 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 stratégie de compartiment de votre compartiment Amazon S3 (dans le compte A) comme indiqué dans cet exemple :

{
    "Version": "2012-10-17",
    "Id": "BucketPolicy",
    "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/*"
            ]
        }
    ]
}

Remarque : si le rôle aws-quicksight-s3-consumers-role-v0 existe dans le compte A, assurez-vous d'utiliser ce rôle à la place. Remplacez aws-quicksight-service-role-v0 par aws-quicksight-s3-consumers-role-v0 pour éviter tout problème de connexion avec Amazon S3.

2.    Ajoutez votre rôle de service Amazon QuickSight (compte A) à la liste des utilisateurs pouvant 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. Dans le volet de navigation, choisissez Rôles. Recherchez aws-quicksight-service-role et sélectionnez votre rôle de service Amazon QuickSight. Copiez l'ARN du rôle de service.

Remarque : si le rôle aws-quicksight-s3-consumers-role-v0 existe dans le compte A, assurez-vous d'utiliser ce rôle à la place. Sinon, il se pourrait que vous receviez une erreur lorsque vous essayez de vous connecter à Amazon S3.

Ajout du compartiment Amazon S3 (compte B) en tant que ressource accessible par le 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 la console Amazon QuickSight.

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 et de remplacer ExampleStmt3 par votre propre ID de déclaration.

Remarque : si le rôle aws-quicksight-s3-consumers-role-v0 existe dans le compte A, vous devez attacher cette stratégie KMS au rôle. La stratégie KMS déchiffrera les données de votre compartiment Amazon S3.

En attachant la stratégie de rôle mise à jour à votre rôle de service Amazon QuickSight, vous risquez de rencontrer une erreur d'autorisations. Consultez cette section pour savoir Comment résoudre les erreurs d'autorisations des ressources AWS dans Amazon QuickSight ?

Autres considérations

Voici quelques facteurs supplémentaires :