Configurare l'accesso a database e tabelle in AWS Glue Data Catalog - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurare l'accesso a database e tabelle in AWS Glue Data Catalog

Se utilizzi il plugin AWS Glue Data Catalog con Amazon Athena, puoi definire politiche a livello di risorsa per gli oggetti Data Catalog di database e tabelle utilizzati in Athena.

Nota

Questo argomento descrive la sicurezza a livello di database e tabella. Per informazioni sulla configurazione della sicurezza a livello di colonna, riga e cella, consulta Filtraggio dei dati e sicurezza a livello di cella in Lake Formation.

Le autorizzazioni a livello di risorsa vengono definite in policy basate sull'identità. IAM

Importante

Questa sezione illustra le autorizzazioni a livello di risorsa nelle politiche basate sull'identità. IAM Queste sono diverse dalle policy basate sulle risorse. Per ulteriori informazioni sulle differenze, consulta Politiche basate sull'identità e politiche basate sulle risorse nella Guida per l'utente. IAM

Consulta i seguenti argomenti per queste operazioni:

Per eseguire questa operazione Consulta l'argomento seguente
Crea una politica che definisca l'accesso IAM alle risorse Creazione IAM di politiche nella Guida IAM per l'utente.
Scopri le politiche IAM basate sull'identità utilizzate in AWS Glue Politiche basate sull'identità (politiche) in IAM AWS Glue Guida per gli sviluppatori.

In questa sezione

Limitazioni

Considerate le seguenti limitazioni quando utilizzate il controllo degli accessi a livello di database e tabella per AWS Glue Data Catalog e Athena:

  • IAMI gruppi di lavoro Athena abilitati per Identity Center richiedono che Lake Formation sia configurato per utilizzare le IAM identità di Identity Center. Per ulteriori informazioni, consulta Integrating IAM Identity Center nel AWS Lake Formation Guida per gli sviluppatori.

  • È possibile limitare l'accesso solo a database e tabelle. Questi controlli si applicano a livello di tabella. Non puoi limitare l'accesso a singole partizioni all'interno di una tabella. Per ulteriori informazioni, consulta Informazioni sul controllo degli accessi per le partizioni e le versioni delle tabelle in AWS Glue.

  • Il AWS Glue Data Catalog contiene le seguenti risorse: CATALOGDATABASE,TABLE, eFUNCTION.

    Nota

    Da questo elenco, le risorse comuni tra Athena e il AWS Glue Data Catalog sono TABLEDATABASE, e CATALOG per ogni account. Functionè specifico per AWS Glue. Per le azioni di eliminazione in Athena, devi includere le autorizzazioni per AWS Glue azioni. Per informazioni, consulta Esempi di autorizzazioni a livello di database e tabella.

    La gerarchia è la seguente: CATALOG è un predecessore di tutti i DATABASES in ogni account e ogni DATABASE è un predecessore per tutte le relative TABLES e FUNCTIONS. Ad esempio, per una tabella denominata table_test che appartiene a un database db nel catalogo nell'account, i suoi predecessori sono db e il catalogo nell'account. Per il database db, il predecessore è il catalogo nell'account e i relativi discendenti sono le tabelle e le funzioni. Per ulteriori informazioni sulla struttura gerarchica delle risorse, vedere List of ARNs in Data Catalog in AWS Glue Guida per gli sviluppatori.

  • Per operazioni Athena di non eliminazione su una risorsa, come CREATE DATABASE, CREATE TABLE, SHOW DATABASE, SHOW TABLE o ALTER TABLE, hai bisogno delle autorizzazioni per chiamare tali operazioni sulla risorsa (tabella o database) e su tutti i predecessori della risorsa nel Catalogo dati. Ad esempio, per una tabella, i suoi predecessori sono i database di appartenenza e il catalogo dell'account. Per un database, il predecessore è il catalogo per questo account. Per informazioni, consulta Esempi di autorizzazioni a livello di database e tabella.

  • Per un'operazione di eliminazione in Athena, ad esempio DROP DATABASE o DROP TABLE, è necessaria anche l'autorizzazione a richiamare l'operazione di eliminazione su tutti i predecessori e discendenti della risorsa nel catalogo dati. Ad esempio, per eliminare un database è necessario disporre di autorizzazioni per il database, il catalogo, che è il suo predecessore e tutte le tabelle e le funzioni definite dall'utente, che sono i discendenti. Una tabella non ha discendenti. Per eseguire DROP TABLE, è necessario disporre dell'autorizzazione per questa operazione sulla tabella, il database di appartenenza e il catalogo. Per informazioni, consulta Esempi di autorizzazioni a livello di database e tabella.

