Come posso effettuare una condivisione multi-account di database e tabelle del Catalogo dati AWS Glue utilizzando AWS Lake Formation?

9 minuti di lettura
0

Desidero effettuare una condivisione multi-account di database e tabelle del Catalogo dati AWS Glue utilizzando AWS Lake Formation.

Risoluzione

Con la funzionalità multi-account di Lake Formation, puoi concedere l'accesso ad altri account AWS affinché possano scrivere e condividere dati da o verso il data lake. Le risorse possono essere condivise tramite il controllo degli accessi basato su tag o risorse denominate. Questo articolo si concentra sulla concessione dell'accesso multi-account alle risorse del Catalogo dati utilizzando il metodo della risorsa denominata.

Assicurati che i prerequisiti siano soddisfatti

Tieni presente i seguenti prerequisiti prima di condividere le risorse del Catalogo dati con un altro account o accedere alle risorse condivise da un altro account:

Revoca le autorizzazioni di Lake Formation

Revoca tutte le autorizzazioni di Lake Formation dal gruppo IAMAllowedPrincipals per la risorsa Catalogo dati.

Impedisci alle nuove tabelle di disporre di autorizzazioni Super

Per i database del Catalogo dati che contengono tabelle che potresti condividere, impedisci alle nuove tabelle di avere una concessione predefinita di Super a IAMAllowedPrincipals:

  1. Apri la console Lake Formation.
  2. Nel pannello di navigazione, in Catalogo dati, scegli Database.
  3. Seleziona il database che desideri aggiornare.
  4. Scegli Operazioni, quindi seleziona Modifica.
  5. In Autorizzazioni predefinite per le tabelle appena create, deseleziona Usa solo il controllo di accesso IAM per le nuove tabelle in questo database.
  6. Scegli Salva.

Per ulteriori informazioni, consulta Super.

Aggiungi le autorizzazioni necessarie per l'accesso multi-account

Se la policy delle risorse del Catalogo dati AWS Glue è già abilitata nell'account, puoi rimuovere la policy o aggiungere alla policy le nuove autorizzazioni necessarie per le concessioni multi-account. Di seguito è riportato un esempio di policy delle risorse per fornire in AWS Glue l'accesso multi-account all'account 5555666677778888 dall'account 1111222233334444.

Per ulteriori informazioni, consulta Come concedere l'accesso multi-account.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ram.amazonaws.com"
      },
      "Action": "glue:ShareResource",
      "Resource": [
        "arn:aws:glue:us-east-1:1111222233334444:table/*/*",
        "arn:aws:glue:us-east-1:1111222233334444:database/*",
        "arn:aws:glue:us-east-1:1111222233334444:catalog"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::5555666677778888:root"
      },
      "Action": "glue:*",
      "Resource": [
        "arn:aws:glue:us-east-1:1111222233334444:table/*/*",
        "arn:aws:glue:us-east-1:1111222233334444:database/*",
        "arn:aws:glue:us-east-1:1111222233334444:catalog"
      ]
    }
  ]
}

Abilita la condivisione con le organizzazioni

Se le risorse del Catalogo dati sono condivise tra organizzazioni, abilita la condivisione con AWS Organizations utilizzando la console AWS RAM. L'utente o il ruolo AWS Identity and Access Management (IAM) che abilita questa opzione deve disporre dell'autorizzazione IAM ram:EnableSharingWithAwsOrganization.

Per ulteriori informazioni sull’accesso multi-account, consulta Prerequisiti.

Concedi le autorizzazioni IAM necessarie

Account di origine: per utilizzare il metodo delle risorse denominate allo scopo di concedere autorizzazioni multi-account, devi disporre delle autorizzazioni IAM necessarie per AWS Glue e AWS Resource Access Manager (AWS RAM). Puoi scegliere la policy gestita da AWS AWSLakeFormationCrossAccountManager che concede queste autorizzazioni o creare una nuova policy basata su questa policy.

Account di destinazione: gli amministratori del data lake negli account di destinazione devono disporre della seguente policy aggiuntiva. Questa policy consente all'amministratore di accettare gli inviti alla condivisione delle risorse di AWS RAM e di abilitare la condivisione delle risorse con le organizzazioni:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ram:AcceptResourceShareInvitation",
        "ram:RejectResourceShareInvitation",
        "ec2:DescribeAvailabilityZones",
        "ram:EnableSharingWithAwsOrganization"
      ],
      "Resource": "*"
    }
  ]
}

