

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.

# Configuration de l'accès entre comptes aux catalogues de AWS Glue données
<a name="security-iam-cross-account-glue-catalog-access"></a>

Vous pouvez utiliser la fonction de AWS Glue catalogue multi-comptes d'Athena pour enregistrer un AWS Glue catalogue à partir d'un compte autre que le vôtre. Après avoir configuré les autorisations IAM requises pour AWS Glue et enregistré le catalogue en tant que ressource [DataCatalog](https://docs.aws.amazon.com/athena/latest/APIReference/API_DataCatalog.html) Athena, vous pouvez utiliser Athena pour exécuter des requêtes inter-comptes. Pour plus d'informations sur l'utilisation de la console Athena pour enregistrer un catalogue à partir d'un autre compte, consultez [Enregistrement d’un catalogue de données à partir d’un autre compte](data-sources-glue-cross-account.md).

Pour plus d'informations sur l'accès multicompte dans AWS Glue, consultez la section [Octroi d'un accès multicompte](https://docs.aws.amazon.com/glue/latest/dg/cross-account-access.html) dans le guide du *AWS Glue développeur*.

## Avant de commencer
<a name="security-iam-cross-account-glue-catalog-access-before-you-start"></a>

Étant donné que cette fonctionnalité utilise les `DataCatalog` ressources APIs et fonctionnalités existantes d'Athena pour permettre l'accès entre comptes, nous vous recommandons de lire les ressources suivantes avant de commencer :
+ [Connexion aux sources de données](work-with-data-stores.md)- Contient des rubriques sur l'utilisation d'Athena avec des sources de catalogue de données AWS Glue, Hive ou Lambda.
+ [Exemple de politiques de catalogue de données](datacatalogs-example-policies.md) – Indique comment écrire des politiques qui contrôlent l'accès aux catalogues de données.
+ [Utilisez les AWS CLI métastores with Hive](datastores-hive-cli.md)- Montre comment utiliser les métastores AWS CLI with Hive, mais contient des cas d'utilisation applicables à d'autres sources de données.

## Considérations et restrictions
<a name="security-iam-cross-account-glue-catalog-access-considerations-and-limitations"></a>

Actuellement, l'accès au AWS Glue catalogue entre comptes Athena présente les limites suivantes :
+ Cette fonctionnalité n'est disponible que Régions AWS lorsque la version 2 ou ultérieure du moteur Athena est prise en charge. Pour plus d'informations sur les versions du moteur Athena, voir [Gestion des versions du moteur Athena](engine-versions.md). Pour mettre à niveau la version du moteur pour un groupe de travail, veuillez consulter la rubrique [Modification des versions du moteur Athena](engine-versions-changing.md).
+ Lorsque vous enregistrez un autre compte sur votre compte, vous créez une `DataCatalog` ressource régionale liée aux données de l'autre compte dans cette région en particulier uniquement. AWS Glue Data Catalog 
+ Actuellement, les instructions `CREATE VIEW` qui comprennent un catalogue AWS Glue inter-comptes ne sont pas prises en charge.
+ Les catalogues chiffrés à l'aide de clés AWS gérées ne peuvent pas être consultés sur plusieurs comptes. Utilisez des clés gérées par le client (`KMS_CMK`) pour les catalogues pour lesquels vous souhaitez appliquer l’interrogation intercompte. Pour plus d'informations sur les différences entre les clés gérées par le client et les clés AWS gérées, consultez la section [Clés et AWS clés client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt                     ) dans le *guide du AWS Key Management Service développeur*. 

## Mise en route
<a name="security-iam-cross-account-glue-catalog-getting-started"></a>

Dans le scénario suivant, le compte « emprunteur » (666666666666) souhaite exécuter une `SELECT` requête faisant référence au AWS Glue catalogue appartenant au compte « propriétaire » (99999999999999), comme dans l'exemple suivant :

```
SELECT * FROM ownerCatalog.tpch1000.customer
```

Dans la procédure suivante, les étapes 1a et 1b montrent comment donner au compte emprunteur l'accès aux AWS Glue ressources du compte propriétaire, tant du côté de l'emprunteur que du côté du propriétaire. L'exemple accorde l'accès à la base de données `tpch1000` et à la table `customer`. Modifiez ces exemples de noms pour répondre à vos besoins.

### Étape 1a : créer un rôle d'emprunteur avec une politique d'accès aux ressources du AWS Glue propriétaire
<a name="security-iam-cross-account-glue-catalog-access-step-1a"></a>

Pour créer un rôle de compte d'emprunteur avec une politique d'accès aux AWS Glue ressources du compte propriétaire, vous pouvez utiliser la console Gestion des identités et des accès AWS (IAM) ou l'API [IAM](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html). La procédure suivante utilise la console IAM.

**Pour créer un rôle d'emprunteur et une politique permettant d'accéder aux ressources du AWS Glue compte propriétaire**

1. Connectez-vous à la console IAM depuis le compte [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)de l'emprunteur.

1. Dans le panneau de navigation, développez **Gestion des accès**, puis choisissez **Politiques**.

1. Choisissez **Create Policy** (Créer une politique).

1. Dans **Éditeur de politique**, choisissez **JSON**.

1. Entrez la politique suivante dans l’éditeur de requête, puis modifiez-la en fonction de vos besoins :

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "glue:*",
               "Resource": [
                   "arn:aws:glue:us-east-1:999999999999:catalog",
                   "arn:aws:glue:us-east-1:999999999999:database/tpch1000",
                   "arn:aws:glue:us-east-1:999999999999:table/tpch1000/customer"
               ]
           }
       ]
   }
   ```

------

1. Choisissez **Suivant**.

1. Sur la page **Vérifier et créer**, dans **Nom de la politique**, entrez le nom de la politique (par exemple, **CrossGluePolicyForBorrowerRole**).

1. Choisissez **Create Policy** (Créer une politique).

1. Dans le panneau de navigation, choisissez **Rôles**.

1. Sélectionnez **Create role** (Créer un rôle).

1. Sur la page **Sélectionner une entité de confiance**, choisissez **Compte AWS**, puis **Suivant**.

1. Sur la page **Ajouter des autorisations**, entrez le nom de la politique que vous avez créée dans la zone de recherche (par exemple, **CrossGluePolicyForBorrowerRole**).

1. Cochez la case en regard du nom de la politique, puis choisissez **Suivant**.

1. Sur la page **Name, review, and create (Nommer, réviser et créer)** pour le **Role name (nom de rôle)**, saisissez un nom de rôle (par exemple **CrossGlueBorrowerRole**).

1. Choisissez **Créer un rôle**.

### Étape 1b : créer une politique du propriétaire pour accorder AWS Glue l'accès à l'emprunteur
<a name="security-iam-cross-account-glue-catalog-access-step-1b"></a>

Pour accorder l' AWS Glue accès depuis le compte propriétaire (999999999999) au rôle de l'emprunteur, vous pouvez utiliser la console ou l' AWS Glue opération API. AWS Glue [PutResourcePolicy](https://docs.aws.amazon.com/glue/latest/webapi/API_PutResourcePolicy.html) La procédure suivante utilise la AWS Glue console.

**Pour autoriser le propriétaire à AWS Glue accéder au compte de l'emprunteur**

1. Connectez-vous à la AWS Glue console [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)depuis le compte du propriétaire.

1. Dans le panneau de navigation, développez **Catalogue de données**, puis choisissez **Paramètres du catalogue**.

1. Dans **Autorisations**, saisissez une politique telle que la suivante. Pour*rolename*, entrez le rôle créé par l'emprunteur à l'étape 1a (par exemple,**CrossGlueBorrowerRole**). Si vous voulez augmenter la portée de l'autorisation, vous pouvez utiliser le caractère générique `*` pour les types de ressources base de données et table.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::666666666666:user/username",
                       "arn:aws:iam::666666666666:role/rolename"
                   ]
               },
               "Action": "glue:*",
               "Resource": [
                   "arn:aws:glue:us-east-1:999999999999:catalog",
                   "arn:aws:glue:us-east-1:999999999999:database/tpch1000",
                   "arn:aws:glue:us-east-1:999999999999:table/tpch1000/customer"
               ]
           }
       ]
   }
   ```