Configura AWS Glue accesso al catalogo e al database per Regione AWS

Affinché Athena lavori con il AWS Glue, una politica che garantisce l'accesso al database e al AWS Glue Data Catalog nel tuo account per Regione AWS è obbligatorio. Per creare database, è richiesta anche l'autorizzazione CreateDatabase. Nel seguente esempio di politica, sostituisci il Regione AWS, Account AWS ID e nome del database con quelli personali.

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

Informazioni sul controllo degli accessi per le partizioni e le versioni delle tabelle in AWS Glue

In AWS Glue, le tabelle possono avere partizioni e versioni. Le versioni e le partizioni delle tabelle non sono considerate risorse indipendenti in AWS Glue. L'accesso alle versioni e alle partizioni della tabella viene fornito concedendo l'accesso alla tabella e alle risorse precedenti relative alla tabella.

Ai fini del controllo degli accessi, si applicano le seguenti autorizzazioni di accesso:

  • I controlli si applicano a livello di tabella. È possibile limitare l'accesso solo a database e tabelle. Ad esempio, se consenti l'accesso a una tabella partizionata, tale accesso si applica a tutte le partizioni della tabella. Non puoi limitare l'accesso a singole partizioni all'interno di una tabella.

    Importante

    Per eseguire azioni in AWS Glue sulle partizioni, sono richieste le autorizzazioni per le azioni di partizione a livello di catalogo, database e tabella. L'accesso alle partizioni all'interno di una tabella non è sufficiente. Ad esempio, per l'esecuzione GetPartitions su una tabella myTable del databasemyDB, è necessario concedere glue:GetPartitions le autorizzazioni per il catalogo, il myDB database e le risorse. myTable

  • I controlli di accesso non si applicano alle versioni delle tabelle. Come per le partizioni, l'accesso alle versioni precedenti di una tabella viene concesso tramite l'accesso alla versione APIs della tabella in AWS Glue sulla tabella e ai predecessori della tabella.

Per informazioni sulle autorizzazioni su AWS Glue azioni, vedere AWS Glue APIautorizzazioni: riferimento alle azioni e alle risorse nel AWS Glue Guida per gli sviluppatori.

Esempi di autorizzazioni a livello di database e tabella

La tabella seguente elenca esempi di politiche IAM basate sull'identità che consentono l'accesso a database e tabelle in Athena. Consigliamo di iniziare con questi esempi e, in base alle esigenze, regolarli per consentire o negare operazioni specifiche a particolari database e tabelle.

Questi esempi includono l'accesso a database e cataloghi in modo che Athena e AWS Glue possono lavorare insieme. Per più AWS Regioni, includi politiche simili per ciascuno dei tuoi database e cataloghi, una riga per ogni regione.

In questi esempi, sostituisci il database example_db e la tabella test con i nomi dei tuoi database e tabelle.

DDLdichiarazione Esempio di politica di IAM accesso che concede l'accesso alla risorsa
ALTER DATABASE Consente di modificare le proprietà del database 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 Consente di creare il database denominato 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 Consente di creare una tabella denominata test nel database 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 Consente di eliminare il database example_db, comprese tutte le tabelle in esso contenute.
{ "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 Consente di eliminare una tabella partizionata denominata test nel database example_db. Se la tabella non ha partizioni, non occorre includere operazioni di partizione.
{ "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 Consente di aggiornare i metadati del catalogo dopo aver aggiunto le partizioni compatibili con Hive alla tabella denominata test nel database 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 Consente di elencare tutti i database presenti in 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 Consente di elencare tutte le tabelle nel database 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/*" ] }