Configurez l'accès aux bases de données et aux tables dans le AWS Glue Data Catalog - Amazon Athena

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.

Configurez l'accès aux bases de données et aux tables dans le AWS Glue Data Catalog

Si vous utilisez le plugin 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 traite de la sécurité au niveau des bases de données et des tables. Pour plus d'informations sur la configuration de la sécurité au niveau des colonnes, des lignes et des cellules, voir Filtrage des données et sécurité au niveau des cellules dans Lake Formation.

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

Important

Cette section décrit les autorisations au niveau des ressources dans les politiques basées sur l'IAMidentité. Celles-ci sont différentes des politiques basées sur les ressources. Pour plus d'informations sur les différences, consultez les sections Politiques basées sur l'identité et politiques basées sur les ressources dans le 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éez une IAM politique qui définit l'accès aux ressources Création de IAM politiques dans le guide de IAM l'utilisateur.
En savoir plus sur IAM les politiques basées sur l'identité utilisées dans AWS Glue Politiques basées sur l'identité (IAMpolitiques) dans le AWS Glue Guide du développeur.

Dans cette section :

Limites

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 et Athéna :

  • IAMLes groupes de travail Athena compatibles avec Identity Center nécessitent que Lake Formation soit configuré pour utiliser les identités d'IAMIdentity Center. Pour plus d'informations, consultez la section Intégration IAM d'Identity Center dans le AWS Lake Formation Guide du développeur.

  • Vous pouvez limiter l'accès uniquement aux bases de données et tables. Ces contrôles s'appliquent au niveau de la table. 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.

  • Le AWS Glue Data Catalog contient les ressources suivantes : CATALOGDATABASE,TABLE, etFUNCTION.

    Note

    Dans cette liste, les ressources communes à Athéna et au AWS Glue Data Catalog sont TABLEDATABASE, et CATALOG pour chaque compte. Functionest spécifique à AWS Glue. Pour les actions de suppression dans Athena, vous devez inclure des autorisations pour AWS Glue actions. Consultez Exemples d'autorisations au niveau de la base de données et de la table.

    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, voir Liste des éléments du catalogue de données ARNs dans le AWS Glue Guide du 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 de la base de données et de la table.

  • 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 de la base de données et de la table.

Configuration AWS Glue accès à votre catalogue et à votre base de données par Région AWS

Pour qu'Athéna travaille avec le AWS Glue, une politique qui accorde l'accès à votre base de données et au AWS Glue Data Catalog dans votre compte par Région AWS est obligatoire. Pour créer des bases de données, l'autorisation CreateDatabase est également requise. Dans l'exemple de politique suivant, remplacez le Région AWS, Compte AWS ID et nom de base de données avec 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

Entrée 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 aux partitions des tables est donné en accordant l'accès à la table et aux ressources des ancêtres de la table.

Aux fins du contrôle d'accès, les autorisations d'accès suivantes s'appliquent :

  • Les contrôles s'appliquent au niveau de la table. 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 dans AWS Glue sur les 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 une table myTable dans la base de donnéesmyDB, vous devez accorder glue:GetPartitions des autorisations sur le catalogue, la myDB base de données et les myTable ressources.

  • Les contrôles d'accès ne s'appliquent pas aux versions des tables. 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 APIs dans AWS Glue sur la table, et sur la table, les ancêtres.

Pour plus d'informations sur les autorisations sur AWS Glue actions, voir AWS Glue APIautorisations : référence aux actions et aux ressources dans le AWS Glue Guide du développeur.

Exemples d'autorisations au niveau de la base de données et de la table

Le tableau suivant répertorie des exemples de politiques IAM basées sur l'identité qui autorisent 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 et AWS Glue peuvent 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.

DDLdéclaration Exemple de politique d'IAMaccès accordant l'accès à la ressource
ALTER DATABASE Permet de modifier les propriétés de la base de données example_db.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:UpdateDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db" ] }
CREATE DATABASE Permet de créer la base de données nommée example_db.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db" ] }
CREATE TABLE Permet de créer une table nommée test dans la base de données example_db.
{ "Sid": "DatabasePermissions", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db" ] }, { "Sid": "TablePermissions", "Effect": "Allow", "Action": [ "glue:GetTables", "glue:GetTable", "glue:GetPartitions", "glue:CreateTable" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/test" ] }
DROP DATABASE Permet de supprimer la base de données example_db, y compris toutes ses tables.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:DeleteDatabase", "glue:GetTables", "glue:GetTable", "glue:DeleteTable" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/*", "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/example_db/*" ] }
DROP TABLE Permet de supprimer une table partitionnée nommée test dans la base de données example_db. Si votre table n'a pas de partitions, n'incluez pas d'actions de partition.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTable", "glue:DeleteTable", "glue:GetPartitions", "glue:GetPartition", "glue:DeletePartition" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/test" ] }
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_db.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:GetTable", "glue:GetPartitions", "glue:GetPartition", "glue:BatchCreatePartition" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/test" ] }
SHOW DATABASES Permet de répertorier toutes les bases de données du AWS Glue Data Catalog.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/*" ] }
SHOW TABLES Permet de répertorier toutes les tables de la base de données example_db.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/*" ] }