Nota: l'utente o il ruolo IAM che riceve l'invito alla condivisione delle risorse in AWS RAM deve disporre delle autorizzazioni IAM necessarie per glue:PutResourcePolicy.

Condividi un database e le relative tabelle con l'account di destinazione

Per condividere un database e tutte le tabelle del database con l'account di destinazione che non fa parte dell'organizzazione, procedi come segue:

Nota: se condividi tutte le tabelle di un database nell'account di origine, qualsiasi nuova tabella creata nell'account di origine viene automaticamente condivisa con l'account di destinazione.

Nell'account di origine, procedi come segue:

  1. Apri la console Lake Formation e accedi come amministratore del data lake.
  2. Nel pannello di navigazione, scegli Database.
  3. Seleziona il database che desideri condividere.
  4. Scegli Operazioni, quindi seleziona Concedi.
  5. Seleziona Account esterno.
  6. Per l'ID dell'account AWS o l'ID dell'organizzazione AWS, inserisci l'ID dell'account di destinazione.
  7. Per Tabella, assicurati che l'opzione Tutte le tabelle sia selezionata.
  8. Per **Autorizzazioni tabella ** e Autorizzazioni concedibili, seleziona le autorizzazioni di accesso che desideri concedere.
  9. Scegli Concedi.

Nell'account di destinazione, procedi come segue:

  1. Apri la console AWS RAM.
  2. Nel pannello di navigazione, in Condiviso con me, scegli Condivisioni di risorse.
  3. Controlla l'elenco delle condivisioni di risorse a cui ti è stato concesso l'accesso.
  4. Per accettare l'invito per la risorsa condivisa dall'account di origine, seleziona l'ID di condivisione della risorsa e scegli Accetta condivisione di risorse.
  5. Apri la console Lake Formation.
  6. Nel pannello di navigazione, scegli Database.
    Puoi visualizzare il database condiviso nell'elenco. L'ID dell'account del proprietario di questo database mostra l'ID dell'account di origine.
  7. Seleziona il database condiviso, quindi scegli Operazioni.
  8. Scegli Create resource link (Crea collegamento alla risorsa).
  9. Nella pagina Create resource link (Crea collegamento alla risorsa), effettua le seguenti operazioni:
    Per Resource link name (Nome del collegamento alla risorsa), inserisci il nome del collegamento alla risorsa.
    Per Shared database (Database condiviso), assicurati che sia selezionato il nome del database condiviso.
    Per Shared database's owner ID (ID del proprietario del database condiviso), inserisci l'ID dell'account di origine.
  10. Scegli Crea.
    Il collegamento alla risorsa viene creato.

I collegamenti alle risorse sono oggetti del Catalogo dati che rappresentano collegamenti a database e tabelle di metadati, generalmente a database e tabelle condivisi da altri account AWS. Tali collegamenti aiutano a consentire l'accesso multi-account ai dati del data lake. Dopo aver creato il collegamento alla risorsa, è possibile interrogare le tabelle nel database condiviso con l'accesso dell'amministratore del data lake.

Per concedere l'accesso agli utenti/principali IAM per il database condiviso, concedi le autorizzazioni necessarie per il collegamento alla risorsa e per il database condiviso. Ciò consente agli utenti/principali IAM di visualizzare il database condiviso e il collegamento alla risorsa nella loro console Lake Formation. Gli utenti IAM possono anche visualizzare il database e il collegamento alla risorsa nella loro console Amazon Athena o Amazon Redshift Spectrum.

Per concedere l'accesso agli utenti IAM per il collegamento alla risorsa, procedi come segue:

  1. Apri la console Lake Formation e accedi come amministratore del data lake.
  2. Nel pannello di navigazione, scegli Database.
  3. Seleziona il collegamento alla risorsa che hai creato.
  4. Scegli Operazioni, quindi seleziona Concedi.
  5. In Principali, seleziona Utenti e ruoli IAM.
  6. Per Utenti e ruoli IAM, seleziona l'utente o il principale IAM a cui devi concedere l'accesso.
  7. In Resource link permissions (Autorizzazioni del collegamento alla risorsa), seleziona Descrivi.
  8. Scegli Concedi.

