Come posso condividere database e tabelle del catalogo dati di AWS Glue su più account utilizzando AWS Lake Formation?

Ultimo aggiornamento: 05/05/2022

Vorrei condividere database e tabelle del catalogo dati di AWS Glue su più account utilizzando AWS Lake Formation.

Risoluzione

Con la caratteristica multi-account di Lake Formation, si può concedere l'accesso ad altri account AWS per 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 tra più account alle risorse del catalogo dati utilizzando il metodo delle risorse denominate.

Assicurarsi che i prerequisiti siano soddisfatti

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

Revoca le autorizzazioni Lake Formation

Revoca tutte le autorizzazioni Lake Formation dal gruppo IAMAllowedPrincipals per la risorsa del catalogo dati.

Impedire alle nuove tabelle di avere autorizzazioni super

Per i database del catalogo dati che contengono tabelle che è possibile condividere, impedisci alle nuove tabelle di avere una concessione di default super per IAMAllowedPrincipals:

  1. Apri la console di Lake Formation.
  2. Nel pannello di navigazione, in Catalogo dati, scegli Database.
  3. Seleziona il database che desideri aggiornare.
  4. Scegli Operazioni, quindi scegli Modifica.
  5. In Autorizzazioni di default 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.

Aggiunta delle autorizzazioni necessarie per l'accesso tra più account

Se la policy delle risorse del catalogo dati di AWS Glue è già abilitata nell'account, puoi rimuoverla o aggiungervi nuove autorizzazioni necessarie per le concessioni tra più account. Di seguito è riportato un modello di policy delle risorse di esempio per fornire l'accesso AWS Glue tra più account all'account 5555666677778888 dall'account 1111222233334444.

Per ulteriori informazioni, consulta Concessione dell'accesso tra più 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"
      ]
    }
  ]
}

Abilitare la condivisione con le organizzazioni

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

Per ulteriori informazioni, consulta Prerequisiti per l'accesso tra più account.

Concessione delle autorizzazioni IAM necessarie

Account fonte: per utilizzare il metodo delle risorse denominate per concedere autorizzazioni tra più account, è necessario disporre delle autorizzazioni IAM richieste per AWS Glue e AWS Resource Access Manager (AWS RAM). Si può scegliere la policy gestita da AWS AWSLakeFormationCrossAccountManager che concede queste autorizzazioni o creare una nuova policy basata su questa policy.

Account target: gli amministratori dei data lake negli account target devono avere la seguente policy aggiuntiva. Questa policy permette 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 di risorse in AWS RAM deve disporre delle autorizzazioni IAM richieste per glue:PutResourcePolicy.

Condivisione di un database e delle relative tabelle con l'account target

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

Nota: se si condividono tutte le tabelle di un database nell'account fonte, ogni nuova tabella creata nell'account fonte viene automaticamente condivisa con l'account target.

Nell'account di origine, procedi come segue:

  1. Apri la console di 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 scegli Concedi.
  5. Seleziona Account esterno.
  6. Per ID account AWS o ID organizzazione AWS, inserisci l'ID account dell'account target.
  7. Per Tabella, assicurati che sia selezionata l'opzione Tutte le tabelle.
  8. Per Autorizzazioni tabella e Autorizzazioni concedibili, seleziona le autorizzazioni di accesso che desideri concedere.
  9. Scegli Concedi.

Nell'account target, procedi come segue:

  1. Apri la console di AWS RAM.
  2. Nel pannello di navigazione, in Condiviso con me, scegli Condivisioni 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 delle risorse e scegli Accetta condivisione risorse.
  5. Apri la console di Lake Formation.
  6. Nel pannello di navigazione, scegli Database.
    È possibile visualizzare il database condiviso nell'elenco. L'ID account proprietario per questo database mostra l'ID account dell'account fonte.
  7. Seleziona il database condiviso, quindi scegli Operazioni.
  8. Scegli Crea collegamento risorsa.
  9. Nella pagina Crea collegamento risorsa, procedi come segue:
    Per Nome collegamento risorsa, immetti il nome del collegamento alla risorsa.
    Per Database condiviso, assicurati che il nome del database condiviso sia selezionato.
    Per ID proprietario del database condiviso, immetti l'ID account dell'account fonte.
  10. Scegli Crea.
    Il collegamento alla risorsa è stato creato.

