

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.

# Gestion des autorisations sur les ensembles de données qui utilisent des métastores externes
<a name="data-sharing-hms"></a>

Grâce à la fédération des AWS Glue Data Catalog métadonnées (fédération du catalogue de données), vous pouvez connecter le catalogue de données à des métastores externes qui stockent les métadonnées de vos données Amazon S3 et gérer en toute sécurité les autorisations d'accès aux données à l'aide de. AWS Lake Formation Il n'est pas nécessaire de migrer les métadonnées du métastore externe vers le catalogue de données.

Le catalogue de données fournit un référentiel de métadonnées centralisé qui facilite la gestion et la découverte de données sur des systèmes disparates. Lorsque votre organisation gère les données du catalogue de données, vous pouvez les utiliser AWS Lake Formation pour contrôler l'accès à vos ensembles de données dans Amazon S3.

**Note**  
Actuellement, nous prenons uniquement en charge la fédération de métastores Apache Hive (version 3 et supérieure).

Pour configurer la fédération de catalogues de données, nous fournissons une application AWS Serverless Application Model (AWS SAM) appelée [GlueDataCatalogFederation- HiveMetastore](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:766175011753:applications/GlueDataCatalogFederation-HiveMetastore) dans le AWS Serverless Application Repository. 

L'implémentation de référence est fournie GitHub sous forme de projet open source sur [AWS Glue Data Catalog Federation - Hive Metastore](https://github.com/awslabs/aws-glue-data-catalog-federation).

L' AWS SAM application crée et déploie les ressources suivantes qui sont nécessaires pour connecter le catalogue de données au métastore Hive :
+ **Une AWS Lambda fonction** : héberge l'implémentation du service de fédération qui communique entre le catalogue de données et le métastore Hive. AWS Glue invoque cette fonction Lambda pour récupérer des objets de métadonnées depuis le métastore Hive.
+ **Amazon API Gateway**— Le point de connexion de votre métastore Hive qui agit comme un proxy pour acheminer toutes les invocations vers la fonction Lambda. 
+ Rôle **IAM : rôle** doté des autorisations nécessaires pour créer la connexion entre le catalogue de données et le métastore Hive.
+ **AWS Glue connection** — Amazon API Gateway Type de AWS Glue connexion qui stocke le Amazon API Gateway point de terminaison et un rôle IAM pour l'appeler. 

Lorsque vous interrogez des tables, le AWS Glue service effectue un appel d'exécution vers le métastore Hive et récupère les métadonnées. La fonction Lambda agit comme un traducteur entre le métastore Hive et le catalogue de données. 

Après avoir établi la connexion, afin de synchroniser les métadonnées du métastore Hive avec le catalogue de données, vous devez créer une base de données *fédérée dans le catalogue de données à l'aide des détails de connexion du métastore Hive, et mapper cette base* de données à la base de données Hive. Une base de données est qualifiée de base de données fédérée lorsqu'elle pointe vers une entité extérieure au catalogue de données.

Vous pouvez appliquer les autorisations de Lake Formation à l'aide du contrôle d'accès basé sur des balises et de la méthode des ressources nommées sur la base de données fédérée Comptes AWS AWS Organizations, et les partager entre plusieurs unités organisationnelles ()OUs. Vous pouvez également partager la base de données fédérée directement avec les principaux IAM depuis un autre compte.

 Vous pouvez définir des autorisations détaillées au niveau des colonnes, des lignes et des cellules à l'aide des filtres de données Lake Formation sur les tables Hive externes. Vous pouvez utiliser Amazon Athena, Amazon Redshift ou Amazon EMR pour interroger les tables Hive externes gérées par Lake Formation.

Pour plus d'informations sur le partage de données entre comptes et le filtrage des données, voir :
+ [Partage de données entre comptes dans Lake Formation](cross-account-permissions.md)
+ [Filtrage des données et sécurité au niveau des cellules dans Lake Formation](data-filtering.md)

**Étapes générales de fédération des métadonnées du catalogue de données**

1. Vous créez des utilisateurs et des rôles IAM dotés des autorisations appropriées pour déployer l' AWS SAM application et créer des bases de données fédérées.

1. Vous enregistrez l'emplacement des données Amazon S3 auprès de Lake Formation en sélectionnant l'`Enable Data Catalog federation`option pour les ensembles de données qui utilisent un métastore Hive externe. 

