Accès détaillé aux bases de données et aux tables du 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.

Accès détaillé aux bases de données et aux tables du AWS Glue Data Catalog

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

Le terme « contrôle d'accès précis » est utilisé ici en référence à la sécurité au niveau des bases de données et des tableaux. Pour plus d'informations sur la sécurité au niveau des colonnes, des lignes et des cellules, consultez Filtrage des données et sécurité au niveau de la cellule dans Lake Formation.

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 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éer une politique IAM qui définit un accès précis aux ressources Création de politiques IAM 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) dans le Guide du développeur AWS Glue .

Dans cette section :

Limites

Tenez compte des limitations suivantes lorsque vous utilisez le contrôle d'accès précis avec le AWS Glue Data Catalog et 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 dans le Guide du développeur AWS Lake Formation .

  • Vous pouvez limiter l'accès uniquement aux bases de données et tables. Des contrôles précis des accès s'appliquent au niveau de la table et vous ne pouvez pas limiter l'accès aux partitions individuelles au sein d'une table. Pour plus d’informations, consultez Partitions de table et versions dans AWS Glue.

  • AWS Glue Data Catalog Il 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 supprimer des actions dans Athena, vous devez inclure des autorisations dans les actions AWS Glue . veuillez consulter Exemples d'autorisations granulaires aux tables et bases de données.

    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 relative à la liste des ARN dans le catalogue de données dans le Guide du développeur AWS Glue .

  • 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. veuillez consulter Exemples d'autorisations granulaires aux tables et bases de données.

  • 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. veuillez consulter Exemples d'autorisations granulaires aux tables et bases de données.

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

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" ] }

Partitions de table et versions dans AWS Glue

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.

Dans le cadre d'un contrôle d'accès détaillé, les autorisations d'accès suivantes s'appliquent :

  • Les contrôles précis des accès 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 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 une table myTable dans la base de données myDB, vous devez accorder des autorisations pour glue:GetPartitions au catalogue, à la base de données myDB et aux ressources myTable.

  • Les contrôles précis des 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 aux API de version de table AWS Glue présentes 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 dans le guide du AWS Glue développeur.

Exemples d'autorisations granulaires aux tables et bases de données

Le tableau suivant répertorie des exemples de politiques IAM basées sur l'identité qui permettent un accès précis aux bases de données et 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_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 dans le 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/*" ] }