I collegamenti alle risorse sono oggetti del catalogo dati che sono collegamenti a database e tabelle di metadati, in genere a database e tabelle condivisi da altri account AWS. Aiutano ad abilitare l'accesso tra più account ai dati nel data lake. Dopo aver creato il collegamento alla risorsa, potrai eseguire query sulle tabelle nel database condiviso con accesso da amministratore del data lake.

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

Per concedere l'accesso agli utenti IAM per il link alle risorse, procedi come segue:

  1. Apri la console di Lake Formation e accedi come amministratore del data lake.
  2. Nel pannello di navigazione, scegli Database.
  3. Seleziona il link alle risorse che hai creato.
  4. Scegli Operazioni, quindi scegli Concedi.
  5. In Principali, seleziona Utenti e ruoli IAM.
  6. Per Utenti e ruoli IAM, seleziona l'utente/principale IAM per cui è necessario concedere l'accesso.
  7. In Autorizzazioni link risorse, seleziona Descrivi.
  8. Scegli Concedi.

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

  1. Apri la console di 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 scegli Concedi.
  5. In Principali, seleziona Utenti e ruoli IAM.
  6. Per Utenti e ruoli IAM, seleziona l'utente/principale IAM per cui è necessario concedere l'accesso.
  7. In Autorizzazioni database, seleziona Descrivi.
    Nota: questo passaggio fornisce le autorizzazioni minime per gli utenti per visualizzare il database condiviso.
  8. Scegli Concedi.

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

  1. Seleziona il collegamento alla risorsa.
  2. Scegli Operazioni, quindi scegli Concedi.
  3. Seleziona Utenti e ruoli IAM.
  4. Per Utenti e ruoli IAM, seleziona l'utente/principale al quale desideri concedere l'accesso.
  5. Sotto Tag-LF o risorse del catalogo, procedi come segue:
    Per concedere l'accesso a tutte le tabelle del database, per Tabelle - facoltativo, seleziona Tutte le tabelle.
    Per concedere l'accesso solo a specifiche tabelle del database, per Tabelle - facoltativo, seleziona le tabelle.
  6. Per Autorizzazioni tabella e Autorizzazioni concedibili, seleziona Seleziona e Descrivi.
  7. Scegli Concedi.

Nota: si possono concedere solo le autorizzazioni selezionate per Autorizzazioni concedibili nell'account fonte.

Dopo aver concesso le autorizzazioni richieste, è possibile eseguire correttamente query sulla tabella in Athena dall'account target.

Condividere solo le tabelle con l'account di target

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

Account di origine:

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

Account di destinazione:

  • Accetta la condivisione di risorse nella console di AWS RAM per accedere alla tabella condivisa nella console di Lake Formation.
  • Crea un link alle risorse per la tabella condivisa. Dopo aver creato il collegamento alla risorsa, è possibile eseguire query sulla tabella condivisa con l'accesso amministratore del data lake.
  • Per concedere l'accesso agli utenti/principali IAM per la tabella condivisa, è necessario concedere le autorizzazioni per il collegamento alla risorsa.

Esaminare ulteriori considerazioni

  • Quando si concedono le autorizzazioni sulla tabella, è possibile limitare l'accesso solo per le colonne specifiche della tabella. In tal caso, l'account target può visualizzare solo quelle colonne nella tabella condivisa.
  • Assicurati che gli utenti/principali IAM dell'account di destinazione abbiano accesso al percorso di 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 potrà accedere al database o alla tabella condivisi. Tuttavia, il link alle risorse creato nell'account di destinazione non viene eliminato automaticamente. È necessario eliminare manualmente il collegamento alla risorsa.
  • Quando si elimina un database o una tabella, le condivisioni di risorse in AWS RAM non vengono eliminate automaticamente. Pertanto, è necessario revocare manualmente le autorizzazioni tra più account prima di eliminare un database o una tabella condivisi.