1. Vous configurez les paramètres de l' AWS SAM application (nom de AWS Glue connexion, URL du métastore Hive et paramètres de la fonction Lambda) et déployez l'application. AWS SAM 

1. L' AWS SAM application déploie les ressources nécessaires pour connecter le métastore Hive externe au catalogue de données. 

1. Pour appliquer les autorisations Lake Formation à la base de données et aux tables Hive, vous créez une base de données dans le catalogue de données à l'aide des détails de connexion au métastore Hive, et vous mappez cette base de données à la base de données Hive.

1. Accordez des autorisations sur les bases de données fédérées aux principaux de votre compte ou d'un autre compte. 

**Note**  
Vous pouvez connecter le catalogue de données à un mestastore Hive externe, créer des bases de données fédérées et exécuter des requêtes et des scripts ETL sur des bases de données et des tables Hive sans appliquer les autorisations de Lake Formation. Pour les données source dans Amazon S3 qui ne sont pas enregistrées auprès de Lake Formation, l'accès est déterminé par les politiques d'autorisation IAM pour Amazon S3 et AWS Glue les actions. 

Pour connaître les limitations, veuillez consulter [Considérations et limites relatives au partage des données du magasin de métadonnées Hive](notes-hms.md).

**Topics**
+ [Flux de travail](#hms-workflow)
+ [Conditions préalables à la connexion du catalogue de données au métastore Hive](hms-prerequisites.md)
+ [Connexion du catalogue de données à un métastore Hive externe](hms-setup.md)
+ [Ressources supplémentaires](additional-resources-hms.md)

## Flux de travail
<a name="hms-workflow"></a>

Le schéma suivant montre le flux de travail pour connecter le AWS Glue Data Catalog à un métastore Hive externe.

![\[Workflow diagram showing Hive metastore connection to AWS Glue Data Catalog with numbered steps.\]](http://docs.aws.amazon.com/fr_fr/lake-formation/latest/dg/images/hms-workflow.png)


1. Un directeur soumet une requête à l'aide d'un service intégré tel qu'Athena ou Redshift Spectrum.

1. Le service intégré appelle le catalogue de données pour obtenir les métadonnées, qui à son tour appelle le point de terminaison du métastore Hive disponible derrière Amazon API Gateway, et reçoit les réponses aux demandes de métadonnées.

1. Le service intégré envoie la demande à Lake Formation pour vérifier les informations de la table et les informations d'identification pour accéder à la table.

1.  Lake Formation autorise la demande et fournit des informations d'identification temporaires à l'application intégrée, qui permet l'accès aux données. 

1. À l'aide des informations d'identification temporaires reçues de Lake Formation, le service intégré lit les données d'Amazon S3 et partage les résultats avec le principal.

# Conditions préalables à la connexion du catalogue de données au métastore Hive
<a name="hms-prerequisites"></a>

Pour connecter le AWS Glue Data Catalog à un métastore Apache Hive externe et configurer les autorisations d'accès aux données, vous devez remplir les conditions suivantes :
**Note**  
Nous recommandons qu'un administrateur de Lake Formation déploie l' AWS SAM application, et seul un utilisateur privilégié utilise la connexion au métastore Hive pour créer les bases de données fédérées correspondantes.

1. 

**Création des rôles IAM.**

**Pour déployer l' AWS SAM application**
   + Créez un rôle doté des autorisations nécessaires pour déployer les ressources (fonction Lambda Amazon API Gateway, rôle IAM et AWS Glue connexion) requises pour créer une connexion au métastore Hive.

**Pour créer des bases de données fédérées**

   Les autorisations suivantes sont requises pour les ressources :
   + `glue:CreateDatabase on resource arn:aws:glue:region:account-id:database/gluedatabasename`
   + `glue:PassConnection on resource arn:aws:glue:region:account-id:connection/hms_connection`

1. 

**Enregistrez le site Amazon S3 auprès de Lake Formation.**

   Pour utiliser Lake Formation afin de gérer et de sécuriser les données de votre lac de données, vous devez enregistrer l'emplacement Amazon S3 contenant les données des tables du métastore Hive auprès de Lake Formation. Lake Formation peut ainsi vendre des informations d'identification à des services AWS d'analyse tels qu'Athena, Redshift Spectrum et Amazon EMR.

   Pour plus d'informations sur l'enregistrement d'un site Amazon S3, consultez[Ajouter un emplacement Amazon S3 à votre lac de données](register-data-lake.md).

   Lorsque vous enregistrez l'emplacement Amazon S3, cochez la **case Enable Data Catalog Federation** pour autoriser Lake Formation à assumer un rôle d'accès aux tables d'une base de données fédérée.  
![\[Register location form for AWS Lake Formation with Amazon S3 path and IAM role options.\]](http://docs.aws.amazon.com/fr_fr/lake-formation/latest/dg/images/hms-register-s3.png)

   Pour plus d'informations sur l'enregistrement d'un emplacement de données auprès de Lake Formation, consultez[Configurer un emplacement Amazon S3 pour votre lac de données](initial-lf-config.md#register-s3-location).

1. 

**Utilisez la bonne version d'Amazon EMR.**

   Pour utiliser Amazon EMR avec les bases de données de métastore Hive fédérées, vous devez disposer de la version 3.x ou supérieure de Hive et de la version 6.x ou supérieure d'Amazon EMR.

# Connexion du catalogue de données à un métastore Hive externe
<a name="hms-setup"></a>

[Pour le connecter AWS Glue Data Catalog à un métastore Hive, vous devez déployer une AWS SAM application appelée -. GlueDataCatalogFederation HiveMetastore](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:766175011753:applications/GlueDataCatalogFederation-HiveMetastore) Il crée les ressources nécessaires pour connecter le métastore Hive externe au catalogue de données. Vous pouvez accéder à l' AWS SAM application dans le AWS Serverless Application Repository.

L' AWS SAM application crée la connexion pour le métastore Hive derrière Amazon API Gateway à l'aide d'une fonction Lambda. L' AWS SAM application utilise un identifiant de ressource uniforme (URI) comme entrée par l'utilisateur et connecte le métastore Hive externe au catalogue de données. Lorsqu'un utilisateur exécute une requête sur des tables Hive, le catalogue de données appelle le point de terminaison API Gateway. Le point de terminaison invoque la fonction Lambda pour récupérer les métadonnées des tables Hive.

**Pour connecter le catalogue de données au métastore Hive et configurer les autorisations**

1. 

**Déployez AWS SAM l'application.**

   1. Connectez-vous au AWS Management Console et ouvrez le AWS Serverless Application Repository.

   1. Dans le volet de navigation, choisissez **Applications**.

   1. Choisissez **Applications publiques**.

   1. Sélectionnez l'option **Show apps that create custom IAM roles or resource policies** (Afficher les applications qui créent des rôles IAM ou des politiques de ressources personnalisés). 

   1. Dans le champ de recherche, entrez le nom **GlueDataCatalogFederation- HiveMetastore**. 

   1. Choisissez l'HiveMetastoreapplication **GlueDataCatalogFederation-**.

   1. Sous **Paramètres de l'application**, entrez les paramètres minimaux requis suivants pour votre fonction Lambda :
      + **Nom de l'application** : nom de votre AWS SAM application.
      + **GlueConnectionName**- Un nom pour la connexion.
      + **HiveMetastoreURIs**- L'URI de votre hôte de métastore Hive.
      + **LambdaMemory**- La quantité de mémoire Lambda en Mo comprise entre 128 et 10240. La valeur par défaut est 1024.
      + **LambdaTimeout**- Durée maximale d'invocation Lambda en secondes. La valeur par défaut est 30.
      + **VPCSecurityGroupIds**et **VPCSubnetidentifiants** : informations relatives au VPC sur lequel se trouve le métastore Hive.

   1. Sélectionnez **I acknowledge that this app creates custom IAM roles and resource policies** (Je reconnais que cette application crée des politiques de ressources et rôles IAM personnalisés). Pour de plus amples informations, veuillez cliquer sur le lien **Info**.

   1. En bas à droite de la section **Application settings** (Paramètres de l'application), choisissez **Deploy** (Déployer). Lorsque le déploiement est terminé, la fonction Lambda apparaît dans la section **Resources** (Ressources) dans la console Lambda.

    L'application est déployée sur Lambda. Son nom est précédé de **serverlessrepo-** pour indiquer que l'application a été déployée à partir du. AWS Serverless Application Repository La sélection de l'application vous amène à la page **Ressources** où chacune des ressources de l'application qui ont été déployées est répertoriée. Les ressources incluent la fonction Lambda qui permet la communication entre le catalogue de données et le métastore Hive, la AWS Glue connexion et d'autres ressources nécessaires à la fédération de bases de données. 

1. 

**Créez une base de données fédérée dans le catalogue de données.**

   Après avoir créé une connexion au métastore Hive, vous pouvez créer des bases de données fédérées dans le catalogue de données qui pointent vers les bases de données du métastore Hive externes. Vous devez créer une base de données correspondante dans le catalogue de données pour chaque base de données de métastore Hive que vous connectez au catalogue de données. 

------
#### [ Lake Formation console ]

   1. Sur la page **Partage de données**, choisissez l'onglet **Bases de données partagées**, puis sélectionnez **Créer une base de données**.

   1. Pour **Nom de la connexion**, choisissez le nom de votre connexion au métastore Hive dans le menu déroulant.

   1. Entrez un nom de base de données unique et l'identifiant de source de fédération pour la base de données. Il s'agit du nom que vous utilisez dans vos instructions SQL lorsque vous interrogez des tables. Le nom peut comporter un maximum de 255 caractères et doit être unique au sein de votre compte. 

   1. Choisissez **Créer une base de données**.

------
#### [ AWS CLI ]

   ```
   aws glue create-database \
   '{
    "CatalogId": "<111122223333>",
     "database-input": {
       "Name":"<fed_glue_db>",
       "FederatedDatabase":{
           "Identifier":"<hive_db_on_emr>",
           "ConnectionName":"<hms_connection>"
        }
      }
    }'
   ```

------

1. 

**Affichez les tables de la base de données fédérée.**

   Après avoir créé la base de données fédérée, vous pouvez consulter la liste des tables de votre métastore Hive à l'aide de la console Lake Formation ou du. AWS CLI

------
#### [ Lake Formation console ]

   1. Sélectionnez le nom de la base de données dans l'onglet **Bases de données partagées**.

   1. Sur la page **Bases** de données, choisissez **Afficher les tables**.

------
#### [ AWS CLI ]

   Les exemples suivants montrent comment récupérer la définition de connexion, le nom de la base de données et certaines ou toutes les tables de la base de données. Remplacez l'ID du catalogue de données par l' Compte AWS ID valide que vous avez utilisé pour créer la base de données. Remplacez `hms_connection` par le nom de la connexion.

   ```
   aws glue get-connection \
   --name <hms_connection>  \       
   --catalog-id 111122223333
   ```

   ```
   aws glue get-database \
   --name <fed_glu_db> \             
   --catalog-id 111122223333
   ```

   ```
   aws glue get-tables \
   --database-name <fed_glue_db> \
   --catalog-id 111122223333
   ```

   ```
   aws glue get-table \
   --database-name <fed_glue_db> \
   --name <hive_table_name> \
   --catalog-id 111122223333
   ```

------

1. 

**Octroyez les autorisations.**

    Après avoir créé la base de données, vous pouvez accorder des autorisations à d'autres utilisateurs et rôles IAM dans votre compte ou à Comptes AWS des organisations externes. Vous ne pourrez pas accorder d'autorisations d'écriture (insertion, suppression) et de métadonnées (modification, suppression, création) sur les bases de données fédérées. Pour plus d'informations sur l'octroi d'autorisations, consultez[Gestion des autorisations relatives à Lake Formation](managing-permissions.md). 

1. 

**Interrogez les bases de données fédérées.**

   Après avoir accordé les autorisations, les utilisateurs peuvent se connecter et commencer à interroger la base de données fédérée à l'aide d'Athena et d'Amazon Redshift. Les utilisateurs peuvent désormais utiliser le nom de la base de données locale pour faire référence à la base de données Hive dans les requêtes SQL.

   **Exemple de syntaxe Amazon Athena de requête**

   `fed_glue_db`Remplacez-le par le nom de base de données locale que vous avez créé précédemment.

    `Select * from fed_glue_db.customers limit 10;`

# Ressources supplémentaires
<a name="additional-resources-hms"></a>

Le billet de blog suivant contient des instructions détaillées pour configurer les autorisations de Lake Formation sur une base de données et des tables de métastore Hive, et pour les interroger à l'aide d'Athena. Nous illustrons également un cas d'utilisation du partage entre comptes, dans lequel un responsable de Lake Formation inscrit sur le compte producteur A partage une base de données Hive fédérée et des tables en utilisant le tag LF sur le compte client B. 
+ [Interrogez votre métastore Apache Hive avec des autorisations AWS Lake Formation](https://aws.amazon.com/blogs/big-data/query-your-apache-hive-metastore-with-aws-lake-formation-permissions/)