Configurer l'accès entre comptes à un catalogue de données AWS Glue partagé à l'aide d'Amazon Athena - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurer l'accès entre comptes à un catalogue de données AWS Glue partagé à l'aide d'Amazon Athena

Créée par Denis Avdonin () AWS

Environnement : Production

Technologies : DataLakes ; Analyses ; Big data

Charge de travail : toutes les autres charges de travail

AWSservices : Amazon Athena ; Glue AWS

Récapitulatif

Ce modèle fournit des step-by-step instructions, notamment des exemples de politique AWS Identity and Access Management (IAM), pour configurer le partage entre comptes d'un ensemble de données stocké dans un bucket Amazon Simple Storage Service (Amazon S3) à l'aide du AWS Glue Data Catalog. Vous pouvez stocker l'ensemble de données dans un compartiment S3. Les métadonnées sont collectées par un robot d'exploration AWS Glue et placées dans le catalogue de données AWS Glue. Le compartiment S3 et le catalogue de données AWS Glue se trouvent dans un AWS compte appelé compte de données. Vous pouvez donner accès IAM aux principaux sur un autre AWS compte appelé compte consommateur. Les utilisateurs peuvent interroger les données du compte client à l'aide du moteur de requête sans serveur Amazon Athena.

Conditions préalables et limitations

Prérequis

Versions du produit

Ce modèle fonctionne uniquement avec la version 2 du moteur Athena et la version 3 du moteur Athena. Nous vous recommandons de passer à la version 3 du moteur Athena. Si vous ne parvenez pas à passer de la version 1 du moteur Athena à la version 3 du moteur Athena, suivez l'approche décrite dans l'accès au catalogue de données AWS Glue entre comptes avec Amazon Athena sur le blog Big Data. AWS

Architecture

Pile technologique cible

  • Amazon Athena

  • Amazon Simple Storage Service (Amazon S3)

  • Glue AWS

  • AWSIdentity and Access Management (IAM)

  • AWSService de gestion des clés (AWSKMS)

Le schéma suivant montre une architecture qui utilise des IAM autorisations pour partager les données d'un compartiment S3 d'un AWS compte (compte de données) avec un autre AWS compte (compte consommateur) via le AWS Glue Data Catalog.

Partage d'un ensemble de données dans un compartiment S3 entre un compte de données et un compte client à l'aide du catalogue de données AWS Glue.

Le schéma suivant illustre le flux de travail suivant :

  1. La politique du compartiment S3 appliquée au compte de données accorde des autorisations à un IAM rôle dans le compte consommateur et au rôle de service AWS Glue Crawler dans le compte de données.

  2. La politique AWS KMS clé du compte de données accorde des autorisations au IAM rôle dans le compte client et au rôle de service AWS Glue Crawler dans le compte de données.

  3. Le robot AWS Glue du compte de données découvre le schéma des données stockées dans le compartiment S3.

  4. La politique de ressources du AWS Glue Data Catalog dans le compte de données autorise l'accès au IAM rôle dans le compte client.

  5. Un utilisateur crée une référence de catalogue nommée dans le compte client à l'aide d'une AWS CLI commande.

  6. Une IAM politique accorde à un IAM rôle dans le compte consommateur l'accès aux ressources du compte de données. La politique de confiance du IAM rôle permet aux utilisateurs du compte client d'assumer le IAM rôle.

  7. Un utilisateur du compte consommateur assume le IAM rôle et accède aux objets du catalogue de données à l'aide de SQL requêtes.

  8. Le moteur sans serveur Athena exécute les requêtes. SQL

Remarque : les IAM meilleures pratiques recommandent d'accorder des autorisations à un IAM rôle et d'utiliser la fédération d'identité.

Outils

  • Amazon Athena est un service de requête interactif qui vous permet d'analyser les données directement dans Amazon S3 en utilisant la norme. SQL

  • Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

  • AWSGlue est un service d'extraction, de transformation et de chargement (ETL) entièrement géré. Il vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données.

  • AWSIdentity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.

  • AWSLe service de gestion des clés (AWSKMS) vous aide à créer et à contrôler des clés cryptographiques pour protéger vos données.

Épopées

TâcheDescriptionCompétences requises

Accordez l'accès aux données du compartiment S3.

Créez une politique de compartiment S3 basée sur le modèle suivant et attribuez-la au compartiment dans lequel les données sont stockées.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" } ] }

La politique du bucket accorde des autorisations au IAM rôle dans le compte client et au rôle de service AWS Glue Crawler dans le compte de données.

Administrateur du cloud

(Si nécessaire) Accordez l'accès à la clé de chiffrement des données.

Si le compartiment S3 est chiffré par une AWS KMS clé, accordez l'kms:Decryptautorisation sur la clé au IAM rôle dans le compte client et au rôle de service AWS Glue Crawler dans le compte de données.

Mettez à jour la politique clé avec la déclaration suivante :

