

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 identités et des accès dans Athena
<a name="security-iam-athena"></a>

Amazon Athena utilise des politiques [Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) pour restreindre l'accès aux opérations Athena. Pour une liste complète des autorisations pour Athena, consultez la rubrique [Actions, ressources et clés de condition pour Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) de la section *Référence pour l'autorisation des services*.

Chaque fois que vous utilisez des politiques IAM, veillez à respecter les bonnes pratiques IAM. Pour plus d'informations, consultez la rubrique [Bonnes pratiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) du *Guide de l'utilisateur IAM*.

Parmi les autorisations requises pour exécuter les requêtes Athena figurent les suivantes :
+ Emplacements Simple Storage Service (Amazon S3) où sont stockées les données sous-jacentes à interroger. Pour plus d'informations, consultez la section [Identity and access management dans Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) du *Guide de l'utilisateur Amazon Simple Storage Service*.
+ Les métadonnées et les ressources que vous y stockez AWS Glue Data Catalog, telles que les bases de données et les tables, y compris les actions supplémentaires pour les métadonnées chiffrées. Pour plus d'informations, consultez la rubrique [Configuration des autorisations IAM pour AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/getting-started-access.html) et [Configuration du chiffrement dans AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/set-up-encryption.html) du *Guide du développeur AWS Glue *.
+ Actions API dans Athena. Pour obtenir une liste des actions API dans Athena, consultez la rubrique [Actions](https://docs.aws.amazon.com/athena/latest/APIReference/API_Operations.html) de la section *Référence API d'Amazon Athena*.

Les rubriques suivantes fournissent de plus amples informations sur les autorisations pour des zones spécifiques d'Athena.

**Topics**
+ [AWS politiques gérées](security-iam-awsmanpol.md)
+ [Périmètres de données](data-perimeters.md)
+ [Accès via les connexions JDBC et ODBC](policy-actions.md)
+ [Contrôle de l’accès à Amazon S3 depuis Athena](s3-permissions.md)
+ [Accès inter-comptes aux compartiments S3](cross-account-permissions.md)
+ [Accès aux bases de données et aux tables dans AWS Glue](fine-grained-access-to-glue-resources.md)
+ [Accès aux catalogues de AWS Glue données entre comptes](security-iam-cross-account-glue-catalog-access.md)
+ [Accès aux métadonnées chiffrées dans le catalogue de données](access-encrypted-data-glue-data-catalog.md)
+ [Accès aux groupes de travail et identifications](workgroups-access.md)
+ [Utilisation de politiques IAM pour contrôler l’accès aux groupes de travail.](workgroups-iam-policy.md)
+ [Groupes de travail compatibles avec IAM Identity Center](workgroups-identity-center.md)
+ [Configuration d’un chiffrement minimal](workgroups-minimum-encryption.md)
+ [Configuration de l’accès aux instructions préparées](security-iam-athena-prepared-statements.md)
+ [Utiliser les touches CalledVia contextuelles](security-iam-athena-calledvia.md)
+ [Autorisation de l’accès à un connecteur de données Athena pour un metastore Hive externe](hive-metastore-iam-access.md)
+ [Autorisation d'accès des fonctions Lambda aux métastores Hive externes](hive-metastore-iam-access-lambda.md)
+ [Autorisations requises pour créer un connecteur et un catalogue Athena](athena-catalog-access.md)
+ [Autorisation d'accès à la requête fédérée Athena](federated-query-iam-access.md)
+ [Autoriser l'accès à UDFs](udf-iam-access.md)
+ [Autorisation d’accès pour les requêtes ML avec Athena](machine-learning-iam-access.md)
+ [Activation de l’accès fédéré à l’API Athena](access-federation-saml.md)

# AWS politiques gérées pour Amazon Athena
<a name="security-iam-awsmanpol"></a>

Une politique AWS gérée est une politique autonome créée et administrée par AWS. AWS les politiques gérées sont conçues pour fournir des autorisations pour de nombreux cas d'utilisation courants afin que vous puissiez commencer à attribuer des autorisations aux utilisateurs, aux groupes et aux rôles.

N'oubliez pas que les politiques AWS gérées peuvent ne pas accorder d'autorisations de moindre privilège pour vos cas d'utilisation spécifiques, car elles sont accessibles à tous les AWS clients. Nous vous recommandons de réduire encore les autorisations en définissant des [politiques gérées par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) qui sont propres à vos cas d’utilisation.

Vous ne pouvez pas modifier les autorisations définies dans les politiques AWS gérées. Si les autorisations définies dans une politique AWS gérée sont AWS mises à jour, la mise à jour affecte toutes les identités principales (utilisateurs, groupes et rôles) auxquelles la politique est attachée. AWS est le plus susceptible de mettre à jour une politique AWS gérée lorsqu'une nouvelle politique Service AWS est lancée ou lorsque de nouvelles opérations d'API sont disponibles pour les services existants.

Pour plus d’informations, consultez [Politiques gérées par AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) dans le *Guide de l’utilisateur IAM*.

## Aspects à prendre en compte lors de l'utilisation de politiques gérées avec Athena
<a name="managed-policies-considerations"></a>

Les politiques gérées sont faciles à utiliser et sont automatiquement mises à jour avec les actions requises, à mesure que le service évolue. Lorsque vous utilisez des politiques gérées avec Athena, gardez à l'esprit les points suivants :
+ Pour autoriser ou refuser les actions du service Amazon Athena pour vous-même ou pour d'autres utilisateurs avec Gestion des identités et des accès AWS (IAM), vous attachez des politiques basées sur l'identité aux principaux, tels que les utilisateurs ou les groupes. 
+ Chaque politique basée sur une identité se compose d'instructions qui définissent les actions qui sont autorisées ou refusées. Pour plus d'informations et des step-by-step instructions relatives à l'attachement d'une politique à un utilisateur, consultez la section [Attacher des politiques gérées](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console) dans le *guide de l'utilisateur IAM*. Pour obtenir une liste des actions, consultez la [Référence d'API Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/).
+  Les politiques basées sur l'identité, *gérées par le client* et *en ligne*, vous permettent de spécifier des actions Athena plus détaillées au sein d'une politique pour affiner l'accès. Nous vous recommandons d'utiliser la politique `AmazonAthenaFullAccess` comme point de départ, puis d'autoriser ou de refuser des actions spécifiques figurant dans le manuel [Référence d'API Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). Pour de plus amples informations sur les politiques en ligne, consultez [Politiques gérées et politiques en ligne](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) dans le *Guide de l'utilisateur IAM*.
+ Si vous avez également des principaux qui se connectent en utilisant JDBC, vous devez fournir les informations d'identification du pilote JDBC à votre application. Pour de plus amples informations, veuillez consulter [Contrôle d’accès via des connexions JDBC et ODBC](policy-actions.md).
+ Si vous avez chiffré le catalogue de AWS Glue données, vous devez spécifier des actions supplémentaires dans les politiques IAM basées sur l'identité pour Athena. Pour de plus amples informations, veuillez consulter [Configurez l'accès depuis Athena aux métadonnées chiffrées dans AWS Glue Data Catalog](access-encrypted-data-glue-data-catalog.md).
+ Si vous créez et utilisez des groupes de travail, assurez-vous que vos politiques prévoient un accès pertinent aux actions du groupe de travail. Pour plus d'informations, consultez [Utilisation de politiques IAM pour contrôler l’accès aux groupes de travail.](workgroups-iam-policy.md) et [Exemple de politiques de groupe de travail](example-policies-workgroup.md). 

## AWS politique gérée : AmazonAthenaFullAccess
<a name="amazonathenafullaccess-managed-policy"></a>

La politique gérée par `AmazonAthenaFullAccess` accorde un accès complet à Athena.

Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :
+ Utilisateurs et groupes dans AWS IAM Identity Center :

  Créez un jeu d’autorisations. Suivez les instructions de la rubrique [Création d’un jeu d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) du *Guide de l’utilisateur AWS IAM Identity Center *.
+ Utilisateurs gérés dans IAM par un fournisseur d’identité :

  Créez un rôle pour la fédération d’identité. Suivez les instructions de la rubrique [Création d’un rôle pour un fournisseur d’identité tiers (fédération)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) dans le *Guide de l’utilisateur IAM*.
+ Utilisateurs IAM :
  + Créez un rôle que votre utilisateur peut assumer. Suivez les instructions de la rubrique [Création d’un rôle pour un utilisateur IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) dans le *Guide de l’utilisateur IAM*.
  + (Non recommandé) Attachez une politique directement à un utilisateur ou ajoutez un utilisateur à un groupe d’utilisateurs. Suivez les instructions de la rubrique [Ajout d'autorisations à un utilisateur (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) du *Guide de l'utilisateur IAM*.

### Groupes d'autorisations
<a name="amazonathenafullaccess-managed-policy-groupings"></a>

La politique est `AmazonAthenaFullAccess` regroupée dans les ensembles d'autorisations suivants.
+ **`athena`** : permet aux principaux d'accéder aux ressources Athena.
+ **`glue`**— Permet aux principaux d'accéder aux AWS Glue catalogues, aux bases de données, aux tables et aux partitions. Cela est nécessaire pour que le principal puisse utiliser le AWS Glue Data Catalog s avec Athéna.
+ **`s3`** : permet au principal d'écrire et de lire les résultats des requêtes à partir de Simple Storage Service (Amazon S3), de lire les exemples de données Athena disponibles publiquement qui résident dans Simple Storage Service (Amazon S3) et de répertorier les compartiments. Ceci est nécessaire pour que le principal puisse utiliser Athena pour travailler avec Simple Storage Service (Amazon S3).
+ **`sns`** : permet aux principaux de répertorier les rubriques Amazon SNS et d'obtenir les attributs de rubrique. Cela permet aux principaux d'utiliser les rubriques Amazon SNS avec Athena à des fins de surveillance et d'alerte.
+ **`cloudwatch`**— Permet aux principaux de créer, de lire et de supprimer des CloudWatch alarmes. Pour de plus amples informations, veuillez consulter [Utiliser CloudWatch et EventBridge surveiller les requêtes et contrôler les coûts](workgroups-control-limits.md).
+ **`lakeformation`** : permet aux principaux de demander des informations d'identification temporaires pour accéder aux données dans un emplacement de lac de données enregistré auprès de Lake Formation. Pour plus d'informations, consultez la rubrique [Contrôle d'accès aux données sous-jacentes](https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-underlying-data.html) du *Guide du développeur AWS Lake Formation*.
+ **`datazone`**— Permet aux principaux de répertorier les DataZone projets, domaines et environnements Amazon. Pour plus d'informations sur l'utilisation DataZone dans Athena, consultez. [Utiliser Amazon DataZone dans Athena](datazone-using.md)
+ **`pricing`**— Donne accès à AWS Billing and Cost Management. Pour plus d’informations, consultez [GetProducts](https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_pricing_GetProducts.html) dans la *Référence d’API AWS Billing and Cost Management *.

Pour consulter les autorisations associées à cette politique, reportez-vous [AmazonAthenaFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAthenaFullAccess.html)à la référence des politiques AWS gérées.

**Note**  
Vous devez autoriser explicitement l’accès aux compartiments Amazon S3 appartenant au service pour stocker des exemples de requêtes et des exemples de jeux de données. Pour de plus amples informations, veuillez consulter [Périmètres de données](data-perimeters.md).

## AWS politique gérée : AWSQuicksight AthenaAccess
<a name="awsquicksightathenaaccess-managed-policy"></a>

`AWSQuicksightAthenaAccess`donne accès aux actions dont Quick a besoin pour s'intégrer à Athena. Vous pouvez associer la politique `AWSQuicksightAthenaAccess` à vos identités IAM. N'associez cette politique qu'aux directeurs qui utilisent Quick with Athena. Cette politique comprend certaines actions pour Athena qui sont soit obsolètes et non incluses dans l'API publique actuelle, soit utilisées uniquement avec les pilotes JDBC et ODBC.

### Groupes d'autorisations
<a name="awsquicksightathenaaccess-managed-policy-groupings"></a>

La politique est `AWSQuicksightAthenaAccess` regroupée dans les ensembles d'autorisations suivants.
+ **`athena`** : permet au principal d'exécuter des requêtes sur les ressources Athena.
+ **`glue`**— Permet aux principaux d'accéder aux AWS Glue catalogues, aux bases de données, aux tables et aux partitions. Cela est nécessaire pour que le principal puisse utiliser le AWS Glue Data Catalog s avec Athéna.
+ **`s3`** : permet au principal d'écrire et de lire les résultats des requêtes depuis Simple Storage Service (Amazon S3).
+ **`lakeformation`** – Permet aux principaux de demander des informations d'identification temporaires pour accéder aux données dans un emplacement de lac de données enregistré auprès de Lake Formation. Pour plus d'informations, consultez la rubrique [Contrôle d'accès aux données sous-jacentes](https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-underlying-data.html) du *Guide du développeur AWS Lake Formation*.

Pour consulter les autorisations associées à cette politique, reportez-vous [AWSQuicksightAthenaAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSQuicksightAthenaAccess.html)à la référence des politiques AWS gérées.

## Athena met à jour ses politiques gérées AWS
<a name="managed-policies-updates"></a>

Consultez les détails des mises à jour des politiques AWS gérées pour Athena depuis que ce service a commencé à suivre ces modifications.


| Modifier | Description | Date | 
| --- | --- | --- | 
| [AWSQuicksightAthenaAccess](#awsquicksightathenaaccess-managed-policy) : mise à jour des politiques existantes | Les glue:GetCatalogs autorisations glue:GetCatalog et ont été ajoutées pour permettre aux utilisateurs d'Athena d'accéder aux catalogues SageMaker AI Lakehouse. | 2 janvier 2025 | 
| [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy) : mise à jour de la politique existante | Les glue:GetCatalogs autorisations glue:GetCatalog et ont été ajoutées pour permettre aux utilisateurs d'Athena d'accéder aux catalogues SageMaker AI Lakehouse. | 2 janvier 2025 | 
| [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy) : mise à jour de la politique existante |  Permet à Athena d'utiliser l' AWS Glue `GetCatalogImportStatus`API documentée publiquement pour récupérer le statut d'importation du catalogue.  | 18 juin 2024 | 
|  [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy) : mise à jour de la politique existante  |  Les `datazone:ListAccountEnvironments` autorisations `datazone:ListDomains``datazone:ListProjects`, et ont été ajoutées pour permettre aux utilisateurs d'Athena de travailler avec des DataZone domaines, des projets et des environnements Amazon. Pour de plus amples informations, veuillez consulter [Utiliser Amazon DataZone dans Athena](datazone-using.md).  | 3 janvier 2024 | 
|  [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy) : mise à jour de la politique existante  |  Les `glue:GetColumnStatisticsTaskRuns` autorisations`glue:StartColumnStatisticsTaskRun`,`glue:GetColumnStatisticsTaskRun`, et ont été ajoutées pour donner à Athena le droit d'appeler pour récupérer les statistiques relatives AWS Glue à la fonction d'optimisation basée sur les coûts. Pour de plus amples informations, veuillez consulter [Utilisation de l’optimiseur basé sur les coûts](cost-based-optimizer.md).  | 3 janvier 2024 | 
|  [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy) : mise à jour de la politique existante  |  Athena a ajouté `pricing:GetProducts` pour donner accès à AWS Billing and Cost Management. Pour plus d’informations, consultez [GetProducts](https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_pricing_GetProducts.html) dans la *Référence d’API AWS Billing and Cost Management *.  | 25 janvier 2023 | 
|  [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy) : mise à jour de la politique existante  |  Athena a été ajoutée `cloudwatch:GetMetricData` pour récupérer les valeurs CloudWatch métriques. Pour plus d'informations, consultez [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html)le *Amazon CloudWatch API Reference*.  | 14 novembre 2022 | 
|  [AmazonAthenaFullAccess](#amazonathenafullaccess-managed-policy) et [AWSQuicksightAthenaAccess](#awsquicksightathenaaccess-managed-policy) : mises à jour des politiques existantes  |  Athena a ajouté `s3:PutBucketPublicAccessBlock` pour permettre le blocage de l'accès public aux compartiments créés par Athena.  | 7 juillet 2021 | 
|  Athena a commencé à suivre les modifications  |  Athena a commencé à suivre les modifications apportées à ses politiques AWS gérées.  | 7 juillet 2021 | 

# Périmètres de données
<a name="data-perimeters"></a>

Un [périmètre de données](https://aws.amazon.com/identity/data-perimeters-on-aws/) est un ensemble de barrières d'autorisations dans votre AWS environnement que vous utilisez pour garantir que seules vos identités fiables accèdent aux ressources fiables des réseaux attendus. 

Amazon Athena utilise des compartiments Amazon S3 appartenant au service pour stocker des exemples de requêtes et des exemples de jeux de données. Si vous utilisez des périmètres de données pour contrôler l'accès à votre environnement, vous devez explicitement autoriser l'accès à ces ressources appartenant au service afin d'utiliser les fonctionnalités Athena correspondantes. 

 Le tableau suivant répertorie l'ARN du compartiment Amazon S3 auquel Athena doit accéder, les autorisations requises, l'identité utilisée par Athena et les fonctionnalités qui reposent sur le compartiment S3. Pour autoriser l'accès, remplacez `<region>` l'ARN du compartiment par votre nom actuel Région AWS et autorisez ce compartiment en fonction de vos contrôles d'accès Amazon S3. 


**Périmètres de données utilisés par Athena**  

| ARN des ressources | Autorisations requises | Identité utilisée pour l'accès | Scénarios d'accès | 
| --- | --- | --- | --- | 
|  arn:aws:s3:::athena-examples-<region>  | s3 : GetObjects3 : ListBucket | Le principal IAM accédant à Athena. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/data-perimeters.html)  | 

# Contrôle d’accès via des connexions JDBC et ODBC
<a name="policy-actions"></a>

Pour accéder à des ressources, telles qu'Athena Services AWS et les compartiments Amazon S3, fournissez les informations d'identification du pilote JDBC ou ODBC à votre application. Si vous utilisez le pilote JDBC ou ODBC, assurez-vous que la politique d'autorisations IAM comprend toutes les actions répertoriées dans [AWS politique gérée : AWSQuicksight AthenaAccess](security-iam-awsmanpol.md#awsquicksightathenaaccess-managed-policy).

Chaque fois que vous utilisez des politiques IAM, veillez à respecter les bonnes pratiques IAM. Pour plus d'informations, consultez la rubrique [Bonnes pratiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) du *Guide de l'utilisateur IAM*.

## Méthodes d’authentification
<a name="security-jdbc-odbc-access-authentication"></a>

Les pilotes Athena JDBC et ODBC prennent en charge l'authentification basée sur SAML 2.0, y compris les fournisseurs d'identité suivants :
+ Active Directory Federation Services (AD FS)
+ Azure Active Directory (AD)
+ Okta 
+ PingFederate

Pour plus d’informations, consultez les guides d’installation et de configuration des pilotes respectifs, téléchargeables au format PDF à partir des pages consacrées aux pilotes [JDBC](connect-with-jdbc.md) et [ODBC](connect-with-odbc.md). Pour d'autres informations connexes, consultez les rubriques suivantes :
+ [Activation de l’accès fédéré à l’API Athena](access-federation-saml.md)
+ [Utilisation de Lake Formation et des pilotes JDBC ou ODBC pour accéder à Athena](security-athena-lake-formation-jdbc.md)
+  [Configuration de l’authentification unique à l’aide d’ODBC, de SAML 2.0 et du fournisseur d’identité Okta](okta-saml-sso.md)

Pour de plus amples informations sur les dernières versions des pilotes JDBC et ODBC et leur documentation, veuillez consulter [Connexion à Amazon Athena avec JDBC](connect-with-jdbc.md) et [Connexion à Amazon Athena avec ODBC](connect-with-odbc.md).

# Contrôle de l’accès à Amazon S3 depuis Athena
<a name="s3-permissions"></a>

Vous pouvez accorder l'accès aux emplacements Simple Storage Service (Amazon S3) en utilisant des politiques basées sur l'identité, des politiques de ressources de compartiment, des politiques de point d'accès, ou toute combinaison de ces politiques. Lorsque les acteurs interagissent avec Athena, leurs autorisations passent par Athena pour déterminer ce à quoi Athena peut accéder. Cela signifie que les utilisateurs doivent être autorisés à accéder aux compartiments Amazon S3 pour pouvoir les interroger avec Athena.

Chaque fois que vous utilisez des politiques IAM, veillez à respecter les bonnes pratiques IAM. Pour plus d'informations, consultez la rubrique [Bonnes pratiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) du *Guide de l'utilisateur IAM*.

Notez que les demandes adressées à Amazon S3 proviennent d'une IPv4 adresse privée pour Athena, et non de l'adresse IP source spécifiée dans. `aws:SourceIp` Vous ne pouvez donc pas utiliser la condition `aws:SourceIp` pour refuser l’accès aux actions Amazon S3 dans le cadre d’une politique IAM donnée. Vous ne pouvez pas non plus restreindre ou autoriser l’accès aux ressources Amazon S3 en fonction de la clé de condition `aws:SourceVpc` ou `aws:SourceVpce`.

**Note**  
Les groupes de travail Athena qui utilisent l’authentification IAM Identity Center nécessitent que les autorisations d’accès S3 soient configurées pour utiliser la propagation d’identité approuvée. Pour plus d’informations, consultez la rubrique [S3 Access Grants and directory identities](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-directory-ids.html) dans le *Guide de l’utilisateur Amazon Simple Storage Service*.

**Topics**
+ [Politiques basées sur l’identité](#s3-permissions-identity-based-policies)
+ [Stratégie de ressources de compartiment](#s3-permissions-bucket-resource-policies)
+ [Stratégies de point d’accès](#s3-permissions-aliases)
+ [CalledVia clés contextuelles](#s3-permissions-calledvia)
+ [Ressources supplémentaires](#s3-permissions-additional-resources)

## Utilisation de stratégies basées sur l’identité pour contrôler l’accès aux compartiments Amazon S3
<a name="s3-permissions-identity-based-policies"></a>

Les politiques basées sur une identité sont attachées à un utilisateur, un groupe ou un rôle IAM. Ces politiques vous permettent de spécifier ce que peut faire cette identité (ses autorisations). Vous pouvez utiliser des stratégies basées sur l’identité pour contrôler l’accès à vos compartiments Amazon S3.

La stratégie basée sur l’identité suivante autorise les accès `Read` et `Write` aux objets d’un compartiment Amazon S3 spécifique. Pour utiliser cette politique, remplacez-les *italicized placeholder text* par vos propres valeurs.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        }
    ]
}
```

------

## Utilisation de stratégies de ressources de compartiment pour contrôler l’accès aux compartiments Amazon S3
<a name="s3-permissions-bucket-resource-policies"></a>

Les stratégies de compartiment Amazon S3 vous permettent de sécuriser l’accès aux objets de vos compartiments, en le limitant aux utilisateurs disposant des autorisations appropriées. Pour plus d’informations sur la création de votre stratégie Amazon S3, consultez [Adding a bucket policy by using the Amazon S3 console](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) dans le *Guide d’utilisation d’Amazon S3*.

L’exemple de stratégie d’autorisations suivante limite un utilisateur à la lecture des objets comportant la clé et la valeur de balise `environment: production`. Cette stratégie utilise la clé de condition `s3:ExistingObjectTag` pour spécifier la clé et la valeur de balise.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/JohnDoe"
            },
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:ExistingObjectTag/environment": "production"
                }
            }
        }
    ]
}
```

------

Pour découvrir d’autres exemples de stratégies de compartiment, consultez [Examples of Amazon S3 bucket policies](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html) dans le *Guide d’utilisation d’Amazon S3*.

## Utilisation de points d’accès Amazon S3 pour un contrôle plus précis de l’accès aux compartiments
<a name="s3-permissions-aliases"></a>

Si vous disposez d'un jeu de données partagé dans un compartiment Simple Storage Service (Amazon S3), il peut s'avérer difficile de maintenir une politique unique pour le compartiment qui gère l'accès à des centaines de cas d'utilisation.

Les points d’accès, les stratégies et les alias des compartiments Amazon S3 peuvent vous aider à remédier à ce problème. Un compartiment peut avoir plusieurs points d'accès, chacun avec une politique qui contrôle l'accès au compartiment d'une manière différente. 

Pour chaque point d'accès que vous créez, Simple Storage Service (Amazon S3) génère un alias qui représente le point d'accès. L'alias étant au format du nom du compartiment Simple Storage Service (Amazon S3), vous pouvez l'utiliser dans la clause `LOCATION` de vos instructions `CREATE TABLE` dans Athena. L'accès d'Athena au compartiment est alors contrôlé par la politique du point d'accès que l'alias représente. 

Pour plus d'informations, voir [Spécification de l’emplacement d’une table dans Amazon S3](tables-location-format.md) et [Utilisation des points d'accès](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html) du *Guide de l'utilisateur Simple Storage Service (Amazon S3)*.

## Utilisez les touches CalledVia contextuelles pour autoriser uniquement les appels d'Athena vers un autre service
<a name="s3-permissions-calledvia"></a>

Pour plus de sécurité, vous pouvez utiliser la clé contextuelle de condition globale [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledvia](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledvia). La clé de condition `aws:CalledVia` contient une liste de services que vous autorisez à appeler un autre service. Par exemple, vous pouvez autoriser les `InvokeFunction` appels AWS Lambda uniquement s'ils proviennent d'Athena en spécifiant le nom principal du service Athena `athena.amazonaws.com` pour la clé de contexte. `aws:CalledVia` Pour de plus amples informations, veuillez consulter [Utiliser des clés CalledVia contextuelles pour Athena](security-iam-athena-calledvia.md).

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

Pour des informations détaillées et des exemples sur la manière d'accorder l'accès à Simple Storage Service (Amazon S3), consultez les ressources suivantes :
+ [Exemples de procédures : gestion de l'accès](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access.html) dans le *Guide de l'utilisateur Simple Storage Service (Amazon S3)*.
+ [Comment puis-je fournir un accès entre comptes aux objets qui se trouvent dans des compartiments Amazon S3 ?](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/) dans le AWS Knowledge Center.
+ [Configuration de l’accès intercompte aux compartiments Amazon S3 dans Athena](cross-account-permissions.md).

# Configuration de l’accès intercompte aux compartiments Amazon S3 dans Athena
<a name="cross-account-permissions"></a>

Un scénario courant d'Amazon Athena consiste à accorder l'accès à des utilisateurs dans un compte différent de celui du propriétaire du compartiment afin qu'ils puissent effectuer des requêtes. Dans ce cas, utilisez une politique de compartiment pour accorder l'accès.

**Note**  
Pour plus d'informations sur l'accès entre comptes aux catalogues de AWS Glue données d'Athena, consultez. [Configuration de l'accès entre comptes aux catalogues de AWS Glue données](security-iam-cross-account-glue-catalog-access.md)

L'exemple suivant de politique de compartiment, créée et appliquée au compartiment `s3://amzn-s3-demo-bucket` par le propriétaire du compartiment, accorde l'accès à tous les utilisateurs du compte `123456789123`, qui est un compte différent.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id": "MyPolicyID",
   "Statement": [
      {
          "Sid": "MyStatementSid",
          "Effect": "Allow",
          "Principal": {
             "AWS": "arn:aws:iam::123456789123:root"
          },
          "Action": [
             "s3:GetBucketLocation",
             "s3:GetObject",
             "s3:ListBucket",
             "s3:ListBucketMultipartUploads",
             "s3:ListMultipartUploadParts",
             "s3:AbortMultipartUpload"
          ],
          "Resource": [
             "arn:aws:s3:::amzn-s3-demo-bucket",
             "arn:aws:s3:::amzn-s3-demo-bucket/*"
          ]
       }
    ]
 }
```

------

Pour accorder l'accès à un utilisateur particulier d'un compte, remplacez la clé `Principal` par une clé qui spécifie l'utilisateur à la place de `root`. Par exemple, pour le profil utilisateur `Dave`, utilisez `arn:aws:iam::123456789123:user/Dave`.

## Configurer l'accès entre comptes à un compartiment chiffré à l'aide d'une clé personnalisée AWS KMS
<a name="cross-account-permissions-kms"></a>

Si vous possédez un compartiment Amazon S3 chiffré à l'aide d'une clé custom AWS Key Management Service (AWS KMS), vous devrez peut-être autoriser l'accès à celui-ci aux utilisateurs d'un autre compte Amazon Web Services.

L'accès à un compartiment AWS KMS chiffré du compte A à un utilisateur du compte B nécessite les autorisations suivantes :
+ La politique de compartiment du compte A doit accorder l'accès au rôle assumé par le compte B.
+ La politique AWS KMS clé du compte A doit accorder l'accès au rôle assumé par l'utilisateur dans le compte B.
+ Le rôle Gestion des identités et des accès AWS (IAM) assumé par le compte B doit accorder l'accès au bucket et à la clé du compte A.

Les procédures suivantes décrivent comment accorder chacune de ces autorisations.

**Pour accorder l'accès au compartiment dans le compte A à l'utilisateur dans le compte B**
+ Dans le compte A, [consultez la politique de compartiment S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) et confirmez qu'il existe une instruction qui autorise l'accès à partir de l'ID de compte du compte B.

  Par exemple, la politique de compartiment suivante permet à `s3:GetObject` d'accéder à l'ID de compte `111122223333` :

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

****  

  ```
  {
    "Id": "ExamplePolicy1",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "ExampleStmt1",
        "Action": [
          "s3:GetObject"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
        "Principal": {
          "AWS": [
            "111122223333"
          ]
        }
      }
    ]
  }
  ```

------

**Pour accorder l'accès à l'utilisateur du compte b à partir de la politique AWS KMS clé du compte a**

1. Dans la politique AWS KMS clé du compte A, accordez au rôle assumé par le compte B des autorisations pour les actions suivantes :
   +  `kms:Encrypt` 
   +  `kms:Decrypt` 
   +  `kms:ReEncrypt*` 
   +  `kms:GenerateDataKey*` 
   +  `kms:DescribeKey` 

   L'exemple suivant accorde l'accès à la clé à un seul rôle IAM.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowUseOfTheKey",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/role_name"
               },
               "Action": [
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*",
                   "kms:DescribeKey"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. À partir du compte A, passez en revue la politique clé [à l'aide de la vue des AWS Management Console politiques](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to-console-policy-view).

1. Dans la politique de clé, vérifiez que l'instruction suivante indique le compte B en tant que principal.

   ```
   "Sid": "Allow use of the key" 
   ```

1. Si l'instruction `"Sid": "Allow use of the key"` n'est pas présente, effectuez les opérations suivantes :

   1. Basculez pour afficher la politique de clé [à l'aide de la vue par défaut de la console](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to-console-default-view). 

   1.  Ajoutez l'ID de compte du compte B en tant que compte externe avec accès à la clé.

**Accorder l'accès au compartiment et à la clé du compte A à partir du rôle IAM assumé par le compte B**

1. À partir du compte B, ouvrez la console IAM à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Ouvrez le rôle IAM associé à l'utilisateur dans le compte B.

1. Consultez la liste des politiques d'autorisation appliquées au rôle IAM.

1. Assurez-vous qu'une politique est appliquée qui accorde l'accès au compartiment.

   L'exemple d'instruction suivant accorde au rôle IAM l'accès aux opérations `s3:GetObject` et `s3:PutObject` dans le compartiment `amzn-s3-demo-bucket` :

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "ExampleStmt2",
         "Action": [
           "s3:GetObject",
           "s3:PutObject"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
       }
     ]
   }
   ```

------

1. Assurez-vous qu'une politique est appliquée qui accorde l'accès à la clé.
**Note**  
Si le rôle IAM assumé par le compte B dispose déjà d'un [accès administrateur](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html), il n'est pas nécessaire d'accorder l'accès à la clé à partir des politiques IAM de l'utilisateur.

   L'exemple d'instruction suivant accorde au rôle IAM l'accès à la clé `arn:aws:kms:us-west-2:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd`.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "ExampleStmt3",
         "Action": [
           "kms:Decrypt",
           "kms:DescribeKey",
           "kms:Encrypt",
           "kms:GenerateDataKey",
           "kms:ReEncrypt*"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:kms:us-west-2:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
       }
     ]
   }
   ```

------

## Configuration de l’accès intercompte aux objets de compartiment
<a name="cross-account-permissions-objects"></a>

Les objets chargés par un compte (compte C) autre que le compte propriétaire du bucket (compte A) peuvent nécessiter un niveau d'objet explicite ACLs qui accorde un accès en lecture au compte demandeur (compte B). Pour éviter cette exigence, le compte C doit assumer un rôle dans le compte A avant de placer des objets dans le compartiment de ce dernier. Pour plus d'informations, consultez [Comment puis-je fournir un accès inter-comptes aux objets stockés dans des compartiments Simple Storage Service (Amazon S3) ?](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/).

# Configurez l'accès aux bases de données et aux tables dans le AWS Glue Data Catalog
<a name="fine-grained-access-to-glue-resources"></a>

Si vous l'utilisez AWS Glue Data Catalog avec Amazon Athena, vous pouvez définir des politiques au niveau des ressources pour les objets du catalogue de données de base de données et de tables utilisés dans Athena.

**Note**  
Cette rubrique est consacrée à la sécurité au niveau des bases de données et des tables. Pour plus d’informations sur la sécurité au niveau des colonnes, des lignes et des cellules, consultez [Data filtering and cell-level security in Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/data-filtering.html). 

Vous définissez les autorisations au niveau des ressources dans les politiques IAM basées sur l'identité.

**Important**  
Cette section décrit les autorisations au niveau des ressources dans les politiques IAM basées sur l'identité. Celles-ci sont différentes des politiques basées sur les ressources. Pour plus d'informations sur les différences, consultez la rubrique [Politiques basées sur l'identité et politiques basées sur les ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) du *Guide de l'utilisateur IAM*.

Pour plus d'informations sur ces tâches, consultez les rubriques suivantes : 


| Pour exécuter cette tâche | Consultez la rubrique suivante : | 
| --- | --- | 
| Création d’une politique IAM qui définit l’accès aux ressources | [Création de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le Guide de l'utilisateur IAM. | 
| En savoir plus sur les politiques basées sur l'identité IAM utilisées dans AWS Glue | [ Politique basées sur l'identité (politiques IAM)](https://docs.aws.amazon.com/glue/latest/dg/using-identity-based-policies.html) dans le Guide du développeur AWS Glue .  | 

 **Dans cette section :** 
+  [Limites](#access-to-glue-resources-limitations) 
+  [Configurez AWS Glue l'accès à votre catalogue et à votre base de données par Région AWS](#full-access-to-default-db-per-region) 
+  [À propos du contrôle d'accès pour les partitions de table et les versions dans AWS Glue](#access-to-glue-resources-table-partitions-and-versions) 
+  [Exemples d’autorisations au niveau des bases de données et des tables](#examples-fine-grained-table-database-policies) 

## Limitations
<a name="access-to-glue-resources-limitations"></a>

Tenez compte des limites suivantes lorsque vous utilisez le contrôle d'accès au niveau de la base de données et de la table pour AWS Glue Data Catalog Athena :
+ Les groupes de travail Athena compatibles avec IAM Identity Center nécessitent que Lake Formation soit configuré pour utiliser les identités IAM Identity Center. Pour obtenir plus d’informations sur la configuration, consultez la rubrique [Integrating IAM Identity Center](https://docs.aws.amazon.com/lake-formation/latest/dg/identity-center-integration.html) dans le *Guide du développeur AWS Lake Formation *. 
+ Vous pouvez limiter l'accès uniquement aux bases de données et tables. Ces contrôles s’appliquent au niveau des tables. Vous ne pouvez pas limiter l'accès aux partitions individuelles d'une table. Pour de plus amples informations, veuillez consulter [À propos du contrôle d'accès pour les partitions de table et les versions dans AWS Glue](#access-to-glue-resources-table-partitions-and-versions).
+  AWS Glue Data Catalog Il contient les ressources suivantes : `CATALOG``DATABASE`,`TABLE`, et`FUNCTION`. 
**Note**  
Dans cette liste, les ressources communes à Athéna et au AWS Glue Data Catalog sont `TABLE``DATABASE`, et `CATALOG` pour chaque compte. `Function`est spécifique à AWS Glue. Pour supprimer des actions dans Athena, vous devez inclure des autorisations dans les actions AWS Glue . Consultez [Exemples d’autorisations au niveau des bases de données et des tables](#examples-fine-grained-table-database-policies).

  La hiérarchie est la suivante : `CATALOG` est un ancêtre de toutes les `DATABASES` dans chaque compte, et chaque `DATABASE` est un ancêtre pour toutes ses `TABLES` et `FUNCTIONS`. Par exemple, pour une table nommée `table_test` qui appartient à une base de données `db` dans le catalogue de votre compte, ses ancêtres sont `db` et le catalogue dans votre compte. Pour la base de données `db`, son ancêtre est le catalogue dans votre compte, et ses descendants sont les tables et les fonctions. Pour plus d'informations sur la structure hiérarchique des ressources, consultez la section [Liste des ressources ARNs dans le catalogue de données](https://docs.aws.amazon.com/glue/latest/dg/glue-specifying-resource-arns.html#data-catalog-resource-arns) du *guide du AWS Glue développeur*. 
+ Pour toute action Athena de non-suppression sur une ressource, telle que `CREATE DATABASE`, `CREATE TABLE`, `SHOW DATABASE`, `SHOW TABLE` ou `ALTER TABLE`, vous devez disposer des autorisations nécessaires pour appeler cette action sur la ressource (table ou base de données) et tous les ancêtres de la ressource dans le catalogue de données. Par exemple, pour une table, ses ancêtres sont la base de données à laquelle elle appartient, et le catalogue du compte. Pour une base de données, son ancêtre est le catalogue du compte. Consultez [Exemples d’autorisations au niveau des bases de données et des tables](#examples-fine-grained-table-database-policies). 
+ Pour une action de suppression dans Athena, telle que `DROP DATABASE` ou `DROP TABLE`, vous devez également disposer des autorisations nécessaires pour appeler l'action de suppression sur tous les ancêtres et descendants de la ressource dans le catalogue de données. Par exemple, pour supprimer une base de données, vous avez besoin des autorisations sur la base de données, du catalogue, qui est son ancêtre, et de toutes les tables et fonctions définies par l'utilisateur, qui sont ses descendants. Une table n'a pas de descendants. Pour que vous puissiez exécuter `DROP TABLE`, vous avez besoin des autorisations pour cette action sur la table, de la base de données à laquelle elle appartient et du catalogue. Consultez [Exemples d’autorisations au niveau des bases de données et des tables](#examples-fine-grained-table-database-policies).

## Configurez AWS Glue l'accès à votre catalogue et à votre base de données par Région AWS
<a name="full-access-to-default-db-per-region"></a>

Pour qu'Athéna puisse travailler avec le AWS Glue, une politique autorisant l'accès à votre base de données et AWS Glue Data Catalog à celle de votre compte Région AWS est requise. Pour créer des bases de données, l'autorisation `CreateDatabase` est également requise. Dans l'exemple de politique suivant, remplacez l' Région AWS Compte AWS ID et le nom de la base de données par les vôtres.

```
{
   "Sid": "DatabasePermissions",
   "Effect": "Allow",
   "Action": [
      "glue:GetDatabase", 
      "glue:GetDatabases",
      "glue:CreateDatabase"
   ],
   "Resource": [
     "arn:aws:glue:us-east-1:123456789012:catalog",
     "arn:aws:glue:us-east-1:123456789012:database/default"
   ]
}
```

## À propos du contrôle d'accès pour les partitions de table et les versions dans AWS Glue
<a name="access-to-glue-resources-table-partitions-and-versions"></a>

Dans AWS Glue, les tables peuvent avoir des partitions et des versions. Les versions de table et les partitions ne sont pas considérées comme des ressources indépendantes dans AWS Glue. L'accès aux versions et partitions de table est accordé en octroyant l'accès à la table et aux ressources ancêtres de la table. 

Les autorisations d’accès suivantes s’appliquent pour le contrôle d’accès :
+ Les contrôles s’appliquent au niveau des tables. Vous pouvez limiter l'accès uniquement aux bases de données et tables. Par exemple, si vous autorisez l'accès à une table partitionnée, cet accès s'applique à toutes les partitions de la table. Vous ne pouvez pas limiter l'accès aux partitions individuelles d'une table. 
**Important**  
Pour exécuter des actions AWS Glue sur des partitions, des autorisations pour les actions de partition sont requises au niveau du catalogue, de la base de données et de la table. L'accès aux partitions d'une table n'est pas suffisant. Par exemple, pour exécuter `GetPartitions` sur la table `myTable` de la base de données `myDB`, vous devez accorder des autorisations `glue:GetPartitions` sur le catalogue, la base de données `myDB` et les ressources `myTable`. 
+ Les contrôles d’accès ne s’appliquent pas aux versions de table. Comme pour les partitions, l'accès aux versions précédentes d'une table est accordé via l'accès à la version de la table AWS Glue contenue APIs dans la table et aux ancêtres de la table.

Pour plus d'informations sur les autorisations relatives AWS Glue aux actions, voir [Autorisations d'AWS Glue API : référence sur les actions et les ressources](https://docs.aws.amazon.com/glue/latest/dg/api-permissions-reference.html) dans le *guide du AWS Glue développeur*. 

## Exemples d’autorisations au niveau des bases de données et des tables
<a name="examples-fine-grained-table-database-policies"></a>

Le tableau suivant présente des exemples de politiques IAM basées sur l’identité qui permettent l’accès aux bases de données et aux tables dans Athena. Nous vous recommandons de commencer avec ces exemples et, en fonction de vos besoins, ajustez-les pour autoriser ou refuser des actions spécifiques à certaines bases de données et tables.

Ces exemples incluent l'accès aux bases de données et aux catalogues afin qu'Athéna AWS Glue et moi puissions travailler ensemble. Pour plusieurs AWS régions, incluez des politiques similaires pour chacune de vos bases de données et catalogues, une ligne pour chaque région. 

En outre, remplacez la base de données `example_db` et la table `test` par les noms de votre base de données et de votre table.


| Instruction DDL | Exemple d'une politique d'accès IAM accordant l'accès à la ressource | 
| --- | --- | 
| ALTER DATABASE | Permet de modifier les propriétés de la base de données example\$1db.<pre>{<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase", <br />      "glue:UpdateDatabase"<br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db"<br />   ]<br />}</pre> | 
| CREATE DATABASE | Permet de créer la base de données nommée example\$1db.<pre>{<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase", <br />      "glue:CreateDatabase"<br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db"<br />   ]<br />}<br /></pre> | 
| CREATE TABLE | Permet de créer une table nommée test dans la base de données example\$1db.<pre>{<br />   "Sid": "DatabasePermissions",<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase", <br />      "glue:GetDatabases"<br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db"<br />   ]<br />},<br />{<br />   "Sid": "TablePermissions",<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetTables",<br />      "glue:GetTable",<br />      "glue:GetPartitions",<br />      "glue:CreateTable"<br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db",<br />     "arn:aws:glue:us-east-1:123456789012:table/example_db/test"<br />   ]<br />}</pre> | 
| DROP DATABASE | Permet de supprimer la base de données example\$1db, y compris toutes ses tables.<pre>{<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase",<br />      "glue:DeleteDatabase",<br />      "glue:GetTables", <br />      "glue:GetTable", <br />      "glue:DeleteTable" <br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db", <br />     "arn:aws:glue:us-east-1:123456789012:table/example_db/*", <br />     "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/example_db/*"<br />   ]<br /> }</pre> | 
| DROP TABLE | Permet de supprimer une table partitionnée nommée test dans la base de données example\$1db. Si votre table n'a pas de partitions, n'incluez pas d'actions de partition.<pre>{<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase",<br />      "glue:GetTable",<br />      "glue:DeleteTable", <br />      "glue:GetPartitions",<br />      "glue:GetPartition",<br />      "glue:DeletePartition" <br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db", <br />     "arn:aws:glue:us-east-1:123456789012:table/example_db/test"<br />   ]<br /> }</pre> | 
| MSCK REPAIR TABLE | Permet de mettre à jour les métadonnées du catalogue après avoir ajouté des partitions compatibles Hive à la table nommée test dans la base de données example\$1db.<pre>{<br />    "Effect": "Allow",<br />    "Action": [<br />        "glue:GetDatabase",<br />        "glue:CreateDatabase",<br />        "glue:GetTable",<br />        "glue:GetPartitions",<br />        "glue:GetPartition",<br />        "glue:BatchCreatePartition"<br />    ],<br />    "Resource": [<br />      "arn:aws:glue:us-east-1:123456789012:catalog",<br />      "arn:aws:glue:us-east-1:123456789012:database/example_db", <br />      "arn:aws:glue:us-east-1:123456789012:table/example_db/test"<br />    ]<br />}</pre> | 
| SHOW DATABASES | Permet de répertorier toutes les bases de données dans le AWS Glue Data Catalog.<pre>{<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase",<br />      "glue:GetDatabases" <br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/*"<br />   ]<br /> }</pre> | 
| SHOW TABLES | Permet de répertorier toutes les tables de la base de données example\$1db.<pre>{<br />   "Effect": "Allow",<br />   "Action": [<br />      "glue:GetDatabase",<br />      "glue:GetTables"    <br />   ],<br />   "Resource": [<br />     "arn:aws:glue:us-east-1:123456789012:catalog",<br />     "arn:aws:glue:us-east-1:123456789012:database/example_db",  <br />     "arn:aws:glue:us-east-1:123456789012:table/example_db/*"<br />   ]<br />}</pre> | 

# 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 * 

# Configurez l'accès depuis Athena aux métadonnées chiffrées dans AWS Glue Data Catalog
<a name="access-encrypted-data-glue-data-catalog"></a>

Si vous l'utilisez AWS Glue Data Catalog avec Amazon Athena, vous pouvez activer le chiffrement à l' AWS Glue Data Catalog aide de la AWS Glue console ou de l'API. Pour obtenir des informations, consultez la rubrique [Chiffrement du catalogue de données](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html) dans le *Guide du développeur AWS Glue *.

S'il AWS Glue Data Catalog est crypté, vous devez ajouter les actions suivantes à toutes les politiques utilisées pour accéder à Athena :

Chaque fois que vous utilisez des politiques IAM, veillez à respecter les bonnes pratiques IAM. Pour plus d'informations, consultez la rubrique [Bonnes pratiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) du *Guide de l'utilisateur IAM*.

# Configuration de l’accès aux groupes de travail et aux balises
<a name="workgroups-access"></a>

Un groupe de travail est une ressource gérée par Athena. Ainsi, si la politique de votre groupe de travail utilise des actions prenant `workgroup` comme entrée, vous devez préciser l'ARN du groupe de travail comme suit, où `workgroup-name` est le nom de votre groupe de travail :

```
"Resource": [arn:aws:athena:region:AWSAcctID:workgroup/workgroup-name]
```

Par exemple, pour un groupe de travail nommé `test_workgroup` dans la région `us-west-2` pour le compte Amazon Web Services `123456789012`, spécifiez le groupe de travail sous la forme d'une ressource à l'aide de l'ARN suivant :

```
"Resource":["arn:aws:athena:us-east-2:123456789012:workgroup/test_workgroup"]
```

Pour accéder aux groupes de travail compatibles avec la propagation sécurisée des identités (TIP), les utilisateurs d'IAM Identity Center doivent être affectés à `IdentityCenterApplicationArn` celui renvoyé par la réponse de l'action de l'API [GetWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetWorkGroup.html)Athena.
+ Pour une liste des politiques de groupes de travail, consultez [Exemple de politiques de groupe de travail](example-policies-workgroup.md).
+ Pour obtenir une liste des politiques basées sur les identifications pour les groupes de travail, consultez [Utilisation des politiques de contrôle d’accès IAM basé sur des balises](tags-access-control.md).
+ Pour plus d'informations sur la création de politiques IAM pour les groupes de travail, voir [Utilisation de politiques IAM pour contrôler l’accès aux groupes de travail.](workgroups-iam-policy.md).
+ Pour obtenir une liste complète d'actions Amazon Athena, consultez les noms d'action d'API dans la [Référence d'API Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). 
+ Pour plus d'informations sur les politiques IAM, consultez la rubrique [Création de politiques avec l'éditeur visuel](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) du *Guide de l'utilisateur IAM*. 

Chaque fois que vous utilisez des politiques IAM, veillez à respecter les bonnes pratiques IAM. Pour plus d'informations, consultez la rubrique [Bonnes pratiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) du *Guide de l'utilisateur IAM*.

# Utilisation de politiques IAM pour contrôler l’accès aux groupes de travail.
<a name="workgroups-iam-policy"></a>

Pour contrôler l'accès aux groupes de travail, utilisez des autorisations IAM au niveau des ressources ou des politiques IAM basées sur l'identité. Chaque fois que vous utilisez des politiques IAM, veillez à respecter les bonnes pratiques IAM. Pour plus d'informations, consultez la rubrique [Bonnes pratiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) du *Guide de l'utilisateur IAM*.

**Note**  
Pour accéder aux groupes de travail compatibles avec la propagation d'identités fiables, les utilisateurs d'IAM Identity Center doivent être affectés à `IdentityCenterApplicationArn` ce qui est renvoyé par la réponse de l'action de l'API [GetWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetWorkGroup.html)Athena.

La procédure suivante est spécifique à Athena. 

Pour des informations spécifiques à IAM, consultez les liens répertoriés à la fin de cette section. Pour obtenir des informations sur les exemples de politiques de groupes de travail JSON, consultez [Exemple de politiques de groupe de travail](example-policies-workgroup.md).

**Utilisation de l'éditeur visuel de la console IAM pour créer une politique de groupe de travail**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le panneau de navigation à gauche, choisissez **politiques**, puis **Créer une politique**.

1. Dans l'onglet **Visual editor** (Éditeur visuel), sélectionnez **Choose a service** (Choisir un service). Choisissez ensuite Athena pour l'ajouter à la politique.

1. Choisissez **Sélectionner des actions**, puis choisissez les actions à ajouter à la politique. L'éditeur visuel affiche les actions disponibles dans Athena. Pour plus d'informations, consultez la rubrique [Actions, ressources et clés de condition pour Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) dans la section *Référence de l'autorisation de service*.

1. Choisissez **Add actions** (Ajouter des actions) pour entrer une action spécifique ou utilisez des caractères génériques (\$1) pour spécifier plusieurs actions. 

   Par défaut, la politique que vous créez autorise les actions que vous choisissez. Si vous avez choisi une ou plusieurs actions qui prennent en charge les autorisations au niveau des ressources pour la ressource `workgroup` dans Athena, l'éditeur visuel affiche la ressource `workgroup`. 

1. Choisissez **Ressources** pour spécifier les groupes de travail spécifiques à votre politique. Pour des exemples de politiques de groupe de travail JSON, consultez [Exemple de politiques de groupe de travail](example-policies-workgroup.md).

1. Spécifiez la ressource du `workgroup` comme suit :

   ```
   arn:aws:athena:<region>:<user-account>:workgroup/<workgroup-name>
   ```

1. Choisissez **Review policy** (Examiner une politique), puis saisissez un **Name** (Nom) et une **Description** (facultatif) pour la politique que vous êtes en train de créer. Passez en revue le résumé de politique afin de vous assurer que les autorisations nécessaires vous ont été accordées. 

1. Choisissez **Create policy** (Créer une politique) pour enregistrer votre nouvelle politique.

1. Attachez cette politique basée sur l'identité à un utilisateur, un groupe ou un rôle.

Pour plus d'informations, consultez les rubriques suivantes dans la *Référence de l'autorisation de service* et le *Guide de l'utilisateur IAM* :
+  [Actions, ressources et clés de condition pour Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) 
+  [Création de politiques avec l'éditeur visuel](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) 
+  [Ajout et suppression de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) 
+  [Contrôle de l'accès aux ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html#access_controlling-resources) 

Pour des exemples de politiques de groupe de travail JSON, consultez [Exemple de politiques de groupe de travail](example-policies-workgroup.md).

Pour obtenir une liste complète d'actions Amazon Athena, consultez les noms d'action d'API dans la [Référence d'API Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). 

# Exemple de politiques de groupe de travail
<a name="example-policies-workgroup"></a>

Cette section inclut des exemples de politiques que vous pouvez utiliser pour activer plusieurs actions sur des groupes de travail. Chaque fois que vous utilisez des politiques IAM, veillez à respecter les bonnes pratiques IAM. Pour plus d'informations, consultez la rubrique [Bonnes pratiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) du *Guide de l'utilisateur IAM*.

Un groupe de travail est une ressource IAM gérée par Athena. Ainsi, si la politique de votre groupe de travail utilise des actions prenant `workgroup` comme entrée, vous devez préciser l'ARN du groupe de travail comme suit :

```
"Resource": [arn:aws:athena:<region>:<user-account>:workgroup/<workgroup-name>]
```

Où `<workgroup-name>` est le nom de votre groupe de travail. Par exemple, pour le groupe de travail nommé `test_workgroup`, spécifiez-le en tant que ressource comme suit :

```
"Resource": ["arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"]
```

Pour obtenir une liste complète d'actions Amazon Athena, consultez les noms d'action API dans la rubrique [Référence d'API Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). Pour plus d'informations sur les politiques IAM, consultez la rubrique [Création de politiques avec l'éditeur visuel](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) du *Guide de l'utilisateur IAM*. Pour plus d'informations sur la création de politiques IAM pour les groupes de travail, voir [Utilisation de politiques IAM pour contrôler l’accès aux groupes de travail.](workgroups-iam-policy.md).
+  [Example policy for full access to all workgroups](#example1-full-access-all-wkgs) 
+  [Example policy for full access to a specified workgroup](#example2-full-access-this-wkg) 
+  [Example policy for running queries in a specified workgroup](#example3-user-access) 
+  [Example policy for running queries in the primary workgroup](#example4-run-in-primary-access) 
+  [Example policy for management operations on a specified workgroup](#example5-manage-wkgs-access) 
+  [Example policy for listing workgroups](#example6-list-all-wkgs-access) 
+  [Example policy for running and stopping queries in a specific workgroup](#example7-run-queries-access) 
+  [Example policy for working with named queries in a specific workgroup](#example8-named-queries-access) 
+  [Example policy for working with Spark notebooks](#example9-spark-workgroup) 

**Example Exemple de politique pour un accès complet à tous les groupes de travail**  
La politique suivante permet un accès complet à toutes les ressources de groupes de travail susceptibles d'exister dans le compte. Nous vous recommandons d'utiliser cette politique pour ces utilisateurs dans votre compte qui doivent administrer et gérer les groupes de travail pour tous les autres utilisateurs.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

**Example Exemple de politique pour un accès complet à un groupe de travail spécifié**  
La politique suivante autorise un accès complet à une seule ressource de groupe de travail spécifique nommée `workgroupA`. Vous pouvez utiliser cette politique pour les utilisateurs ayant un contrôle total sur un groupe de travail en particulier.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListEngineVersions",
                "athena:ListWorkGroups",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:BatchGetQueryExecution",
                "athena:GetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:DeleteWorkGroup",
                "athena:UpdateWorkGroup",
                "athena:GetWorkGroup",
                "athena:CreateWorkGroup"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
            ]
        }
    ]
}
```

**Example Exemple de politique pour des requêtes en cours d'exécution dans un groupe de travail spécifié**  
Dans la politique suivante, un utilisateur est autorisé à exécuter des requêtes dans le `workgroupA` spécifié, et de les afficher. L'utilisateur n'est pas autorisé à effectuer des tâches de gestion pour le groupe de travail lui-même, telles que le mettre à jour ou le supprimer. Notez que l’exemple de politique ne limite pas les utilisateurs à ce seul groupe de travail et ne refuse pas l’accès à d’autres groupes de travail.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "athena:ListEngineVersions",
                "athena:ListWorkGroups",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetWorkGroup", 
                "athena:BatchGetQueryExecution",
                "athena:GetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
            ]
        }
    ]
}
```

**Example Exemple de politique pour des requêtes en cours d'exécution dans le groupe de travail principal**  
Vous pouvez modifier l'exemple précédent pour permettre à un utilisateur particulier d'exécuter des requêtes dans le groupe de travail principal.   
Nous vous recommandons d'ajouter la ressource du groupe de travail principal pour tous les utilisateurs qui sont autrement configurés pour exécuter des requêtes dans leurs groupes de travail désignés. L'ajout de cette ressource aux politiques d'utilisation de leur groupe de travail est utile au cas où le groupe de travail désigné serait supprimé ou désactivé. Dans ce cas, ils peuvent continuer à exécuter des requêtes dans le groupe de travail principal.
Pour permettre aux utilisateurs de votre compte d'exécuter des requêtes dans le groupe de travail principal, ajoutez une ligne contenant l'ARN du groupe de travail principal à la section des ressources de [Example policy for running queries in a specified workgroup](#example3-user-access), comme dans l'exemple ci-dessous.  

```
arn:aws:athena:us-east-1:123456789012:workgroup/primary"
```

**Example Exemple de politique pour les opérations de gestion sur un groupe de travail spécifié**  
Dans la politique suivante, un utilisateur est autorisé à créer, supprimer, obtenir des détails, et mettre à jour un groupe de travail `test_workgroup`.     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListEngineVersions"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateWorkGroup",
                "athena:GetWorkGroup",
                "athena:DeleteWorkGroup",
                "athena:UpdateWorkGroup"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"
            ]
        }
    ]
}
```