------

Une fois la procédure terminée, il est recommandé d’utiliser l’[API AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api.html) pour effectuer quelques tests d’appel intercompte afin de vérifier que les autorisations sont correctement configurées.

### Étape 2 : L'emprunteur enregistre le AWS Glue Data Catalog compte qui appartient au propriétaire
<a name="security-iam-cross-account-glue-catalog-access-step-2"></a>

La procédure suivante vous montre comment utiliser la console Athena pour configurer le AWS Glue Data Catalog dans le compte Amazon Web Services propriétaire en tant que source de données. Pour obtenir des informations sur l'utilisation des opérations API au lieu de la console pour enregistrer le catalogue, consultez [(Facultatif) Utilisation de l’API pour enregistrer un catalogue de données Athena appartenant au compte propriétaire](#security-iam-cross-account-glue-catalog-access-step-2-api).

**Pour enregistrer un compte AWS Glue Data Catalog appartenant à un autre compte**

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.  
![\[Choisissez le menu d'expansion.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/nav-pane-expansion.png)

1. Développez **Administration**, puis choisissez **Sources de données**.

1. Dans le coin supérieur droit, choisissez **Create data source** (Créer une source de données).

1. Sur la page **Choisir une source** de **données, pour Sources** de données, sélectionnez **S3 - AWS Glue Data Catalog**, puis **Next**.

1. Sur la page **Enter data source details** (Saisir les détails de la source de données), dans la section **AWS Glue Data Catalog**, pour **Choisir un AWS Glue Data Catalog**, choisissez **AWS Glue Data Catalog dans un autre compte**.

1. Pour **Data source details** (Détails de la source de données), saisissez les informations suivantes :
   + **Data source name** (Nom de la source de données) – Saisissez le nom que vous souhaitez utiliser dans vos requêtes SQL pour faire référence au catalogue de données dans l'autre compte.
   + **Description** – (Facultative) Saisissez une description du catalogue de données dans l'autre compte.
   + **ID du catalogue** – Saisissez l'ID de compte Amazon Web Services à 12 chiffres du compte auquel appartient le catalogue de données. L'ID de compte Amazon Web Services est l'ID de catalogue.

1. (Facultatif) Développez **Identifications**, saisissez les paires clé-valeur que vous voulez associer à la source de données. Pour en savoir plus sur les identifications, consultez [Balisage des ressources Athena](tags.md).

1. Choisissez **Suivant**.

1. Sur la page **Review and create** (Vérifier et créer), vérifiez les informations que vous avez fournies, puis choisissez **Create data source** (Créer une source de données). La page **Data source details** (Détails de la source de données) répertorie les bases de données et les balises du catalogue de données que vous avez enregistré.

1. Sélectionnez **Sources de données et catalogues**. Le catalogue de données que vous avez enregistré est répertorié dans la colonne **Data source name** (Nom de la source de données).

1. Pour afficher ou modifier les informations relatives au catalogue de données, choisissez le catalogue, puis choisissez **Actions**, **Edit** (Modifier).

1. Pour supprimer le nouveau catalogue de données, choisissez le catalogue, puis choisissez **Actions**, **Delete** (Supprimer).

### Étape 3 : l'emprunteur soumet une requête
<a name="security-iam-cross-account-glue-catalog-access-step-4"></a>

L'emprunteur soumet une requête qui fait référence au catalogue à l'aide du*catalog*. *database*. *table*syntaxe, comme dans l'exemple suivant :

```
SELECT * FROM ownerCatalog.tpch1000.customer
```

Au lieu d'utiliser la syntaxe complète, l'emprunteur peut également spécifier le catalogue de manière contextuelle en le transmettant via le. [QueryExecutionContext](https://docs.aws.amazon.com/athena/latest/APIReference/API_QueryExecutionContext.html)

## (Facultatif) Configuration d’autorisations Amazon S3 supplémentaires
<a name="security-iam-cross-account-glue-catalog-access-additional-s3-permissions"></a>
+ Si le compte emprunteur utilise une requête Athena pour écrire de nouvelles données dans une table du compte propriétaire, le propriétaire n’aura pas automatiquement accès à ces données dans Amazon S3, même si la table se trouve dans son compte. En effet, sauf configuration contraire, l’emprunteur est le propriétaire d’objet des informations dans Amazon S3. Pour accorder au propriétaire l’accès aux données, définissez les autorisations sur les objets en conséquence lors d’une étape supplémentaire.
+ Certaines opérations DDL inter-comptes comme [MSCK REPAIR TABLE](msck-repair-table.md) nécessitent des autorisations Simple Storage Service (Amazon S3). Par exemple, si le compte emprunteur effectue une opération `MSCK REPAIR` intercompte sur une table du compte propriétaire dont les données se trouvent dans un compartiment S3 du compte propriétaire, ce compartiment doit accorder des autorisations au rôle assumé par l’emprunteur pour que la requête aboutisse.

Pour plus d'informations sur l'octroi des autorisations de compartiment, consultez la section [Comment je définir les autorisations de compartiment ACL ?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/set-bucket-permissions.html) du *Guide de l'utilisateur Amazon Simple Storage Service*.

## (Facultatif) Utilisation dynamique d’un catalogue
<a name="security-iam-cross-account-glue-catalog-access-dynamic-catalogs"></a>

Dans certains cas, vous souhaitez peut-être effectuer rapidement des tests sur un catalogue AWS Glue inter-comptes sans passer par l'étape préalable de l'enregistrement. Vous pouvez effectuer dynamiquement des requêtes inter-comptes sans créer l'objet ressource `DataCatalog` si les autorisations IAM et Simple Storage Service (Amazon S3) requises sont correctement configurées comme décrit précédemment dans ce document.

Pour référencer explicitement un catalogue sans enregistrement, utilisez la syntaxe de l'exemple suivant :

```
SELECT * FROM "glue:arn:aws:glue:us-east-1:999999999999:catalog".tpch1000.customer
```

Utilisez le format « `glue:<arn>` », où `<arn>` est l'[ARN AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/glue-specifying-resource-arns.html#data-catalog-resource-arns) que vous voulez utiliser. Dans l'exemple, Athena utilise cette syntaxe pour pointer dynamiquement vers le catalogue de AWS Glue données du compte 999999999999 comme si vous aviez créé un objet distinct pour celui-ci. `DataCatalog`

### Remarques sur l'utilisation des catalogues dynamiques
<a name="security-iam-cross-account-glue-catalog-access-notes-dynamic-catalogs"></a>

Lorsque vous utilisez des catalogues dynamiques, rappelez-vous les points suivants.
+ L'utilisation d'un catalogue dynamique nécessite les autorisations IAM que vous utilisez normalement pour les opérations de l'API Athena Data Catalog (Catalogue de données Athena). La principale différence est que le nom de la ressource Data Catalog (Catalogue de données) suit la convention d'appellation `glue:*`.
+ L'ARN du catalogue doit appartenir à la même région que celle où la requête est exécutée.
+ Lorsqu'un catalogue dynamique est utilisé dans une requête ou une vue DML, il doit être entouré de guillemets doubles échappés (`\"`). Lorsqu'un catalogue dynamique est utilisé dans une requête DDL, il doit être entouré de guillemets simples inversés (```).

## (Facultatif) Utilisation de l’API pour enregistrer un catalogue de données Athena appartenant au compte propriétaire
<a name="security-iam-cross-account-glue-catalog-access-step-2-api"></a>

Au lieu d'utiliser la console Athena comme décrit à l'étape 2, il est possible d'utiliser les opérations API pour enregistrer le catalogue de données appartenant au compte propriétaire.

Le créateur de la [DataCatalog](https://docs.aws.amazon.com/athena/latest/APIReference/API_DataCatalog.html)ressource Athena doit disposer des autorisations nécessaires pour exécuter l'opération d'API [CreateDataCatalog](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateDataCatalog.html)Athena. En fonction de vos besoins, l'accès à des opérations API supplémentaires peut être nécessaire. Pour de plus amples informations, veuillez consulter [Exemple de politiques de catalogue de données](datacatalogs-example-policies.md).

Le corps de `CreateDataCatalog` demande suivant enregistre un AWS Glue catalogue pour un accès entre comptes :

```
# Example CreateDataCatalog request to register a cross-account Glue catalog:
{
    "Description": "Cross-account Glue catalog",
    "Name": "ownerCatalog",
    "Parameters": {"catalog-id" : "999999999999"  # Owner's account ID
    },
    "Type": "GLUE"
}
```

L'exemple de code suivant utilise un client Java pour créer l'objet `DataCatalog`.

```
# Sample code to create the DataCatalog through Java client
CreateDataCatalogRequest request = new CreateDataCatalogRequest()
    .withName("ownerCatalog")
    .withType(DataCatalogType.GLUE)
    .withParameters(ImmutableMap.of("catalog-id", "999999999999"));

athenaClient.createDataCatalog(request);
```

Après ces étapes, l'emprunteur devrait voir `ownerCatalog` quand il appelle l'opération [ListDataCatalogs](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListDataCatalogs.html)API.

## Ressources supplémentaires
<a name="security-iam-cross-account-glue-catalog-access-additional-resources"></a>
+ [Enregistrement d’un catalogue de données à partir d’un autre compte](data-sources-glue-cross-account.md)
+ [Configurez l'accès entre comptes à un compte partagé à AWS Glue Data Catalog l'aide d'Amazon](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena.html) Athena dans *AWS le guide Prescriptive* Guidance Patterns.
+ [Interrogez plusieurs comptes AWS Glue Data Catalogà l'aide d'Amazon](https://aws.amazon.com/blogs/big-data/query-cross-account-aws-glue-data-catalogs-using-amazon-athena/) Athena sur *AWS le blog Big Data*
+ [Octroi d'un accès intercompte](https://docs.aws.amazon.com/glue/latest/dg/cross-account-access.html) dans le *Guide du développeur AWS Glue * 