Per concedere l'accesso agli utenti IAM per i database condivisi, procedi come segue:

  1. Apri la console Lake Formation e accedi come amministratore del data lake.
  2. Nel pannello di navigazione, scegli Database.
  3. Seleziona il database condiviso.
  4. Scegli Operazioni, quindi seleziona Concedi.
  5. In Principali, seleziona Utenti e ruoli IAM.
  6. Per Utenti e ruoli IAM, seleziona l'utente o il principale IAM a cui devi concedere l'accesso.
  7. In Autorizzazioni del database, seleziona Descrivi.
    Nota: questo passaggio fornisce le autorizzazioni minime affinché gli utenti possano visualizzare il database condiviso.
  8. Scegli Concedi.

Per concedere l'accesso a tutte le tabelle del database o solo a specifiche tabelle, seleziona l'opzione Tutte le tabelle:

  1. Seleziona il collegamento alla risorsa.
  2. Scegli Operazioni, quindi seleziona Concedi.
  3. Seleziona Utenti e ruoli IAM.
  4. Per Utenti e ruoli IAM, seleziona l'utente/principale a cui desideri concedere l'accesso.
  5. In ** LF-Tag o risorse del catalogo**, effettua le seguenti operazioni:
    Per concedere l'accesso a tutte le tabelle del database, per Tabelle - opzionale, seleziona Tutte le tabelle.
    Per concedere l'accesso solo a specifiche tabelle del database, per Tabelle - opzionale, seleziona le tabelle.
  6. Per Autorizzazioni della tabella e Autorizzazioni concedibili, seleziona Seleziona e Descrivi.
  7. Scegli Concedi.

Nota: puoi concedere solo le autorizzazioni che hai selezionato come Autorizzazioni concedibili nell'account di origine.

Dopo aver concesso le autorizzazioni necessarie, puoi interrogare la tabella in Athena dall'account di destinazione.

Condividi solo tabelle con l'account di destinazione

Per condividere singole tabelle con l'account di destinazione, segui le istruzioni della sezione precedente con le seguenti modifiche.

Account di origine:

Per concedere l'accesso all'account di destinazione dalla console Lake Formation, seleziona le singole tabelle invece di selezionare il database.

Account di destinazione:

  • Accetta la condivisione delle risorse nella console AWS RAM per accedere alla tabella condivisa nella console Lake Formation.
  • Crea un collegamento alla risorsa per la tabella condivisa. Dopo aver creato il collegamento alla risorsa, puoi interrogare la tabella condivisa con l'accesso dell'amministratore del data lake.
  • Per concedere l'accesso agli utenti/principali IAM per la tabella condivisa, devi concedere le autorizzazioni per il collegamento alla risorsa.

Considerazioni aggiuntive

  • Quando concedi autorizzazioni per una tabella, puoi limitare l'accesso unicamente a colonne specifiche della tabella. In tal caso, l'account di destinazione può visualizzare solo le colonne della tabella condivisa.
  • Assicurati che gli utenti/principali IAM dell'account di destinazione abbiano accesso al percorso Amazon Simple Storage Service (Amazon S3) nell'account di origine.
  • Se revochi le autorizzazioni concesse in precedenza dall'account di origine, l'account di destinazione non può accedere al database/tabella condiviso. Il collegamento alla risorsa che hai creato nell'account di destinazione non viene però eliminato automaticamente. Devi eliminarlo manualmente.
  • Quando elimini un database/tabella, le condivisioni di risorse in AWS RAM non vengono eliminate automaticamente. Devi pertanto revocare manualmente le autorizzazioni multi-account prima di eliminare una tabella o un database condiviso.

Informazioni correlate

Visualizzazione di tabelle e database condivisi del Catalogo dati

Creazione di collegamenti alle risorse

Concessione delle autorizzazioni per la localizzazione dei dati (account esterno)

Concessione e revoca delle autorizzazioni per le risorse del Catalogo dati

How AWS Lake Formation Cross Account Feature Works (Come funziona la condivisione multi-account di AWS Lake Formation)