**Example Exemple de politique pour répertorier des groupes de travail**  
La politique suivante autorise tous les utilisateurs à répertorier tous les groupes de travail :    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListWorkGroups"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Exemple de politique pour exécuter et arrêter des requêtes dans un groupe de travail spécifié**  
Dans cette politique, un utilisateur est autorisé à exécuter des requêtes dans le groupe de travail :    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:StopQueryExecution"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"
            ]
        }
    ]
}
```

**Example Exemple de politique à utiliser avec des requêtes nommées dans un groupe de travail spécifié**  
Dans la politique suivante, un utilisateur dispose des autorisations pour créer, supprimer et obtenir des informations sur les requêtes nommées dans le groupe de travail spécifié :    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:DeleteNamedQuery"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"            ]
        }
    ]
}
```

**Example Exemple de politique pour utiliser des blocs-notes Spark dans Athena**  
Utilisez une politique telle que la suivante pour utiliser les blocs-notes Spark dans Athena.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCreatingWorkGroupWithDefaults",
            "Action": [
                "athena:CreateWorkGroup",
                "s3:CreateBucket",
                "iam:CreateRole",
                "iam:CreatePolicy",
                "iam:AttachRolePolicy",
                "s3:GetBucketLocation",
                "athena:ImportNotebook"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/Demo*",
                "arn:aws:s3:::123456789012-us-east-1-athena-results-bucket-*",
                "arn:aws:iam::123456789012:role/service-role/AWSAthenaSparkExecutionRole-*",
                "arn:aws:iam::123456789012:policy/service-role/AWSAthenaSparkRolePolicy-*"
            ]
        },
        {
            "Sid": "AllowRunningCalculations",
            "Action": [
                "athena:ListWorkGroups",
                "athena:GetWorkGroup",
                "athena:StartSession",
                "athena:CreateNotebook",
                "athena:ListNotebookMetadata",
                "athena:ListNotebookSessions",
                "athena:GetSessionStatus",
                "athena:GetSession",
                "athena:GetNotebookMetadata",
                "athena:CreatePresignedNotebookUrl"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/Demo*"
        },
        {
            "Sid": "AllowListWorkGroupAndEngineVersions",
            "Action": [
                "athena:ListWorkGroups",
                "athena:ListEngineVersions"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

# Utilisation de groupes de travail Athena compatibles avec IAM Identity Center
<a name="workgroups-identity-center"></a>

[La propagation fiable des identités](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overview.html) est une AWS IAM Identity Center fonctionnalité que les administrateurs de Connected Services AWS peuvent utiliser pour accorder et auditer l'accès aux données de service. L’accès à ces données est basé sur les attributs utilisateur tels que les associations de groupe. La mise en place d'une propagation d'identité sécurisée nécessite une collaboration entre les administrateurs de Connected Services AWS et les administrateurs d'IAM Identity Center. Pour plus d’informations, consultez [Prérequis et considérations](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overall-prerequisites.html).​

[IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) vous permet de gérer la sécurité de connexion pour les identités de votre personnel. IAM Identity Center fournit un endroit unique où vous pouvez créer ou connecter les utilisateurs du personnel et gérer de manière centralisée leur accès à tous leurs AWS comptes et applications. Vous pouvez utiliser des autorisations multi-comptes pour attribuer l’accès aux Comptes AWSà ces utilisateurs. Vous pouvez utiliser les affectations d’application pour attribuer à vos utilisateurs l’accès aux applications compatibles avec IAM Identity Center, aux applications cloud et aux applications client SAML 2.0 (Security Assertion Markup Language). Pour plus d’informations, consultez la rubrique [Trusted identity propagation across applications](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

La prise en charge d'Athena SQL pour la propagation sécurisée des identités est disponible à la fois dans EMR Studio et Unified Studio. SageMaker Chaque plateforme fournit des interfaces spécifiques pour l’utilisation du fournisseur d’identité de confiance avec Athena. 

Lorsque vous utilisez Athena SQL dans EMR Studio avec des identités IAM Identity Center, vous avez accès à deux types de groupes de travail :
+ **Régulier WorkGroups** — Aucune affectation d'utilisateur/de groupe n'est nécessaire.
+ **Groupes de travail compatibles avec IAM Identity Center** : nécessitent une attribution users/groups via la console ou l'API IAM Identity Center.

Pour ces deux types, vous pouvez exécuter des requêtes à l’aide de l’interface Athena SQL dans EMR Studio en ayant activé IAM Identity Center. 

## Considérations et restrictions
<a name="workgroups-identity-center-considerations-and-limitations"></a>

Tenez compte des points suivants lorsque vous utilisez la propagation d’identité de confiance avec Amazon Athena :
+ Vous ne pouvez pas modifier la méthode d’authentification du groupe de travail après sa création.
  + Vous ne pouvez pas modifier les groupes de travail Athena SQL existants pour qu’ils prennent en charge les groupes de travail compatibles avec IAM Identity Center. Les groupes de travail Athena SQL existants peuvent propager l’identité aux services en aval.
  + Vous ne pouvez pas modifier les groupes de travail compatibles IAM Identity Center pour qu’ils prennent en charge les autorisations IAM au niveau des ressources ou les politiques IAM basées sur l’identité.
+ Pour accéder aux groupes de travail compatibles avec la propagation sécurisée des identités, les utilisateurs d'IAM Identity Center doivent être affectés à `IdentityCenterApplicationArn` ce qui est renvoyé par la réponse de l'action de l'API [GetWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetWorkGroup.html)Athena.
+ Les autorisations d’accès Amazon S3 doivent être configurées pour utiliser les identités de la propagation d’identité de confiance. Pour plus d’informations, consultez la rubrique [S3 Access Grants and corporate directory identities](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-directory-ids.html) dans le *Guide de l’utilisateur Amazon S3*.
+ Les groupes de travail Athena compatibles avec IAM Identity Center nécessitent que Lake Formation soit configuré pour utiliser les identités IAM Identity Center. Pour obtenir des informations sur la configuration, consultez la rubrique [Integrating IAM Identity Center](https://docs.aws.amazon.com/lake-formation/latest/dg/identity-center-integration.html) dans le *Guide du développeur AWS Lake Formation *.
+ Par défaut, les requêtes expirent après 30 minutes dans les groupes de travail compatibles avec IAM Identity Center. Vous pouvez demander une augmentation du délai d’expiration des requêtes, sachant que le délai maximal des requêtes dans les groupes de travail qui utilisent la propagation d’identité de confiance est d’une heure. 
+ La prise en compte des modifications des droits des utilisateurs ou des groupes dans les groupes de travail utilisant la propagation d’identité de confiance peut prendre une heure.
+ Les requêtes d’un groupe de travail Athena utilisant la propagation d’identité de confiance ne peuvent pas être exécutées directement depuis la console Athena. Elles doivent être exécutées depuis l’interface Athena dans un EMR Studio sur lequel IAM Identity Center est activé. Pour plus d’informations sur l’utilisation d’Athena dans EMR Studio, consultez la rubrique [Use the Amazon Athena SQL editor in EMR Studio](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-athena.html) dans le *Guide de gestion Amazon EMR*.
+ La propagation d’identité approuvée n’est pas compatible avec les fonctionnalités Athena suivantes.
  + Clés de contexte `aws:CalledVia` pour les groupes de travail compatibles avec IAM Identity Center
  + Groupes de travail Athena pour Spark.
  + Accès fédéré à l’API Athena.
  + Accès fédéré à Athena à l’aide de Lake Formation et des pilotes JDBC et ODBC d’Athena.
+ Vous pouvez utiliser Trusted identity propagation avec Athena uniquement dans les cas suivants : Régions AWS
  + `us-east-2` – USA Est (Ohio)
  + `us-east-1` – USA Est (Virginie du Nord)
  + `us-west-1` – USA Ouest (Californie du Nord)
  + `us-west-2` – USA Ouest (Oregon)
  + `af-south-1` – Afrique (Le Cap)
  + `ap-east-1` – Asie-Pacifique (Hong Kong)
  + `ap-southeast-3` – Asie-Pacifique (Jakarta)
  + `ap-south-1` – Asie-Pacifique (Mumbai)
  + `ap-northeast-3` – Asie-Pacifique (Osaka)
  + `ap-northeast-2` – Asie-Pacifique (Séoul)
  + `ap-southeast-1` – Asie-Pacifique (Singapour)
  + `ap-southeast-2` – Asie-Pacifique (Sydney)
  + `ap-northeast-1` – Asie-Pacifique (Tokyo)
  + `ca-central-1` – Canada (Centre)
  + `eu-central-1` – Europe (Francfort)
  + `eu-central-2` : Europe (Zurich)
  + `eu-west-1` – Europe (Irlande)
  + `eu-west-2` – Europe (Londres)
  + `eu-south-1` – Europe (Milan)
  + `eu-west-3` – Europe (Paris)
  + `eu-north-1` – Europe (Stockholm)
  + `me-south-1` – Moyen-Orient (Bahreïn)
  + `sa-east-1` – Amérique du Sud (São Paulo)

## Autorisations requises
<a name="workgroups-identity-center-required-permissions"></a>

Les politiques suivantes doivent être attachées à l’utilisateur IAM de l’administrateur qui crée le groupe de travail compatible avec IAM Identity Center dans la console Athena.
+ La politique gérée `AmazonAthenaFullAccess`. Pour en savoir plus, consultez [AWS politique gérée : AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy).
+ La politique en ligne suivante qui autorise les actions IAM et IAM Identity Center :

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

****  

  ```
  { "Version":"2012-10-17",		 	 	  "Statement": [ { "Action": [ "iam:createRole",
      "iam:CreatePolicy", "iam:AttachRolePolicy", "iam:ListRoles", "identitystore:ListUsers",
      "identitystore:ListGroups", "identitystore:CreateUser", "identitystore:CreateGroup",
      "sso:ListInstances", "sso:CreateInstance", "sso:DeleteInstance", "sso:ListTrustedTokenIssuers",
      "sso:DescribeTrustedTokenIssuer", "sso:ListApplicationAssignments",
      "sso:DescribeRegisteredRegions", "sso:GetManagedApplicationInstance",
      "sso:GetSharedSsoConfiguration", "sso:PutApplicationAssignmentConfiguration",
      "sso:CreateApplication", "sso:DeleteApplication", "sso:PutApplicationGrant",
      "sso:PutApplicationAuthenticationMethod", "sso:PutApplicationAccessScope",
      "sso:ListDirectoryAssociations", "sso:CreateApplicationAssignment",
      "sso:DeleteApplicationAssignment", "organizations:ListDelegatedAdministrators",
      "organizations:DescribeAccount", "organizations:DescribeOrganization",
      "organizations:CreateOrganization", "sso-directory:SearchUsers", "sso-directory:SearchGroups",
      "sso-directory:CreateUser" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [
      "iam:PassRole" ], "Effect": "Allow", "Resource": [
          "arn:aws:iam::111122223333:role/service-role/AWSAthenaSQLRole-*"
      ] } ] }
  ```

------

## Création d’un groupe de travail Athena compatible avec IAM Identity Center
<a name="workgroups-identity-center-creating-an-identity-center-enabled-athena-workgroup"></a>

La procédure suivante décrit les étapes et les options associées à la création d’un groupe de travail Athena compatible avec IAM Identity Center. Pour obtenir une description des autres options de configuration disponibles pour les groupes de travail Athena, consultez [Créer un groupe de travail](creating-workgroups.md).

**Création d’un groupe de travail avec SSO activée dans la console Athena**

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

1. Dans le panneau de navigation de la console Athena, choisissez **Workgroups** (Groupes de travail).

1. Sur la page **Workgroups** (Groupes de travail), choisissez **Create workgroup** (Créer un groupe de travail).

1. Sur la page **Créer un groupe de travail**, pour **Nom du groupe de travail**, saisissez le nom du groupe de travail.

1. Pour **Moteur d’analytique**, utilisez **Athena SQL** par défaut.

1. Pour **Authentification**, choisissez **IAM Identity Center**.

1. Pour **Fonction du service en ce qui concerne l’accès à IAM Identity Center**, choisissez une fonction du service existante ou créez-en une.

   Athena a besoin d’autorisations pour accéder à IAM Identity Center en votre nom. Pour ce faire, Athena doit avoir une fonction du service. Un rôle de service est un rôle IAM que vous gérez et qui autorise un AWS service à accéder à d'autres AWS services en votre nom. Pour interroger des catalogues fédérés ou exécuter une fonction définie par l’utilisateur (UDF), mettez à jour le rôle de service avec les autorisations Lambda correspondantes. Pour plus d'informations, consultez la section [Création d'un rôle pour déléguer des autorisations à un AWS service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dans le *Guide de l'utilisateur IAM*.

1. Développez **Configuration des résultats de requêtes**, puis saisissez ou choisissez un chemin Amazon S3 pour **Emplacement du résultat de la requête**.

1. (Facultatif) Choisissez **Chiffrer les résultats de requête**. SSE-S3 est pris en charge par défaut. Pour utiliser SSE-KMS et CSE-KMS à l’emplacement des résultats des requêtes, vous devez accorder des autorisations d’accès Amazon S3 au **rôle de service d’IAM Identity Center**. Pour plus d’informations, consultez [Exemple de politique de rôle](#workgroups-identity-center-access-grant-location-sample-role-policy).

1. (Facultatif) Choisissez **Créer un préfixe S3 basé sur l’identité utilisateur**.

   Lorsque vous créez un groupe de travail compatible avec IAM Identity Center, l’option **Activer les autorisations d’accès S3** est sélectionnée par défaut. Vous pouvez utiliser les autorisations d’accès Amazon S3 pour contrôler l’accès aux emplacements des résultats de requête Athena (préfixes) dans Amazon S3. Pour plus d’informations sur les autorisations d’accès Amazon S3, consultez [Managing access with S3 Access Grants](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html).

   Dans les groupes de travail Athena qui utilisent l’authentification IAM Identity Center, vous pouvez activer la création d’emplacements de résultats de requête basés sur l’identité et gouvernés par les autorisations d’accès Amazon S3. Ces préfixes Amazon S3 basés sur l’identité utilisateur permettent aux utilisateurs d’un groupe de travail Athena d’isoler les résultats de leurs requêtes des autres utilisateurs du même groupe de travail.

   Lorsque vous activez l’option de préfixe utilisateur, Athena ajoute l’ID utilisateur en tant que préfixe de chemin Amazon S3 à l’emplacement de sortie des résultats de requête pour le groupe de travail (par exemple, `s3://amzn-s3-demo-bucket/${user_id}`). Pour utiliser cette fonctionnalité, vous devez configurer les autorisations d’accès pour autoriser uniquement l’utilisateur à accéder à l’emplacement portant le préfixe `user_id`. Pour découvrir un exemple de politique de rôle qui utilise les autorisations d’accès Amazon S3 afin de restreindre l’accès aux résultats des requêtes Athena, consultez [Exemple de politique de rôle](#workgroups-identity-center-access-grant-location-sample-role-policy). 
**Note**  
Lorsque l’option de préfixe S3 de l’identité utilisateur est sélectionnée, l’option de remplacement des paramètres côté client est automatiquement activée pour le groupe de travail, comme décrit à l’étape suivante. L’option de remplacement des paramètres côté client est requise pour la fonctionnalité de préfixe de l’identité utilisateur.

1. Développez **Paramètres**, puis vérifiez que l’option **Remplacer les paramètres côté client** est sélectionnée.

   Lorsque vous sélectionnez l’option **Remplacer les paramètres côté client**, les paramètres du groupe de travail sont appliqués au niveau du groupe de travail pour tous les clients du groupe de travail. Pour de plus amples informations, veuillez consulter [Remplacer les paramètres côté client](workgroups-settings-override.md).

1. (Facultatif) Définissez tous les autres paramètres de configuration dont vous avez besoin, comme décrit dans [Créer un groupe de travail](creating-workgroups.md).

1. Choisissez **Créer un groupe de travail**.

1. Utilisez la section **Groupes de travail** de la console Athena pour affecter des utilisateurs ou des groupes de votre répertoire IAM Identity Center à votre groupe de travail Athena compatible avec IAM Identity Center.

## Exemple de politique de rôle
<a name="workgroups-identity-center-access-grant-location-sample-role-policy"></a>

L’exemple suivant montre une politique relative à l’attachement d’un rôle à un emplacement d’autorisations d’accès Amazon S3 qui restreint l’accès aux résultats des requêtes Athena. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:*"
            ],
            "Condition": {
                "ArnNotEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:us-east-1:111122223333:access-grants/default"
                },
                "StringNotEquals": {
                    "aws:ResourceAccount": "111122223333"
                }
            },
            "Effect": "Deny",
            "Resource": "*",
            "Sid": "ExplicitDenyS3"
        },
        {
            "Action": [
                "kms:*"
            ],
            "Effect": "Deny",
            "NotResource": "arn:aws:kms:us-east-1:111122223333:key/${keyid}",
            "Sid": "ExplictDenyKMS"
        },
        {
            "Action": [
                "s3:ListMultipartUploadParts",
                "s3:GetObject"
            ],
            "Condition": {
                "ArnEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:us-east-1:111122223333:access-grants/default"
                },
                "StringEquals": {
                    "aws:ResourceAccount": "111122223333"
                }
            },
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::ATHENA-QUERY-RESULT-LOCATION/${identitystore:UserId}/*",
            "Sid": "ObjectLevelReadPermissions"
        },
        {
            "Action": [
                "s3:PutObject",
                "s3:AbortMultipartUpload"
            ],
            "Condition": {
                "ArnEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:us-east-1:111122223333:access-grants/default"
                },
                "StringEquals": {
                "aws:ResourceAccount": "111122223333"
                }
            },
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::ATHENA-QUERY-RESULT-LOCATION/${identitystore:UserId}/*",
            "Sid": "ObjectLevelWritePermissions"
        },
        {
            "Action": "s3:ListBucket",
            "Condition": {
                "ArnEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:us-east-1:111122223333:access-grants/default"
                },
                "StringEquals": {
                    "aws:ResourceAccount": "111122223333"
                },
                "StringLikeIfExists": {
                    "s3:prefix": [
                        "${identitystore:UserId}",
                        "${identitystore:UserId}/*"
                    ]
                }
            },
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::ATHENA-QUERY-RESULT-LOCATION",
            "Sid": "BucketLevelReadPermissions"
        },
        {
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/${keyid}",
            "Sid": "KMSPermissions"
        }
    ]
}
```

------

# Configuration d’un chiffrement minimal pour un groupe de travail
<a name="workgroups-minimum-encryption"></a>

En tant qu'administrateur d'un groupe de travail Athena SQL, vous pouvez appliquer un niveau de chiffrement minimal dans Amazon S3 pour tous les résultats de requêtes du groupe de travail. Vous pouvez utiliser cette fonctionnalité pour vous assurer que les résultats des requêtes ne sont jamais stockés dans un compartiment Amazon S3 à l'état non chiffré.

Lorsque les utilisateurs d'un groupe de travail où le chiffrement minimal est activé soumettent une requête, ils peuvent uniquement définir le niveau de chiffrement au niveau minimum que vous avez configuré, ou à un niveau supérieur s'il est disponible. Athena chiffre les résultats de la requête soit au niveau spécifié lorsque l'utilisateur exécute la requête, soit au niveau défini dans le groupe de travail.

Les niveaux disponibles sont les suivants :
+ **Basique** – Chiffrement côté serveur Amazon S3 avec des clés gérées par Amazon S3 (**SSE-S3**).
+ **Intermédiaire** – Chiffrement côté serveur avec des clés gérées par KMS (**SSE\$1KMS**)
+ **Avancé** – Chiffrement côté client avec des clés gérées par KMS (**CSE-KMS**).

## Considérations et restrictions
<a name="workgroups-minimum-encryption-considerations-and-limitations"></a>
+ La fonctionnalité de chiffrement minimal n'est pas disponible pour les groupes de travail compatibles avec Apache Spark.
+ La fonctionnalité de chiffrement minimal ne fonctionne que lorsque le groupe de travail n'active pas l'option **[Remplacer les paramètres côté client](https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html)**.
+ Si l'option **Remplacer les paramètres côté client** est activée dans le groupe de travail, le paramètre de chiffrement du groupe de travail prévaut et le paramètre de chiffrement minimal n'a aucun effet.
+ L'activation de cette fonctionnalité est gratuite.

## Activation du chiffrement minimal pour un groupe de travail
<a name="workgroups-minimum-encryption-enabling"></a>

Vous pouvez activer un niveau de chiffrement minimal pour les résultats des requêtes provenant de votre groupe de travail Athena SQL lorsque vous créez ou mettez à jour le groupe de travail. Pour ce faire, vous pouvez utiliser la console Athena, l'API Athena ou. AWS CLI

### Utilisation de la console Athena pour activer le chiffrement minimal
<a name="workgroups-minimum-encryption-enabling-using-the-athena-console"></a>

Pour commencer à créer ou à modifier votre groupe de travail à l'aide de la console Athena, consultez [Créer un groupe de travail](https://docs.aws.amazon.com/athena/latest/ug/workgroups-create-update-delete.html#creating-workgroups) ou [Modifier un groupe de travail](https://docs.aws.amazon.com/athena/latest/ug/workgroups-create-update-delete.html#editing-workgroups). Lors de la configuration de votre groupe de travail, suivez les étapes ci-dessous pour activer le chiffrement minimal.

**Pour configurer le niveau de chiffrement minimal pour les résultats des requêtes des groupes de travail**

1. Désactivez l'option **Remplacer les paramètres côté client** ou vérifiez qu'elle n'est pas sélectionnée.

1. Sélectionnez l'option **Chiffrer les résultats des requêtes**.

1. Dans **Type de chiffrement**, sélectionnez la méthode de chiffrement que vous souhaitez qu'Athena utilise pour les résultats des requêtes de votre groupe de travail (**SSE\$1S3**, **SSE\$1KMS** ou **CSE\$1KMS**). Ces types de chiffrement correspondent aux niveaux de sécurité basique, intermédiaire et avancé.

1. Pour appliquer la méthode de chiffrement que vous avez choisie comme niveau de chiffrement minimal pour tous les utilisateurs, sélectionnez **Définir *encryption\$1method* comme niveau de chiffrement minimal**.

   Lorsque vous sélectionnez cette option, un tableau indique la hiérarchie de chiffrement et les niveaux de chiffrement autorisés aux utilisateurs lorsque le type de chiffrement que vous choisissez devient le minimum.

1. Après avoir créé votre groupe de travail ou mis à jour la configuration de votre groupe de travail, choisissez **Créer un groupe de travail** ou **Enregistrer les modifications**.

### Utilisez l'API Athena ou AWS CLI pour activer le chiffrement minimal
<a name="workgroups-minimum-encryption-enabling-using-the-athena-api-or-cli"></a>

Lorsque vous utilisez l'[UpdateWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_UpdateWorkGroup.html)API [CreateWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateWorkGroup.html)or pour créer ou mettre à jour un groupe de travail Athena SQL, définissez [EnforceWorkGroupConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html#athena-Type-WorkGroupConfiguration-EnforceWorkGroupConfiguration)sur `false``true`, [EnableMinimumEncryptionConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html#athena-Type-WorkGroupConfiguration-EnableMinimumEncryptionConfiguration)et utilisez le [EncryptionOption](https://docs.aws.amazon.com/athena/latest/APIReference/API_EncryptionConfiguration.html#athena-Type-EncryptionConfiguration-EncryptionOption)pour spécifier le type de chiffrement.

Dans le AWS CLI, utilisez la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/update-work-group.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/update-work-group.html)commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/create-work-group.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/create-work-group.html)ou avec les `--configuration-updates` paramètres `--configuration` or et spécifiez les options correspondant à celles de l'API.

# Configuration de l’accès aux instructions préparées
<a name="security-iam-athena-prepared-statements"></a>

Cette rubrique traite des autorisations IAM pour les instructions préparées dans Amazon Athena. Chaque fois que vous utilisez des politiques IAM, veillez à respecter les bonnes pratiques IAM. Pour plus d'informations, consultez la rubrique [Bonnes pratiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) du *Guide de l'utilisateur IAM*.

Pour plus d'informations sur les instructions préparées, voir [Utilisation des requêtes paramétrées](querying-with-prepared-statements.md).

Les autorisations IAM suivantes sont requises pour créer, gérer et exécuter des instructions préparées.

```
athena:CreatePreparedStatement
athena:UpdatePreparedStatement
athena:GetPreparedStatement
athena:ListPreparedStatements
athena:DeletePreparedStatement
```

Utilisez ces autorisations comme indiqué dans le tableau suivant.


****  

| Pour | Utiliser ces autorisations | 
| --- | --- | 
| Exécuter une requête PREPARE | athena:StartQueryExecution athena:CreatePreparedStatement | 
| Ré-exécuter une requête PREPARE pour mettre à jour une instruction préparée existante | athena:StartQueryExecution athena:UpdatePreparedStatement | 
| Exécuter une requête EXECUTE | athena:StartQueryExecution athena:GetPreparedStatement | 
| Exécuter une requête DEALLOCATE PREPARE | athena:StartQueryExecution athena:DeletePreparedStatement | 

## Exemple
<a name="security-iam-athena-prepared-statements-example"></a>

L'exemple de politique IAM suivant accorde des autorisations pour gérer et exécuter des instructions préparées sur un ID de compte et un groupe de travail spécifiés.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:CreatePreparedStatement",
                "athena:UpdatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:DeletePreparedStatement",
                "athena:ListPreparedStatements"
            ],
            "Resource": [
                "arn:aws:athena:*:111122223333:workgroup/<workgroup-name>"
            ]
        }
    ]
}
```

------

# Utiliser des clés CalledVia contextuelles pour Athena
<a name="security-iam-athena-calledvia"></a>

Lorsqu'un [principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) fait une [demande](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-request) à AWS, AWS rassemble les informations de la demande dans un *contexte de demande* qui évalue et autorise la demande. Vous pouvez utiliser l'élément `Condition` d'une politique JSON pour comparer des clés dans le contexte de demande avec les valeurs de clé spécifiées dans votre politique. Les *clés de condition générales* sont des clés de condition avec un préfixe `aws:`.

## À propos de la clé de contexte aws:CalledVia
<a name="security-iam-athena-calledvia-the-awscalledvia-context-key"></a>

Vous pouvez utiliser la clé contextuelle de condition générale [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledvia](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledvia) pour comparer les services de la politique avec les services qui ont fait des demandes au nom du principal IAM (utilisateur ou rôle). Lorsqu'un principal adresse une demande à un Service AWS, ce service peut utiliser les informations d'identification du principal pour faire des demandes ultérieures à d'autres services. La clé `aws:CalledVia` contient une liste ordonnée des services de la chaîne ayant effectué des demandes pour le compte du principal.

En spécifiant un nom principal de service pour la clé de `aws:CalledVia` contexte, vous pouvez la rendre Service AWS spécifique. Par exemple, vous pouvez utiliser la clé de condition `aws:CalledVia` pour limiter les demandes à celles effectuées à partir d'Athena. Pour utiliser la clé de condition `aws:CalledVia` dans une politique avec Athena, vous devez spécifier le `athena.amazonaws.com` du nom du principal du service Athena, comme dans l'exemple suivant.

```
 ...
    "Condition": {
        "ForAnyValue:StringEquals": { 
            "aws:CalledVia": "athena.amazonaws.com"
        }
    }
...
```

Vous pouvez utiliser la clé contextuelle `aws:CalledVia` pour vous assurer que les appelants n'ont accès à une ressource (comme une fonction Lambda) que s'ils appellent la ressource à partir d'Athena.

**Note**  
La clé de contexte `aws:CalledVia` n’est pas compatible avec la fonctionnalité de propagation d’identité approuvée.

## Ajouter une clé de CalledVia contexte pour accéder aux fonctions Lambda
<a name="security-iam-athena-calledvia-example-policy-to-add-an-optional-calledvia-context-key-for-fine-grained-access-to-a-lambda-function"></a>

Athena exige que l'appelant dispose d'autorisations `lambda:InvokeFunction` afin d'invoquer la fonction Lambda associée à la requête. L’instruction suivante spécifie que l’utilisateur peut invoquer des fonctions Lambda uniquement depuis Athena.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-1:111122223333:function:OneAthenaLambdaFunction",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:CalledVia": "athena.amazonaws.com"
                }
            }
        }
    ]
}
```

------

L'exemple suivant montre l'ajout de l'instruction précédente à une politique qui permet à un utilisateur d'exécuter et de lire une requête fédérée. Les principals autorisés à effectuer ces actions peuvent exécuter des requêtes qui spécifient les catalogues Athena associés à une source de données fédérée. Cependant, le principal ne peut pas accéder à la fonction Lambda associée, à moins que la fonction ne soit invoquée par Athena.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0", 
            "Effect": "Allow",
            "Action": [ 
                "athena:GetWorkGroup", 
                "s3:PutObject", 
                "s3:GetObject", 
                "athena:StartQueryExecution", 
                "s3:AbortMultipartUpload",  
                "athena:StopQueryExecution", 
                "athena:GetQueryExecution", 
                "athena:GetQueryResults", 
                "s3:ListMultipartUploadParts" 
            ], 
            "Resource": [ 
                "arn:aws:athena:*:111122223333:workgroup/WorkGroupName",
                "arn:aws:s3:::MyQueryResultsBucket/*", 
                "arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*"
            ] 
        }, 
        {
            "Sid": "VisualEditor1", 
            "Effect": "Allow", 
            "Action": "athena:ListWorkGroups", 
            "Resource": "*" 
        }, 
        {
            "Sid": "VisualEditor2", 
            "Effect": "Allow", 
            "Action": 
                [ 
                "s3:ListBucket", 
                "s3:GetBucketLocation" 
                ], 
            "Resource": "arn:aws:s3:::MyLambdaSpillBucket" 
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:OneAthenaLambdaFunction", 
                "arn:aws:lambda:*:111122223333:function:AnotherAthenaLambdaFunction"
            ], 
            "Condition": {
                "ForAnyValue:StringEquals": { 
                    "aws:CalledVia": "athena.amazonaws.com"
                }
            }
        }            
    ]
}
```

------

Pour plus d'informations sur les clés de condition `CalledVia`, consultez la rubrique [Clés contextuelles de condition générale AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) du *Guide de l'utilisateur IAM*.

# Autorisation de l’accès à un connecteur de données Athena pour un metastore Hive externe
<a name="hive-metastore-iam-access"></a>

Les exemples de politique d'autorisation présentés dans cette rubrique illustrent les actions autorisées requises et les ressources pour lesquelles elles sont autorisées. Examinez attentivement ces politiques et modifiez-les en fonction de vos besoins avant d'attacher des politiques d'autorisation similaires aux identités IAM.
+  [Example Policy to Allow an IAM Principal to Query Data Using Athena Data Connector for External Hive Metastore](#hive-using-iam) 
+  [Example Policy to Allow an IAM Principal to Create an Athena Data Connector for External Hive Metastore](#hive-creating-iam) 

**Example  – Autoriser un principal IAM à interroger des données à l'aide du connecteur de données Athena pour le métastore Hive externe**  
La politique suivante est attachée aux principals IAM en plus de [AWS politique gérée : AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy), qui accorde un accès complet aux actions Athena.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction",
                "lambda:GetLayerVersion",
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:MyAthenaLambdaFunction",
                "arn:aws:lambda:*:111122223333:function:AnotherAthenaLambdaFunction",
                "arn:aws:lambda:*:111122223333:layer:MyAthenaLambdaLayer:*"
            ]
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
            "Resource": "arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillLocation"
        }
    ]
}
```


**Explication des autorisations**  

| Actions autorisées | Explication | 
| --- | --- | 
|  <pre>"s3:GetBucketLocation",<br />"s3:GetObject",<br />"s3:ListBucket",<br />"s3:PutObject",<br />"s3:ListMultipartUploadParts",<br />"s3:AbortMultipartUpload"</pre>  |  `s3`les actions permettent de lire et d'écrire dans la ressource spécifiée`"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillLocation"`, où *MyLambdaSpillLocation* identifie le bucket de déversement spécifié dans la configuration de la ou des fonctions Lambda invoquées. L'identifiant de *arn:aws:lambda:\$1:*MyAWSAcctId*:layer:*MyAthenaLambdaLayer*:\$1* ressource n'est requis que si vous utilisez une couche Lambda pour créer des dépendances d'exécution personnalisées afin de réduire la taille des artefacts fonctionnels au moment du déploiement. Le caractère `*` en dernière position est un caractère générique pour la version de la couche.  | 
|  <pre>"lambda:GetFunction",<br />"lambda:GetLayerVersion",<br />"lambda:InvokeFunction"</pre>  | Permet aux requêtes d'invoquer les AWS Lambda fonctions spécifiées dans le Resource bloc. Par exemplearn:aws:lambda:\$1:MyAWSAcctId:function:MyAthenaLambdaFunction, où MyAthenaLambdaFunction indique le nom d'une fonction Lambda à invoquer. Plusieurs fonctions peuvent être spécifiées comme indiqué dans l'exemple. | 

**Example  – Autoriser un principal IAM à créer un connecteur de données Athena pour le métastore Hive externe**  
La politique suivante est attachée aux principals IAM en plus de [AWS politique gérée : AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy), qui accorde un accès complet aux actions Athena.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction",
                "lambda:ListFunctions",
                "lambda:GetLayerVersion",
                "lambda:InvokeFunction",
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:PublishLayerVersion",
                "lambda:DeleteLayerVersion",
                "lambda:UpdateFunctionConfiguration",
                "lambda:PutFunctionConcurrency",
                "lambda:DeleteFunctionConcurrency"
            ],
            "Resource": "arn:aws:lambda:*:111122223333: function: MyAthenaLambdaFunctionsPrefix*"
        }
    ]
}
```
 **Explication des autorisations**   
Permet aux requêtes d'invoquer les AWS Lambda fonctions pour les AWS Lambda fonctions spécifiées dans le `Resource` bloc. Par exemple`arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction`, où *MyAthenaLambdaFunction* indique le nom d'une fonction Lambda à invoquer. Plusieurs fonctions peuvent être spécifiées comme indiqué dans l'exemple.

# Autorisation d'accès des fonctions Lambda aux métastores Hive externes
<a name="hive-metastore-iam-access-lambda"></a>

Pour invoquer une fonction Lambda dans votre compte, vous devez créer un rôle disposant des autorisations suivantes :
+ `AWSLambdaVPCAccessExecutionRole` – Autorisation [rôle d'exécution AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) permettant de gérer des interfaces réseau élastiques qui connectent votre fonction à un VPC. Assurez-vous que vous disposez d'un nombre suffisant d'interfaces réseau et d'adresses IP disponibles.
+ `AmazonAthenaFullAccess`— La politique [AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy)gérée accorde un accès complet à Athéna.
+ Une politique Simple Storage Service (Amazon S3) pour permettre à la fonction Lambda d'écrire sur S3 et à Athena de lire à partir de S3.

Par exemple, la politique suivante définit l'autorisation pour l'emplacement de déversement `s3:\\mybucket\spill`.

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

****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Effect": "Allow", "Action": [
    "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/spill" ] } ] }
```

------

Chaque fois que vous utilisez des politiques IAM, veillez à respecter les bonnes pratiques IAM. Pour plus d'informations, consultez la rubrique [Bonnes pratiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) du *Guide de l'utilisateur IAM*.

## Création de fonctions Lambda
<a name="hive-metastore-iam-access-lambda-creating-lambda-functions"></a>

Pour créer une fonction Lambda dans votre compte, des autorisations de développement de fonction ou le rôle `AWSLambdaFullAccess` sont nécessaires. Pour de plus amples informations, veuillez consulter la rubrique [Politiques IAM basées sur l'identité pour AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html).

[Comme Athena utilise le AWS Serverless Application Repository pour créer des fonctions Lambda, le superutilisateur ou l'administrateur qui crée des fonctions Lambda doit également disposer de politiques IAM autorisant les requêtes fédérées Athena.](federated-query-iam-access.md)

## Configuration d’autorisations pour les opérations d’enregistrement de catalogue et d’API de métadonnées
<a name="hive-metastore-iam-access-lambda-catalog-registration-and-metadata-api-operations"></a>

Pour accéder à l'API pour l'enregistrement du catalogue et les opérations de métadonnées, vous pouvez utiliser la [politique AmazonAthenaFullAccess gérée](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy). Si vous n’utilisez pas la politique `AmazonAthenaFullAccess`, ajoutez les opérations d’API suivantes à vos politiques Athena :

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListDataCatalogs",
                "athena:GetDataCatalog",
                "athena:CreateDataCatalog",
                "athena:UpdateDataCatalog",
                "athena:DeleteDataCatalog",
                "athena:GetDatabase",
                "athena:ListDatabases",
                "athena:GetTableMetadata",
                "athena:ListTableMetadata"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

## Appel d’une fonction Lambda entre régions
<a name="hive-metastore-iam-access-lambda-cross-region-invocation"></a>

Par défaut, Athena invoque des fonctions Lambda définies dans la même région. Pour appeler une fonction Lambda dans une région Région AWS autre que celle dans laquelle vous exécutez les requêtes Athena, utilisez l'ARN complet de la fonction Lambda. 

L’exemple suivant montre comment un catalogue de la région Europe (Francfort) peut spécifier une fonction Lambda de la région USA Est (Virginie du Nord) pour extraire des données du metastore Hive de la région Europe (Francfort).

```
arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new     
```

Lorsque vous spécifiez l'ARN complet de cette manière, Athena peut appeler la fonction Lambda `external-hms-service-new` sur `us-east-1` pour récupérer les données du métastore Hive à partir de `eu-central-1`.

**Note**  
Le catalogue doit être enregistré dans le même répertoire Région AWS que celui que vous utilisez pour exécuter les requêtes Athena.

## Appel d’une fonction Lambda entre comptes
<a name="hive-metastore-iam-access-lambda-cross-account-invocation"></a>

Parfois, vous pouvez avoir besoin d'accéder à un métastore Hive à partir d'un autre compte. Par exemple, vous pouvez exécuter un metastore Hive avec un compte autre que celui utilisé pour les requêtes Athena. Différents groupes ou équipes peuvent exécuter le métastore Hive avec différents comptes à l'intérieur de leur VPC. Vous pouvez également accéder aux métadonnées de différents métastores Hive de différents groupes ou équipes.

Athena utilise la [prise en charge AWS Lambda de l'accès multi-comptes](https://aws.amazon.com/blogs/compute/easy-authorization-of-aws-lambda-functions/) pour permettre l'accès multi-comptes aux métastores Hive.

**Note**  
Notez que l'accès entre comptes pour Athena implique normalement un accès inter-comptes pour les métadonnées et les données dans Simple Storage Service (Amazon S3).

Imaginez le scénario suivant :
+ Le compte `111122223333` configure la fonction Lambda `external-hms-service-new` sur us-east-1 dans Athena pour accéder à un métastore Hive exécuté sur un cluster EMR.
+ Le compte `111122223333` veut autoriser le compte 444455556666 à accéder aux données du métastore Hive.

Pour autoriser `444455556666` un compte à accéder à la fonction Lambda`external-hms-service-new`, account `111122223333` utilise la commande suivante AWS CLI `add-permission`. La commande a été formatée pour être lisible.

```
$ aws --profile perf-test lambda add-permission
      --function-name external-hms-service-new
      --region us-east-1
      --statement-id Id-ehms-invocation2
      --action "lambda:InvokeFunction"
      --principal arn:aws:iam::444455556666:user/perf1-test
{
    "Statement": "{\"Sid\":\"Id-ehms-invocation2\",
                   \"Effect\":\"Allow\",
                   \"Principal\":{\"AWS\":\"arn:aws:iam::444455556666:user/perf1-test\"},
                   \"Action\":\"lambda:InvokeFunction\",
                   \"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new\"}"
}
```

Pour vérifier l'autorisation Lambda, utilisez la commande `get-policy`, comme dans l'exemple suivant. La commande a été formatée pour être lisible.

```
$ aws --profile perf-test lambda get-policy 
      --function-name arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new 
      --region us-east-1
{
    "RevisionId": "711e93ea-9851-44c8-a09f-5f2a2829d40f",
    "Policy": "{\"Version\":\"2012-10-17\",		 	 	 
                \"Id\":\"default\",
                \"Statement\":[{\"Sid\":\"Id-ehms-invocation2\",
                                \"Effect\":\"Allow\",
                                \"Principal\":{\"AWS\":\"arn:aws:iam::444455556666:user/perf1-test\"},
                                \"Action\":\"lambda:InvokeFunction\",
                                \"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new\"}]}"
}
```

Après avoir ajouté l'autorisation, vous pouvez utiliser un ARN complet de la fonction Lambda sur `us-east-1` comme suit lorsque vous définissez le catalogue `ehms` :

```
arn:aws:lambda:us-east-1:111122223333:function:external-hms-service-new
```

Pour de plus amples informations sur l’invocation entre régions, veuillez consulter [Appel d’une fonction Lambda entre régions](#hive-metastore-iam-access-lambda-cross-region-invocation) plus haut dans cette rubrique.

### Autorisation d’accès intercompte aux données
<a name="hive-metastore-iam-access-lambda-granting-cross-account-access-to-data"></a>

Avant de pouvoir exécuter des requêtes Athena, vous devez accorder l'accès inter-comptes aux données dans Simple Storage Service (Amazon S3). Vous pouvez effectuer cette opération de différentes manières :
+ Mettez à jour la politique de la liste de contrôle d'accès du compartiment Simple Storage Service (Amazon S3) avec un [ID utilisateur canonique](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html).
+ Ajoutez l'accès inter-comptes à la politique de compartiment Simple Storage Service (Amazon S3).

Par exemple, ajoutez la politique suivante à la politique de compartiment Simple Storage Service (Amazon S3) du compte `111122223333` pour permettre au compte `444455556666` de lire des données à partir de l'emplacement Simple Storage Service (Amazon S3) spécifié.

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

****  

```
{ "Version":"2012-10-17",		 	 	  "Statement": [ { "Sid": "Stmt1234567890123", "Effect":
    "Allow", "Principal": { "AWS":
        "arn:aws:iam::444455556666:user/perf1-test"
    }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::athena-test/lambda/dataset/*" } ]
    }
```

------

**Note**  
Il se peut que vous deviez accorder un accès inter-comptes à Simple Storage Service (Amazon S3) non seulement à vos données, mais aussi à votre emplacement de déversement Simple Storage Service (Amazon S3). Votre fonction Lambda déverse des données supplémentaires à l'emplacement de déversement lorsque la taille de l'objet de réponse dépasse un seuil donné. Veuillez consulter le début de cette rubrique pour obtenir un exemple de politique.

Dans l'exemple actuel, une fois que l'accès entre comptes est accordé à `444455556666,`, `444455556666` peut utiliser le catalogue `ehms` dans son propre `account` pour interroger les tables qui sont définies dans le compte `111122223333`.

Dans l'exemple suivant, le profil SQL Workbench `perf-test-1` est pour le compte `444455556666`. La requête utilise le catalogue `ehms` pour accéder au métastore Hive et aux données Simple Storage Service (Amazon S3) du compte `111122223333`.

![\[Accès inter-comptes aux données du métastore Hive et de Simple Storage Service (Amazon S3) dans SQL Workbench.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/hive-metastore-iam-access-lambda-1.png)


# Autorisations requises pour créer un connecteur et un catalogue Athena
<a name="athena-catalog-access"></a>

Pour invoquer Athena `CreateDataCatalog`, vous devez créer un rôle disposant des autorisations suivantes :

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
  {
  "Sid": "ECR",
  "Effect": "Allow",
  "Action": [
  "ecr:BatchGetImage",
  "ecr:GetDownloadUrlForLayer"
  ],
  "Resource": "arn:aws:ecr:*:*:repository/*"
  },
  {
  "Effect": "Allow",
  "Action": [
  "s3:GetObject",
  "glue:TagResource",
  "glue:GetConnection",
  "glue:CreateConnection",
  "glue:DeleteConnection",
  "glue:UpdateConnection",
  "serverlessrepo:CreateCloudFormationTemplate",
  "serverlessrepo:GetCloudFormationTemplate",
  "cloudformation:CreateStack",
  "cloudformation:DeleteStack",
  "cloudformation:DescribeStacks",
  "cloudformation:CreateChangeSet",
  "cloudformation:DescribeAccountLimits",
  "cloudformation:CreateStackSet",
  "cloudformation:ValidateTemplate",
  "cloudformation:CreateUploadBucket",
  "cloudformation:DescribeStackDriftDetectionStatus",
  "cloudformation:ListExports",
  "cloudformation:ListStacks",
  "cloudformation:EstimateTemplateCost",
  "cloudformation:ListImports",
  "lambda:InvokeFunction",
  "lambda:GetFunction",
  "lambda:DeleteFunction",
  "lambda:CreateFunction",
  "lambda:TagResource",
  "lambda:ListFunctions",
  "lambda:GetAccountSettings",
  "lambda:ListEventSourceMappings",
  "lambda:ListVersionsByFunction",
  "lambda:GetFunctionConfiguration",
  "lambda:PutFunctionConcurrency",
  "lambda:UpdateFunctionConfiguration",
  "lambda:UpdateFunctionCode",
  "lambda:DeleteFunctionConcurrency",
  "lambda:RemovePermission",
  "lambda:AddPermission",
  "lambda:ListTags",
  "lambda:GetAlias",
  "lambda:GetPolicy",
  "lambda:ListAliases",
  "ec2:DescribeSecurityGroups",
  "ec2:DescribeSubnets",
  "ec2:DescribeVpcs",
  "secretsmanager:ListSecrets",
  "glue:GetCatalogs"
  ],
  "Resource": "*"
  },
  {
  "Effect": "Allow",
  "Action": [
  "iam:AttachRolePolicy",
  "iam:DetachRolePolicy",
  "iam:DeleteRolePolicy",
  "iam:PutRolePolicy",
  "iam:GetRolePolicy",
  "iam:CreateRole",
  "iam:TagRole",
  "iam:DeleteRole",
  "iam:GetRole",
  "iam:PassRole",
  "iam:ListRoles",
  "iam:ListAttachedRolePolicies",
  "iam:ListRolePolicies",
  "iam:GetPolicy",
  "iam:UpdateRole"
  ],
  "Resource": [
  "arn:aws:iam::*:role/RoleName",
  "arn:aws:iam::111122223333:policy/*"
  ]
  }
  ]
  }
```

------

# Autorisation d’accès aux requêtes fédérées Athena : exemples de politiques
<a name="federated-query-iam-access"></a>

Les exemples de politique d'autorisation présentés dans cette rubrique illustrent les actions autorisées requises et les ressources pour lesquelles elles sont autorisées. Examinez attentivement ces politiques et modifiez-les en fonction de vos besoins avant de les attacher aux identités IAM.

Pour plus d'informations sur l'ajout des politiques aux identités IAM, consultez la rubrique [Ajout et suppression des autorisations d'identité IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) du [Guide de l'utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/).
+  [Example policy to allow an IAM principal to run and return results using Athena Federated Query](#fed-using-iam) 
+  [Example Policy to Allow an IAM Principal to Create a Data Source Connector](#fed-creating-iam) 

**Example  – Autoriser un principal IAM à exécuter et à renvoyer des résultats à l'aide de la requête fédérée Athena**  
La politique d'autorisations basée sur l'identité suivante autorise les actions dont un utilisateur ou un autre principal IAM a besoin pour utiliser la requête fédérée Athena. Les principals autorisés à effectuer ces actions peuvent exécuter des requêtes spécifiant les catalogues Athena associés à une source de données fédérée.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Athena",
            "Effect": "Allow",
            "Action": [
                "athena:GetDataCatalog",
                "athena:GetQueryExecution",
                "athena:GetQueryResults",
                "athena:GetWorkGroup",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution"
            ],
            "Resource": [
                "arn:aws:athena:*:111122223333:workgroup/WorkgroupName",
                "arn:aws:athena:us-east-1:111122223333:datacatalog/DataCatalogName"
            ]
        },
        {
            "Sid": "ListAthenaWorkGroups",
            "Effect": "Allow",
            "Action": "athena:ListWorkGroups",
            "Resource": "*"
        },
        {
            "Sid": "Lambda",
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:OneAthenaLambdaFunction",
                "arn:aws:lambda:*:111122223333:function:AnotherAthenaLambdaFunction"
            ]
        },
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:ListMultipartUploadParts",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::MyLambdaSpillBucket",
                "arn:aws:s3:::MyLambdaSpillBucket/*",
                "arn:aws:s3:::MyQueryResultsBucket",
                "arn:aws:s3:::MyQueryResultsBucket/*"
            ]
        }
    ]
}
```


**Explication des autorisations**  

| Actions autorisées | Explication | 
| --- | --- | 
|  <pre> "athena:GetQueryExecution", <br /> "athena:GetQueryResults",<br /> "athena:GetWorkGroup",<br /> "athena:StartQueryExecution",<br /> "athena:StopQueryExecution"</pre>  |  Autorisations Athena nécessaires pour exécuter des requêtes fédérées.  | 
|  <pre> "athena:GetDataCatalog",<br /> "athena:GetQueryExecution,"<br /> "athena:GetQueryResults",<br /> "athena:GetWorkGroup",<br /> "athena:StartQueryExecution",<br /> "athena:StopQueryExecution"</pre>  |  Autorisations Athena nécessaires pour exécuter des requêtes de vues fédérées. L’action `GetDataCatalog` est requise pour les vues.  | 
|  <pre>"lambda:InvokeFunction"</pre>  | Permet aux requêtes d'invoquer les AWS Lambda fonctions pour les AWS Lambda fonctions spécifiées dans le Resource bloc. Par exemplearn:aws:lambda:\$1:MyAWSAcctId:function:MyAthenaLambdaFunction, où MyAthenaLambdaFunction indique le nom d'une fonction Lambda à invoquer. Comme illustré dans l’exemple, il est possible de spécifier plusieurs fonctions. | 
|  <pre>"s3:AbortMultipartUpload",<br />"s3:GetBucketLocation",<br />"s3:GetObject",<br />"s3:ListBucket",<br />"s3:ListMultipartUploadParts",<br />"s3:PutObject"</pre>  |  Les autorisations `s3:ListBucket` et `s3:GetBucketLocation` sont requises pour accéder au compartiment de sortie des requêtes pour les principaux IAM qui exécutent `StartQueryExecution`. `s3:PutObject``s3:ListMultipartUploadParts`, et `s3:AbortMultipartUpload` autorisez l'écriture des résultats de la requête dans tous les sous-dossiers du bucket de résultats de requête tel que spécifié par l'identifiant de `arn:aws:s3:::MyQueryResultsBucket/*` ressource, où se *MyQueryResultsBucket* trouve le bucket de résultats de requête Athena. Pour de plus amples informations, veuillez consulter [Utilisation des résultats des requêtes et des requêtes récentes](querying.md). `s3:GetObject`permet de lire les résultats de la requête et l'historique des requêtes pour la ressource spécifiée sous la forme`arn:aws:s3:::MyQueryResultsBucket`, où se *MyQueryResultsBucket* trouve le bucket de résultats de requête Athena. `s3:GetObject`permet également de lire à partir de la ressource spécifiée sous la forme`"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*"`, où *MyLambdaSpillPrefix* est spécifiée dans la configuration de la ou des fonctions Lambda invoquées.  | 

**Example  – Autoriser un principal IAM à créer un connecteur de source de données**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:ListVersionsByFunction",
                "iam:CreateRole",
                "lambda:GetFunctionConfiguration",
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy",
                "lambda:PutFunctionConcurrency",
                "iam:PassRole",
                "iam:DetachRolePolicy",
                "lambda:ListTags",
                "iam:ListAttachedRolePolicies",
                "iam:DeleteRolePolicy",
                "lambda:DeleteFunction",
                "lambda:GetAlias",
                "iam:ListRolePolicies",
                "iam:GetRole",
                "iam:GetPolicy",
                "lambda:InvokeFunction",
                "lambda:GetFunction",
                "lambda:ListAliases",
                "lambda:UpdateFunctionConfiguration",
                "iam:DeleteRole",
                "lambda:UpdateFunctionCode",
                "s3:GetObject",
                "lambda:AddPermission",
                "iam:UpdateRole",
                "lambda:DeleteFunctionConcurrency",
                "lambda:RemovePermission",
                "iam:GetRolePolicy",
                "lambda:GetPolicy"
            ],
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:MyAthenaLambdaFunctionsPrefix*",
                "arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/*",
                "arn:aws:iam::*:role/RoleName",
                "arn:aws:iam::111122223333:policy/*"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateUploadBucket",
                "cloudformation:DescribeStackDriftDetectionStatus",
                "cloudformation:ListExports",
                "cloudformation:ListStacks",
                "cloudformation:ListImports",
                "lambda:ListFunctions",
                "iam:ListRoles",
                "lambda:GetAccountSettings",
                "ec2:DescribeSecurityGroups",
                "cloudformation:EstimateTemplateCost",
                "ec2:DescribeVpcs",
                "lambda:ListEventSourceMappings",
                "cloudformation:DescribeAccountLimits",
                "ec2:DescribeSubnets",
                "cloudformation:CreateStackSet",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "cloudformation:*",
            "Resource": [
                "arn:aws:cloudformation:*:111122223333:stack/aws-serverless-repository-MyCFStackPrefix*/*",
                "arn:aws:cloudformation:*:111122223333:stack/serverlessrepo-MyCFStackPrefix*/*",
                "arn:aws:cloudformation:*:*:transform/Serverless-*",
                "arn:aws:cloudformation:*:111122223333:stackset/aws-serverless-repository-MyCFStackPrefix*:*",
                "arn:aws:cloudformation:*:111122223333:stackset/serverlessrepo-MyCFStackPrefix*:*"
            ]
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": "serverlessrepo:*",
            "Resource": "arn:aws:serverlessrepo:*:*:applications/*"
        },
        {
            "Sid": "ECR",
            "Effect": "Allow",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "arn:aws:ecr:*:*:repository/*"
        }
    ]
}
```


**Explication des autorisations**  

| Actions autorisées | Explication | 
| --- | --- | 
|  <pre>"lambda:CreateFunction",<br />"lambda:ListVersionsByFunction",<br />"lambda:GetFunctionConfiguration",<br />"lambda:PutFunctionConcurrency",<br />"lambda:ListTags",<br />"lambda:DeleteFunction",<br />"lambda:GetAlias",<br />"lambda:InvokeFunction",<br />"lambda:GetFunction",<br />"lambda:ListAliases",<br />"lambda:UpdateFunctionConfiguration",<br />"lambda:UpdateFunctionCode",<br />"lambda:AddPermission",<br />"lambda:DeleteFunctionConcurrency",<br />"lambda:RemovePermission",<br />"lambda:GetPolicy"<br />"lambda:GetAccountSettings",<br />"lambda:ListFunctions",<br />"lambda:ListEventSourceMappings",<br /></pre>  |  Autoriser la création et la gestion des fonctions Lambda répertoriées en tant que ressources. Dans l’exemple, un préfixe de nom est utilisé dans l’identificateur de ressource `arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix*`, où `MyAthenaLambdaFunctionsPrefix` est un préfixe partagé utilisé dans le nom d’un groupe de fonctions Lambda afin qu’il ne soit pas nécessaire de les spécifier individuellement en tant que ressources. Vous pouvez spécifier une ou plusieurs ressources de fonction Lambda.  | 
|  <pre>"s3:GetObject"</pre>  | Permet de lire un bucket qui AWS Serverless Application Repository nécessite les informations spécifiées par l'identifiant de ressourcearn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/\$1. Ce compartiment peut être spécifique à votre compte. | 
|  <pre>"cloudformation:*"</pre>  |  Permet la création et la gestion des CloudFormation piles spécifiées par la ressource`MyCFStackPrefix`. Ces piles et ensembles de piles permettent de AWS Serverless Application Repository déployer les connecteurs et. UDFs  | 
|  <pre>"serverlessrepo:*"</pre>  | Permet de rechercher, d'afficher, de publier et de mettre à jour des applications dans le AWS Serverless Application Repository, spécifié par l'identifiant de ressourcearn:aws:serverlessrepo:\$1:\$1:applications/\$1. | 
|  <pre>"ecr:BatchGetImage",<br />"ecr:GetDownloadUrlForLayer"</pre>  |  Permet à la fonction Lambda créée d’accéder à l’image ECR du connecteur de fédération.  | 

# Autoriser l'accès à Athéna UDFs : exemples de politiques
<a name="udf-iam-access"></a>

Les exemples de politique d'autorisation présentés dans cette rubrique illustrent les actions autorisées requises et les ressources pour lesquelles elles sont autorisées. Examinez attentivement ces politiques et modifiez-les en fonction de vos besoins avant d'attacher des politiques d'autorisation similaires aux identités IAM.
+  [Example Policy to Allow an IAM Principal to Run and Return Queries that Contain an Athena UDF Statement](#udf-using-iam) 
+  [Example Policy to Allow an IAM Principal to Create an Athena UDF](#udf-creating-iam) 

**Example  – Autoriser un principal IAM à exécuter et renvoyer des requêtes contenant une instruction UDF Athena**  
La politique d'autorisations basée sur l'identité suivante autorise les actions dont un utilisateur ou un autre principal IAM a besoin pour exécuter des requêtes utilisant des instructions UDF Athena.  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "lambda:InvokeFunction",
                "athena:GetQueryResults",
                "s3:ListMultipartUploadParts",
                "athena:GetWorkGroup",
                "s3:PutObject",
                "s3:GetObject",
                "s3:AbortMultipartUpload",
                "athena:StopQueryExecution",
                "athena:GetQueryExecution",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:athena:*:MyAWSAcctId:workgroup/MyAthenaWorkGroup",
                "arn:aws:s3:::MyQueryResultsBucket/*",
                "arn:aws:lambda:*:MyAWSAcctId:function:OneAthenaLambdaFunction",
                "arn:aws:lambda:*:MyAWSAcctId:function:AnotherAthenaLambdaFunction"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "athena:ListWorkGroups",
            "Resource": "*"
        }
    ]
}
```


**Explication des autorisations**  

| Actions autorisées | Explication | 
| --- | --- | 
|  <pre>"athena:StartQueryExecution",<br /> "athena:GetQueryResults",<br /> "athena:GetWorkGroup",<br /> "athena:StopQueryExecution",<br /> "athena:GetQueryExecution",<br /></pre>  |  Autorisations Athena nécessaires pour exécuter des requêtes dans le groupe de travail `MyAthenaWorkGroup`.  | 
|  <pre>"s3:PutObject",<br />"s3:GetObject",<br />"s3:AbortMultipartUpload"</pre>  |  `s3:PutObject`et `s3:AbortMultipartUpload` autorisez l'écriture des résultats de la requête dans tous les sous-dossiers du bucket de résultats de requête tel que spécifié par l'identifiant de `arn:aws:s3:::MyQueryResultsBucket/*` ressource, où se *MyQueryResultsBucket* trouve le bucket de résultats de requête Athena. Pour de plus amples informations, veuillez consulter [Utilisation des résultats des requêtes et des requêtes récentes](querying.md). `s3:GetObject`permet de lire les résultats de la requête et l'historique des requêtes pour la ressource spécifiée sous la forme`arn:aws:s3:::MyQueryResultsBucket`, où se *MyQueryResultsBucket* trouve le bucket de résultats de requête Athena. Pour de plus amples informations, veuillez consulter [Utilisation des résultats des requêtes et des requêtes récentes](querying.md). `s3:GetObject`permet également de lire à partir de la ressource spécifiée sous la forme`"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*"`, où *MyLambdaSpillPrefix* est spécifiée dans la configuration de la ou des fonctions Lambda invoquées.  | 
|  <pre>"lambda:InvokeFunction"</pre>  | Permet aux requêtes d'invoquer les AWS Lambda fonctions spécifiées dans le Resource bloc. Par exemplearn:aws:lambda:\$1:MyAWSAcctId:function:MyAthenaLambdaFunction, où MyAthenaLambdaFunction indique le nom d'une fonction Lambda à invoquer. Plusieurs fonctions peuvent être spécifiées comme indiqué dans l'exemple. | 

**Example  – Autoriser un principal IAM à créer une UDF Athena**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:ListVersionsByFunction",
                "iam:CreateRole",
                "lambda:GetFunctionConfiguration",
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy",
                "lambda:PutFunctionConcurrency",
                "iam:PassRole",
                "iam:DetachRolePolicy",
                "lambda:ListTags",
                "iam:ListAttachedRolePolicies",
                "iam:DeleteRolePolicy",
                "lambda:DeleteFunction",
                "lambda:GetAlias",
                "iam:ListRolePolicies",
                "iam:GetRole",
                "iam:GetPolicy",
                "lambda:InvokeFunction",
                "lambda:GetFunction",
                "lambda:ListAliases",
                "lambda:UpdateFunctionConfiguration",
                "iam:DeleteRole",
                "lambda:UpdateFunctionCode",
                "s3:GetObject",
                "lambda:AddPermission",
                "iam:UpdateRole",
                "lambda:DeleteFunctionConcurrency",
                "lambda:RemovePermission",
                "iam:GetRolePolicy",
                "lambda:GetPolicy"
            ],
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:MyAthenaLambdaFunctionsPrefix*",
                "arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/*",
                "arn:aws:iam::*:role/RoleName",
                "arn:aws:iam::111122223333:policy/*"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateUploadBucket",
                "cloudformation:DescribeStackDriftDetectionStatus",
                "cloudformation:ListExports",
                "cloudformation:ListStacks",
                "cloudformation:ListImports",
                "lambda:ListFunctions",
                "iam:ListRoles",
                "lambda:GetAccountSettings",
                "ec2:DescribeSecurityGroups",
                "cloudformation:EstimateTemplateCost",
                "ec2:DescribeVpcs",
                "lambda:ListEventSourceMappings",
                "cloudformation:DescribeAccountLimits",
                "ec2:DescribeSubnets",
                "cloudformation:CreateStackSet",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "cloudformation:*",
            "Resource": [
                "arn:aws:cloudformation:*:111122223333:stack/aws-serverless-repository-MyCFStackPrefix*/*",
                "arn:aws:cloudformation:*:111122223333:stack/serverlessrepo-MyCFStackPrefix*/*",
                "arn:aws:cloudformation:*:*:transform/Serverless-*",
                "arn:aws:cloudformation:*:111122223333:stackset/aws-serverless-repository-MyCFStackPrefix*:*",
                "arn:aws:cloudformation:*:111122223333:stackset/serverlessrepo-MyCFStackPrefix*:*"
            ]
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": "serverlessrepo:*",
            "Resource": "arn:aws:serverlessrepo:*:*:applications/*"
        },
        {
            "Sid": "ECR",
            "Effect": "Allow",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "arn:aws:ecr:*:*:repository/*"
        }
    ]
}
```


**Explication des autorisations**  

| Actions autorisées | Explication | 
| --- | --- | 
|  <pre>"lambda:CreateFunction",<br />"lambda:ListVersionsByFunction",<br />"lambda:GetFunctionConfiguration",<br />"lambda:PutFunctionConcurrency",<br />"lambda:ListTags",<br />"lambda:DeleteFunction",<br />"lambda:GetAlias",<br />"lambda:InvokeFunction",<br />"lambda:GetFunction",<br />"lambda:ListAliases",<br />"lambda:UpdateFunctionConfiguration",<br />"lambda:UpdateFunctionCode",<br />"lambda:AddPermission",<br />"lambda:DeleteFunctionConcurrency",<br />"lambda:RemovePermission",<br />"lambda:GetPolicy"<br />"lambda:GetAccountSettings",<br />"lambda:ListFunctions",<br />"lambda:ListEventSourceMappings",<br /></pre>  |  Autoriser la création et la gestion des fonctions Lambda répertoriées en tant que ressources. Dans l’exemple, un préfixe de nom est utilisé dans l’identificateur de ressource `arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix*`, où *MyAthenaLambdaFunctionsPrefix* est un préfixe partagé utilisé dans le nom d’un groupe de fonctions Lambda afin qu’il ne soit pas nécessaire de les spécifier individuellement en tant que ressources. Vous pouvez spécifier une ou plusieurs ressources de fonction Lambda.  | 
|  <pre>"s3:GetObject"</pre>  | Permet de lire un bucket qui AWS Serverless Application Repository nécessite les informations spécifiées par l'identifiant de ressourcearn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/\$1. | 
|  <pre>"cloudformation:*"</pre>  |  Permet la création et la gestion des CloudFormation piles spécifiées par la ressource*MyCFStackPrefix*. Ces piles et ensembles de piles permettent de AWS Serverless Application Repository déployer les connecteurs et. UDFs  | 
|  <pre>"serverlessrepo:*"</pre>  | Permet de rechercher, d'afficher, de publier et de mettre à jour des applications dans le AWS Serverless Application Repository, spécifié par l'identifiant de ressourcearn:aws:serverlessrepo:\$1:\$1:applications/\$1. | 

# Autorisation d’accès pour les requêtes ML avec Athena
<a name="machine-learning-iam-access"></a>

Les principals IAM qui exécutent des requêtes Athena ML doivent être autorisés à effectuer l'action `sagemaker:invokeEndpoint` pour les points de terminaison Sagemaker qu'ils utilisent. Incluez une déclaration de politique similaire à la suivante dans les politiques d'autorisations basées sur l'identité attachées aux identités utilisateur. En outre, attachez la politique [AWS politique gérée : AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy), qui accorde un accès complet aux actions Athena, ou une politique en ligne modifiée qui autorise un sous-ensemble d'actions.

Remplacez `arn:aws:sagemaker:region:AWSAcctID:ModelEndpoint` dans l'exemple par l'ARN ou les points ARNs de terminaison du modèle à utiliser dans les requêtes. Pour plus d'informations, consultez la section [Actions, ressources et clés de condition pour l' SageMaker IA](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsagemaker.html) dans la *référence d'autorisation de service*.

```
{
            "Effect": "Allow",
            "Action": [
                "sagemaker:invokeEndpoint"
            ],
            "Resource": "arn:aws:sagemaker:us-west-2:123456789012:workteam/public-crowd/default"
}
```

Chaque fois que vous utilisez des politiques IAM, veillez à respecter les bonnes pratiques IAM. Pour plus d'informations, consultez la rubrique [Bonnes pratiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) du *Guide de l'utilisateur IAM*.

# Activation de l’accès fédéré à l’API Athena
<a name="access-federation-saml"></a>

Cette section décrit l'accès fédéré qui autorise un utilisateur ou une application cliente de votre organisation à appeler des opérations d'API Amazon Athena. Dans ce cas, les utilisateurs de l'organisation ne disposent pas d'un accès direct à Athena. Au lieu de cela, vous gérez les informations d'identification des utilisateurs AWS en dehors de Microsoft Active Directory. Active Directory prend en charge [SAML 2.0](https://wiki.oasis-open.org/security) (Security Assertion Markup Language 2.0).

Pour authentifier les utilisateurs, utilisez le pilote JDBC ou ODBC avec la prise en charge de SAML 2.0 pour accéder à Active Directory Federation Services (AD FS) 3.0 et permettre à une application cliente d'appeler les opérations d'API Athena.

Pour plus d'informations sur la prise en charge de SAML 2.0 AWS, voir [À propos de la fédération SAML 2.0](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html) dans le guide de l'utilisateur *IAM*. 

**Note**  
L'accès fédéré à l'API Athena est pris en charge pour un type de fournisseur d'identité (IdP) spécifique, l'Active Directory Federation Service (ADFS 3.0), qui fait partie de Windows Server. L’accès fédéré n’est pas compatible avec la fonctionnalité de propagation d’identité approuvée d’IAM Identity Center. L'accès est établi via les versions des pilotes JDBC ou ODBC prenant en charge SAML 2.0. Pour plus d’informations, consultez [Connexion à Amazon Athena avec JDBC](connect-with-jdbc.md) et [Connexion à Amazon Athena avec ODBC](connect-with-odbc.md).

**Topics**
+ [Avant de commencer](#access-federation-before-you-begin)
+ [Présentation du processus d’authentification](#access-federation-diagram)
+ [Procédure : Activation de l’accès fédéré SAML à l’API Athena](#access-federation-procedure)

## Avant de commencer
<a name="access-federation-before-you-begin"></a>

 Avant de commencer, effectuez les opérations obligatoires suivantes : 
+ Dans votre organisation, installez et configurez AD FS 3.0 comme votre fournisseur d'identité.
+ Installez et configurez les dernières versions disponibles des pilotes JDBC ou ODBC sur les clients qui sont utilisés pour l'accès à Athena. Le pilote doit inclure la prise en charge de l'accès fédéré compatible avec SAML 2.0. Pour plus d’informations, consultez [Connexion à Amazon Athena avec JDBC](connect-with-jdbc.md) et [Connexion à Amazon Athena avec ODBC](connect-with-odbc.md).

## Présentation du processus d’authentification
<a name="access-federation-diagram"></a>

Le schéma suivant illustre le processus d’authentification de l’accès fédéré à l’API Athena.

![\[Le diagramme de l'accès fédéré à l'API Athena.\]](http://docs.aws.amazon.com/fr_fr/athena/latest/ug/images/athena-saml-based-federation.png)


1. A l'aide d'une application cliente dotée du pilote JDBC ou ODBC, un utilisateur de l'organisation demande son authentification par l'IdP de l'organisation. L'IdP est AD FS 3.0.

1. L'IdP authentifie l'utilisateur par rapport à Active Directory, qui est la base d'identités de l'organisation.

1. L'IdP crée une assertion SAML à l'aide des informations concernant l'utilisateur et l'envoie à l'application cliente via le pilote JDBC ou ODBC.

1. Le pilote JDBC ou ODBC appelle l'opération d'API AWS Security Token Service [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) en lui transmettant les paramètres suivants :
   + L'ARN du fournisseur SAML
   + ARN du rôle à assumer.
   + Assertion SAML de l'IdP

   Pour plus d'informations, consultez [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) dans la *référence de l'AWS Security Token Service API*.

1. La réponse de l'API à l'application cliente via le pilote JDBC ou ODBC inclut les informations d'identification de sécurité temporaires.

1. L'application cliente utilise ces informations d'identification de sécurité temporaires pour appeler les opérations d'API Athena, ce qui permet aux utilisateurs d'accéder aux opérations d'API Athena.

## Procédure : Activation de l’accès fédéré SAML à l’API Athena
<a name="access-federation-procedure"></a>

Cette procédure établit un lien de confiance entre l'IdP de votre organisation et votre AWS compte afin de permettre un accès fédéré basé sur SAML au fonctionnement de l'API Amazon Athena.

**Pour activer l'accès fédéré à l'API Athena :**

1. Dans votre organisation, enregistrez-vous AWS en tant que fournisseur de services (SP) auprès de votre IdP. Ce processus est connu sous le nom d'*approbation des parties utilisatrices*. Pour plus d'informations, consultez la rubrique [Configuration de votre IdP SAML 2.0 à l'aide d'une relation d'approbation des parties utilisatrices](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html) du *Guide de l'utilisateur IAM*. Dans le cadre de cette tâche, effectuez les étapes suivantes :

   1. Obtenez l'exemple de document de métadonnées SAML à partir de cette URL : [https://signin.aws.amazon.com/static/saml-metadata.xml](https://signin.aws.amazon.com/static/saml-metadata.xml).

   1. Dans l'IdP (ADFS) de votre organisation, générez un fichier XML de métadonnées équivalent qui décrit votre IdP en tant que fournisseur d'identité pour. AWS Votre fichier de métadonnées doit inclure le nom de l'émetteur, la date de création, la date d'expiration et les clés AWS utilisées pour valider les réponses d'authentification (assertions) de votre organisation. 

1. Dans la console IAM, créez une entité de fournisseur d'identité SAML. Pour plus d'informations, consultez la rubrique [Création de fournisseurs d'identité SAML](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html) du *Guide de l'utilisateur IAM*. Dans le cadre de cette étape, effectuez ce qui suit : 

   1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. Chargez le document de métadonnées SAML généré par l'IdP (AD FS) à l'étape 1 de cette procédure. 

1. Dans la console IAM, créez un ou plusieurs rôles IAM pour votre IdP. Pour plus d'informations, consultez la rubrique [Création d'un rôle pour un fournisseur d'identité tiers (fédération)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) du *Guide de l'utilisateur IAM*. Dans le cadre de cette étape, effectuez ce qui suit : 
   + Dans la politique d'autorisation du rôle, dressez une liste des actions que les utilisateurs de l'organisation sont autorisés à effectuer dans AWS. 
   + Dans la politique d'approbation du rôle, définissez le fournisseur d'identité que vous avez créée à l'étape 2 de cette procédure en tant que principal. 

   Cela établit une relation de confiance entre votre organisation et AWS.

1. Dans l'IdP de votre organisation (ADFS), vous définissez les assertions qui associent les utilisateurs et les groupes de l'organisation aux rôles IAM. Le mappage des utilisateurs et des groupes aux rôles IAM est également connu sous le nom de *règle de demande*. Notez que différents utilisateurs et groupes de l'organisation peuvent être associés à différents rôles IAM. 

   Pour plus d'informations sur la configuration du mappage dans ADFS, consultez le billet de blog : [Activation de la fédération à AWS l'aide de Windows Active Directory, ADFS et SAML 2.0](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/).

1. Installez et configurez le pilote JDBC ou ODBC avec la prise en charge de SAML 2.0. Pour plus d’informations, consultez [Connexion à Amazon Athena avec JDBC](connect-with-jdbc.md) et [Connexion à Amazon Athena avec ODBC](connect-with-odbc.md).

1. Spécifiez la chaîne de connexion de votre application vers le pilote JDBC ou ODBC. Pour plus d’informations sur la chaîne de connexion que votre application doit utiliser, consultez *Using the Active Directory Federation Services (ADFS) Credentials Provider* dans le *Guide d’installation et de configuration du pilote JDBC* ou une rubrique similaire dans *Guide d’installation et de configuration du pilote ODBC* disponible au téléchargement au format PDF à partir des rubriques [Connexion à Amazon Athena avec JDBC](connect-with-jdbc.md) et [Connexion à Amazon Athena avec ODBC](connect-with-odbc.md).

   Le résumé global de la configuration de la chaîne de connexion pour les pilotes est le suivant :

   1. Dans `AwsCredentialsProviderClass configuration`, définissez le `com.simba.athena.iamsupport.plugin.AdfsCredentialsProvider` pour indiquer que vous souhaitez utiliser l'authentification basée sur SAML 2.0 via l'IdP AD FS. 

   1. Pour `idp_host`, fournissez le nom d'hôte du serveur d'IdP AD FS.

   1. Pour `idp_port`, fournissez le numéro de port que l'IdP AD FS écoute pour la demande d'assertion SAML.

   1. Pour `UID` et `PWD`, fournissez les informations d'identification de l'utilisateur de domaine AD. Lorsque vous utilisez le pilote sur Windows, si `UID` et `PWD` ne sont pas fournis, le pilote tente d'obtenir les informations d'identification de l'utilisateur connecté à la machine Windows.

   1. Vous pouvez également définir `ssl_insecure` sur `true`. Dans ce cas, le pilote ne vérifie pas l'authenticité du certificat SSL du serveur de l'IdP AD FS. Le fait de définir sur `true` est nécessaire si le certificat SSL de l'IdP AD FS n'a pas été configuré pour être approuvé par le pilote.

   1. Pour activer le mappage d'un utilisateur ou d'un groupe du domaine Active Directory utilisateur à un ou plusieurs rôles IAM (comme indiqué à l'étape 4 de cette procédure), dans le `preferred_role` pour la connexion JDBC ou ODBC, spécifiez le rôle IAM (ARN) à endosser pour le pilote de connexion. La spécification du `preferred_role` est facultative, et elle est utile si le rôle n'est pas le premier répertorié dans la règle de demande.

   En conséquence de cette procédure, les actions suivantes se produisent :

   1. [Le pilote JDBC ou ODBC appelle l'API AWS STS[AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) et lui transmet les assertions, comme indiqué à l'étape 4 du schéma d'architecture.](#access-federation-diagram) 

   1. AWS s'assure que la demande pour assumer le rôle provient de l'IdP référencé dans l'entité fournisseur SAML. 

   1. Si la demande aboutit, l'opération d'API AWS STS [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) renvoie un ensemble d'informations d'identification de sécurité temporaires, que votre application cliente utilise pour envoyer des demandes signées à Athena. 

      Votre application dispose maintenant d'informations sur l'utilisateur actuel et peut accéder à Athena par programmation. 