Configura l'accesso tra account a un AWS Glue Data Catalog condiviso utilizzando Amazon Athena - Prontuario AWS

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à.

Configura l'accesso tra account a un AWS Glue Data Catalog condiviso utilizzando Amazon Athena

Creato da Denis Avdonin () AWS

Ambiente: produzione

Tecnologie: DataLakes; Analisi; Big data

Carico di lavoro: tutti gli altri carichi di lavoro

AWSservizi: Amazon Athena; Glue AWS

Riepilogo

Questo modello fornisce step-by-step istruzioni, inclusi esempi di policy AWS Identity and Access Management (IAM), per configurare la condivisione tra account di un set di dati archiviato in un bucket Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) utilizzando il Glue Data Catalog. AWS Puoi archiviare il set di dati in un bucket S3. I metadati vengono raccolti da un crawler AWS Glue e inseriti nel AWS Glue Data Catalog. Il bucket S3 e il AWS Glue Data Catalog risiedono in un AWS account denominato account dati. Puoi fornire l'accesso ai IAM principali in un altro AWS account denominato account consumatore. Gli utenti possono interrogare i dati nell'account consumer utilizzando il motore di query serverless di Amazon Athena.

Prerequisiti e limitazioni

Prerequisiti

Versioni del prodotto

Questo modello funziona solo con il motore Athena versione 2 e il motore Athena versione 3. Ti consigliamo di eseguire l'aggiornamento alla versione 3 del motore Athena. Se non riesci a eseguire l'upgrade dalla versione 1 del motore Athena alla versione 3 del motore Athena, segui l'approccio dell'accesso al catalogo dati di Glue AWS Glue su più account con Amazon Athena nel Big Data Blog. AWS

Architettura

Stack tecnologico Target

  • Amazon Athena

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Glue

  • AWSIdentity and Access Management (IAM)

  • AWSServizio di gestione delle chiavi (AWSKMS)

Il diagramma seguente mostra un'architettura che utilizza IAM le autorizzazioni per condividere i dati in un bucket S3 in un AWS account (account dati) con un altro AWS account (account consumatore) tramite il AWS Glue Data Catalog.

Condivisione di un set di dati in un bucket S3 tra un account dati e un account consumatore utilizzando il AWS Glue Data Catalog.

Il diagramma mostra il flusso di lavoro seguente:

  1. La policy S3 bucket nell'account dati concede le autorizzazioni a un IAM ruolo nell'account consumer e al ruolo del servizio crawler AWS Glue nell'account dati.

  2. La politica AWS KMS chiave nell'account dati concede le autorizzazioni per il IAM ruolo nell'account consumatore e per il ruolo del servizio crawler AWS Glue nell'account dati.

  3. Il crawler AWS Glue nell'account dati rileva lo schema dei dati archiviati nel bucket S3.

  4. La politica delle risorse del AWS Glue Data Catalog nell'account dati consente l'accesso al IAM ruolo nell'account consumatore.

  5. Un utente crea un riferimento di catalogo denominato nell'account consumer utilizzando un AWS CLI comando.

  6. Una IAM policy concede a un IAM ruolo nell'account consumer l'accesso alle risorse dell'account dati. La politica di fiducia del IAM ruolo consente agli utenti dell'account consumatore di assumere il IAM ruolo.

  7. Un utente dell'account consumer assume il IAM ruolo e accede agli oggetti nel catalogo dati utilizzando SQL le query.

  8. Il motore serverless Athena esegue le interrogazioni. SQL

Nota: le IAM migliori pratiche consigliano di concedere le autorizzazioni a un IAM ruolo e di utilizzare la federazione delle identità.

Strumenti

  • Amazon Athena è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon S3 utilizzando standard. SQL

  • Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

  • AWSGlue è un servizio di estrazione, trasformazione e caricamento (ETL) completamente gestito. Ti aiuta a classificare, pulire, arricchire e spostare i dati in modo affidabile tra archivi di dati e flussi di dati.

  • AWSIdentity and Access Management (IAM) consente di gestire in modo sicuro l'accesso alle AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.

  • AWSKey Management Service (AWSKMS) consente di creare e controllare chiavi crittografiche per proteggere i dati.

Epiche

AttivitàDescrizioneCompetenze richieste

Concedi l'accesso ai dati nel bucket S3.

Crea una policy per i bucket S3 basata sul modello seguente e assegna la policy al bucket in cui sono archiviati i dati.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" } ] }

La policy bucket concede le autorizzazioni per il IAM ruolo nell'account consumer e per il ruolo del servizio crawler AWS Glue nell'account dati.

Amministratore del cloud

(Se richiesto) Concedi l'accesso alla chiave di crittografia dei dati.

Se il bucket S3 è crittografato da una AWS KMS chiave, concedi l'kms:Decryptautorizzazione sulla chiave al IAM ruolo nell'account consumer e al ruolo del servizio crawler AWS Glue nell'account dati.

Aggiorna la policy chiave con la seguente dichiarazione:

{ "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Amministratore cloud

Concedi al crawler l'accesso ai dati.

Allega la seguente IAM policy al ruolo di servizio del crawler:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" } ] }
Amministratore cloud

(Se richiesto) Concedi al crawler l'accesso alla chiave di crittografia dei dati.

Se il bucket S3 è crittografato da una AWS KMS chiave, concedi l'kms:Decryptautorizzazione sulla chiave al ruolo di servizio del crawler allegando la seguente politica:

{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Amministratore del cloud

Concedi al IAM ruolo nell'account consumer e al crawler l'accesso al catalogo dati.

  1. Accedi alla console di AWS gestione e apri la console AWS Glue.

  2. Nel pannello di navigazione, in Data Catalog, scegli Impostazioni.

  3. Nella sezione Autorizzazioni, aggiungi la seguente dichiarazione, quindi scegli Salva.

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : { "AWS" : [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action" : "glue:*", "Resource" : [ "arn:aws:glue:<region>:<data account id>:catalog", "arn:aws:glue:<region>:<data account id>:database/*", "arn:aws:glue:<region>:<data account id>:table/*" ] } ] }

Questa politica consente tutte le azioni AWS Glue su tutti i database e le tabelle dell'account dati. È possibile personalizzare la politica in modo da concedere solo le autorizzazioni necessarie ai responsabili dei consumatori. Ad esempio, è possibile fornire l'accesso in sola lettura a tabelle o viste specifiche in un database.

Amministratore cloud
AttivitàDescrizioneCompetenze richieste

Crea un riferimento denominato per il catalogo dati.

Per creare un riferimento denominato al catalogo di dati, utilizzate CloudShello installatelo localmente AWS CLI per eseguire il seguente comando:

aws athena create-data-catalog --name <shared catalog name> --type GLUE --parameters catalog-id=<data account id>
Amministratore cloud

Concedi al IAM ruolo nell'account del consumatore l'accesso ai dati.

Allega la seguente politica al IAM ruolo nell'account consumatore per concedere al ruolo l'accesso ai dati tra account diversi:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" }, { "Effect": "Allow", "Action": "glue:*", "Resource": [ "arn:aws:glue:<region>:<data account id>:catalog", "arn:aws:glue:<region>:<data account id>:database/*", "arn:aws:glue:<region>:<data account id>:table/*" ] } ] }

Successivamente, utilizza il seguente modello per specificare quali utenti possono accettare il IAM ruolo nella relativa politica di fiducia:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<consumer account id>:user/<IAM user>" }, "Action": "sts:AssumeRole" } ] }

Infine, concedi all'utente le autorizzazioni per assumere il IAM ruolo associando la stessa politica al gruppo di utenti a cui appartengono.

Amministratore cloud

(Se richiesto) Concedi al IAM ruolo nell'account del consumatore l'accesso alla chiave di crittografia dei dati.

Se il bucket S3 è crittografato con una AWS KMS chiave, concedi l'kms:Decryptautorizzazione sulla chiave al IAM ruolo nell'account consumer allegando la seguente politica:

{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Amministratore cloud

Passa al IAM ruolo nell'account consumer per accedere ai dati.

In qualità di consumatore di dati, passa al IAM ruolo di accesso ai dati nell'account dati.

Consumatore di dati

Accedi ai dati.

Interroga i dati usando Athena. Ad esempio, apri l'editor di query Athena ed esegui la seguente query:

SELECT * FROM <shared catalog name>.<database name>.<table name>

Invece di utilizzare un riferimento denominato al catalogo, puoi fare riferimento al catalogo anche tramite il relativo Amazon Resource Name (ARN).

Nota: se utilizzi un riferimento dinamico al catalogo in una query o in una vista, racchiudi il riferimento tra virgolette doppie con escape (\»). Per esempio:

SELECT * FROM \"glue:arn:aws:glue:<region>:<data account id>:catalog\".<database name>.<table name>

Per ulteriori informazioni, consulta Accesso multiaccount ai cataloghi di dati AWS Glue nella Guida per l'utente di Amazon Athena.

Consumatore di dati

Risorse correlate

Informazioni aggiuntive

Utilizzo di Lake Formation come alternativa per la condivisione tra account

Puoi anche usare AWS Lake Formation per condividere l'accesso agli oggetti del catalogo AWS Glue tra gli account. Lake Formation offre un controllo granulare degli accessi a livello di colonna e riga, controllo degli accessi basato su tag, tabelle ACID gestite per le transazioni e altre funzionalità. Sebbene Lake Formation sia ben integrato con Athena, richiede una configurazione aggiuntiva rispetto all'approccio basato esclusivamente su questo modelloIAM. Ti consigliamo di prendere in considerazione la decisione di utilizzare Lake Formation o IAM solo i controlli di accesso all'interno del contesto più ampio dell'architettura complessiva della tua soluzione. Le considerazioni includono quali altri servizi sono coinvolti e come si integrano con entrambi gli approcci.