{ "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Administrateur du cloud

Accordez au robot d'exploration l'accès aux données.

Associez la IAM politique suivante au rôle de service du robot d'exploration :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" } ] }
Administrateur du cloud

(Si nécessaire) Accordez au robot d'exploration l'accès à la clé de chiffrement des données.

Si le compartiment S3 est chiffré par une AWS KMS clé, accordez l'kms:Decryptautorisation sur la clé au rôle de service du robot d'exploration en y associant la politique suivante :

{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Administrateur du cloud

Accordez au IAM rôle dans le compte client et au robot d'exploration l'accès au catalogue de données.

  1. Connectez-vous à la console AWS de gestion et ouvrez la console AWS Glue.

  2. Dans le volet de navigation, sous Catalogue de données, sélectionnez Paramètres.

  3. Dans la section Autorisations, ajoutez l'instruction suivante, puis choisissez Enregistrer.

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : { "AWS" : [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action" : "glue:*", "Resource" : [ "arn:aws:glue:<region>:<data account id>:catalog", "arn:aws:glue:<region>:<data account id>:database/*", "arn:aws:glue:<region>:<data account id>:table/*" ] } ] }

Cette politique autorise toutes les actions AWS Glue sur toutes les bases de données et tables du compte de données. Vous pouvez personnaliser la politique pour n'accorder que les autorisations requises aux principaux consommateurs. Par exemple, vous pouvez fournir un accès en lecture seule à des tables ou à des vues spécifiques d'une base de données.

Administrateur du cloud
TâcheDescriptionCompétences requises

Créez une référence nommée pour le catalogue de données.

Pour créer une référence de catalogue de données nommée, utilisez CloudShellou une installation locale AWS CLI pour exécuter la commande suivante :

aws athena create-data-catalog --name <shared catalog name> --type GLUE --parameters catalog-id=<data account id>
Administrateur du cloud

Accordez au IAM rôle associé au compte client l'accès aux données.

Associez la politique suivante au IAM rôle dans le compte client pour accorder au rôle un accès multicompte aux données :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" }, { "Effect": "Allow", "Action": "glue:*", "Resource": [ "arn:aws:glue:<region>:<data account id>:catalog", "arn:aws:glue:<region>:<data account id>:database/*", "arn:aws:glue:<region>:<data account id>:table/*" ] } ] }

Ensuite, utilisez le modèle suivant pour spécifier quels utilisateurs peuvent accepter le IAM rôle dans sa politique de confiance :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<consumer account id>:user/<IAM user>" }, "Action": "sts:AssumeRole" } ] }

Enfin, accordez aux utilisateurs les autorisations nécessaires pour assumer le IAM rôle en attachant la même politique au groupe d'utilisateurs auquel ils appartiennent.

Administrateur du cloud

(Si nécessaire) Accordez au IAM rôle du compte client l'accès à la clé de chiffrement des données.

Si le compartiment S3 est chiffré par une AWS KMS clé, accordez l'kms:Decryptautorisation d'utiliser la clé pour le IAM rôle dans le compte client en y associant la politique suivante :

{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Administrateur du cloud

Passez au IAM rôle dans le compte client pour accéder aux données.

En tant que consommateur de données, passez au IAM rôle permettant d'accéder aux données du compte de données.

Consommateur de données

Accédez aux données.

Interrogez des données à l'aide d'Athena. Par exemple, ouvrez l'éditeur de requêtes Athena et exécutez la requête suivante :

SELECT * FROM <shared catalog name>.<database name>.<table name>

Au lieu d'utiliser une référence de catalogue nommée, vous pouvez également faire référence au catalogue par son Amazon Resource Name (ARN).

Remarque : Si vous utilisez une référence de catalogue dynamique dans une requête ou une vue, entourez-la de guillemets doubles évasifs (\ »). Par exemple :

SELECT * FROM \"glue:arn:aws:glue:<region>:<data account id>:catalog\".<database name>.<table name>

Pour plus d'informations, consultez la section Accès entre comptes aux catalogues de données AWS Glue dans le guide de l'utilisateur Amazon Athena.

Consommateur de données

Ressources connexes

Informations supplémentaires

Utiliser Lake Formation comme alternative au partage entre comptes

Vous pouvez également utiliser AWS Lake Formation pour partager l'accès aux objets du catalogue AWS Glue entre différents comptes. Lake Formation fournit un contrôle d'accès précis au niveau des colonnes et des lignes, un contrôle d'accès basé sur des balises, des tables gouvernées pour les ACID transactions et d'autres fonctionnalités. Bien que Lake Formation soit bien intégrée à Athéna, elle nécessite une configuration supplémentaire par rapport à l'approche basée uniquement sur ce modèleIAM. Nous vous recommandons d'envisager la décision d'utiliser Lake Formation ou des contrôles d'accès IAM uniquement dans le contexte plus large de l'architecture globale de votre solution. Les considérations incluent les autres services concernés et la manière dont ils s'intègrent aux deux approches.