Migrazione delle autorizzazioni da Hadoop
Questo documento descrive come eseguire la migrazione delle autorizzazioni da Apache Hadoop Distributed File System (HDFS), Ranger HDFS e Apache Hive ai ruoli Identity and Access Management (IAM) in Cloud Storage o BigQuery.
La procedura di migrazione delle autorizzazioni è costituita dai seguenti passaggi:
- Genera un file di mappatura delle entità creando prima un file di configurazione YAML del set di regole delle entità. Quindi, esegui lo strumento di migrazione delle autorizzazioni con il file YAML del set di regole delle entità con i file di metadati HDFS o Ranger per generare un file di mappatura delle entità.
- Genera un file di mappatura delle autorizzazioni di destinazione creando prima un file YAML del set di regole delle autorizzazioni. Quindi, esegui lo strumento di migrazione delle autorizzazioni con il file YAML del set di regole delle autorizzazioni e i file di configurazione del mapping delle tabelle, nonché i file di metadati HDFS o Ranger, per generare un file di mapping delle autorizzazioni di destinazione.
- Esegui lo strumento di migrazione delle autorizzazioni con il file delle autorizzazioni di destinazione per applicare le autorizzazioni a Cloud Storage o BigQuery. Puoi anche utilizzare lo script Python fornito per generare un file Terraform che puoi utilizzare per applicare le autorizzazioni autonomamente.
Prima di iniziare
Prima di eseguire la migrazione delle autorizzazioni, verifica di aver eseguito le seguenti operazioni:
- Installa lo strumento
dwh-migration-dumper
. - Esegui lo
dwh-migration-dumper
strumento per generare i metadati necessari per l'origine dati.
Puoi trovare lo script del generatore Terraform anche nel file terraform.zip
all'interno del pacchetto di rilascio.
Genera un file di mappatura delle entità
Un file di mappatura delle entità definisce le regole di mappatura che mappano le entità dalla tua origine alle entità IAM. Trusted Cloud
Per generare un file di mapping dei principal, devi prima creare manualmente un file YAML del set di regole dei principal per definire come vengono mappati i principal dalla sorgente ai principal IAM. Trusted Cloud Nel file YAML del set di regole dei principal, definisci le regole di mapping per ciascuna delle tue origini, ranger
, HDFS
o entrambe.
L'esempio seguente mostra un file YAML del set di regole dei principal che mappa i gruppi Apache Ranger agli account di servizio in Trusted Cloud by S3NS:
ranger: user_rules: - skip: true group_rules: # Skip internal Ranger groups. - skip: true when: "group.groupSource == 0" # Map all roles to Google Cloud Platform service accounts. - map: type: value: serviceAccount email_address: expression: "group.name + 'my-service-account@my-project.s3ns-system.iam.gserviceaccount.com'" role_rules: - skip: true hdfs: user_rules: - skip: true group_rules: - skip: true other_rules: - skip: true
L'esempio seguente mostra un file YAML del set di regole dei principal che mappa gli utenti HDFS a utenti Trusted Cloud specifici:
ranger: user_rules: - skip: true group_rules: - skip: true role_rules: - skip: true hdfs: user_rules: # Skip user named 'example' - when: "user.name == 'example'" skip: true # Map all other users to their name at google.com - when: "true" map: type: value: user email_address: expression: "user.name + '@google.com'" group_rules: - skip: true other_rules: - skip: true
Per ulteriori informazioni sulla sintassi per la creazione di un file YAML del set di regole dei principali, consulta File YAML del set di regole.
Dopo aver creato un file YAML del set di regole dei principal, caricalo in un bucket Cloud Storage. Devi includere anche il file HDFS, il file Apache Ranger generato dallo strumento dwh-migration-dumper
o entrambi, a seconda dell'origine da cui esegui la migrazione delle autorizzazioni. Puoi quindi eseguire
lo strumento di migrazione delle autorizzazioni per generare il file di mapping dei principal.
L'esempio seguente mostra come eseguire lo strumento di migrazione delle autorizzazioni per eseguire la migrazione sia da HDFS che da Apache Ranger, ottenendo un file di mapping dei principal denominato principals.yaml
.
./dwh-permissions-migration expand \ --principal-ruleset gs://MIGRATION_BUCKET/principals-ruleset.yaml \ --hdfs-dumper-output gs://MIGRATION_BUCKET/hdfs-dumper-output.zip \ --ranger-dumper-output gs://MIGRATION_BUCKET/ranger-dumper-output.zip \ --output-principals gs://MIGRATION_BUCKET/principals.yaml
Sostituisci MIGRATION_BUCKET
con il nome del bucket Cloud Storage che contiene i file di migrazione.
Dopo aver eseguito lo strumento, esamina il file principals.yaml
generato per verificare
che contenga i principal della tua origine mappati ai principal IAM. Trusted CloudPuoi modificare manualmente il file prima dei passaggi
successivi.
Genera il file delle autorizzazioni di destinazione
Il file delle autorizzazioni di destinazione contiene informazioni sulla mappatura del set di autorizzazioni di origine nel cluster Hadoop ai ruoli IAM per BigQuery o alle cartelle gestite di Cloud Storage. Per generare un file di autorizzazioni di destinazione, devi prima creare manualmente un file YAML del set di regole di autorizzazione che specifica come le autorizzazioni di Ranger o HDFS vengono mappate a Cloud Storage o BigQuery.
L'esempio seguente accetta tutte le autorizzazioni Ranger per Cloud Storage:
gcs: ranger_hive_rules: - map: {} log: true
L'esempio seguente accetta tutte le autorizzazioni HDFS, tranne l'entità hadoop
:
gcs: hdfs_rules: - when: source_principal.name == 'hadoop' skip: true - map: {}
L'esempio seguente esegue l'override del mapping dei ruoli predefinito per la tabella tab0
e utilizza i valori predefiniti per tutte le altre autorizzazioni
gcs: ranger_hive_rules: ranger_hive_rules: - when: table.name == 'tab0' map: role: value: "roles/customRole" - map: {}
Per saperne di più sulla sintassi per la creazione di un file YAML del set di regole delle autorizzazioni, consulta File YAML del set di regole.
Dopo aver creato un file YAML del set di regole delle autorizzazioni, caricalo in un bucket Cloud Storage. Devi includere anche il file HDFS, il file Apache Ranger generato dallo strumento dwh-migration-dumper
o entrambi, a seconda dell'origine da cui esegui la migrazione delle autorizzazioni. Devi anche includere i file YAML di configurazione delle tabelle e il file di mappatura dei principal.
Puoi quindi eseguire lo strumento di migrazione delle autorizzazioni per generare il file delle autorizzazioni di destinazione.
L'esempio seguente mostra come eseguire lo strumento di migrazione delle autorizzazioni per eseguire la migrazione da HDFS e Apache Ranger, con i file di configurazione del mapping delle tabelle e il file di mapping dei principal denominato principals.yaml
, ottenendo un file di mapping dei principal denominato permissions.yaml
.
./dwh-permissions-migration build \ --permissions-ruleset gs://MIGRATION_BUCKET/permissions-config.yaml \ --tables gs://MIGRATION_BUCKET/tables/ \ --principals gs://MIGRATION_BUCKET/principals.yaml \ --ranger-dumper-output gs://MIGRATION_BUCKET/ranger-dumper-output.zip \ --hdfs-dumper-output gs://MIGRATION_BUCKET/hdfs-dumper-output.zip \ --output-permissions gs://MIGRATION_BUCKET/permissions.yaml
Sostituisci MIGRATION_BUCKET
con il nome del bucket Cloud Storage che contiene i file di migrazione.
Una volta eseguito lo strumento, esamina il file permissions.yaml
generato per verificare
che contenga le autorizzazioni dell'origine mappate ai binding IAM di Cloud Storage o
BigQuery. Puoi modificare manualmente
prima dei passaggi successivi.
Applica autorizzazioni
Dopo aver generato un file di autorizzazioni di destinazione, puoi eseguire lo strumento di migrazione delle autorizzazioni per applicare le autorizzazioni IAM a Cloud Storage o BigQuery.
Prima di eseguire lo strumento di migrazione delle autorizzazioni, verifica di aver soddisfatto i seguenti prerequisiti:
- Hai creato le entità richieste (utenti, gruppi, service account) in Trusted Cloud.
- Hai creato le tabelle o le cartelle gestite di Cloud Storage che ospiteranno i dati migrati.
- L'utente che esegue lo strumento dispone delle autorizzazioni per gestire i ruoli per le tabelle o le cartelle gestite di Cloud Storage.
Puoi applicare le autorizzazioni eseguendo il seguente comando:
./dwh-permissions-migration apply \ --permissions gs://MIGRATION_BUCKET/permissions.yaml
dove MIGRATION_BUCKET
è il nome del bucket Cloud Storage che contiene i file di migrazione.
Applicare le autorizzazioni come configurazione Terraform
Per applicare le autorizzazioni di cui è stata eseguita la migrazione, puoi anche convertire il file delle autorizzazioni di destinazione in una configurazione Infrastructure as Code (IaC) di Terraform e applicarla a Cloud Storage.
- Verifica di avere Python 3.7 o versioni successive.
- Crea un nuovo ambiente virtuale e attivalo.
Dalla directory
permissions-migration/terraform
, installa le dipendenze dal filerequirements.txt
utilizzando il seguente comando:python -m pip install -r requirements.txt
Esegui il comando del generatore:
python tf_generator PATH LOCATION OUTPUT
Sostituisci quanto segue:
PATH
: il percorso del filepermissions.yaml
generato.LOCATION
: la posizione del bucket Cloud Storage in cui lo script controlla e crea le cartelle in base alla configurazione delle autorizzazioni.OUTPUT
: il percorso del file di output,main.tf
.
File YAML del set di regole
I file YAML del set di regole vengono utilizzati per mappare i principal e i ruoli durante la migrazione delle autorizzazioni da HDFS o Apache Ranger a Trusted Cloud. I file YAML del set di regole utilizzano Common Expression Language (CEL) per specificare i predicati (dove il risultato è booleano) e le espressioni (dove il risultato è una stringa).
I file YAML del set di regole hanno le seguenti caratteristiche:
- Le regole di mappatura di ogni tipo vengono eseguite in sequenza dall'alto verso il basso per ogni oggetto di input.
- Le espressioni CEL hanno accesso alle variabili di contesto, che dipendono
dalla sezione del set di regole. Ad esempio, puoi utilizzare la variabile
user
per mappare gli oggetti utente di origine e la variabilegroup
per mappare i gruppi. - Puoi utilizzare espressioni CEL o valori statici per modificare i valori predefiniti. Ad
esempio, quando mappi un gruppo, puoi sostituire il valore di output
type
dal valore predefinitogroup
con un altro valore, ad esempioserviceAccount
. - Deve essere presente almeno una regola che corrisponda a ogni oggetto di input.
In una migrazione delle autorizzazioni HDFS o Apache Ranger, è possibile utilizzare un file YAML del set di regole per definire un file di mappatura delle entità o un file di mappatura dei ruoli.
Regole di mapping nei file YAML del ruleset
Il file YAML del set di regole è costituito da regole di mappatura che specificano la corrispondenza degli oggetti dall'origine alla destinazione durante una migrazione delle autorizzazioni. Una regola di mappatura può contenere le seguenti sezioni o clausole:
when
: una clausola predicativa che limita l'applicabilità della regola- Una stringa rappresenta un'espressione CEL booleana. I valori possono essere
true
ofalse
- La regola si applica solo se la clausola
when
restituiscetrue
- Il valore predefinito è
true
- Una stringa rappresenta un'espressione CEL booleana. I valori possono essere
map
: una clausola che specifica i contenuti di un campo dei risultati. Il valore di questa clausola dipende dal tipo di oggetto elaborato e può essere definito come:expression
da valutare come stringavalue
per una stringa costante
skip
: Specifica che l'oggetto di input non deve essere mappato- Può essere
true
ofalse
- Può essere
log
: Una clausola predicativa che aiuta a eseguire il debug o a sviluppare regole- Una stringa rappresenta un'espressione CEL booleana. I valori possono essere
true
ofalse
- Il valore predefinito è
false
- Se impostato su
true
, l'output contiene un log di esecuzione che può essere utilizzato per monitorare o diagnosticare i problemi durante l'esecuzione
- Una stringa rappresenta un'espressione CEL booleana. I valori possono essere
Creazione di un file YAML del set di regole principale
Un file di mapping dei principal viene utilizzato per generare identificatori
principal fornendo un valore per
email_address
e type
.
- Utilizza
email_address
per specificare l'email del Trusted Cloud principal. - Utilizza
type
per specificare la natura del principale in Trusted Cloud. Il valore ditype
può essereuser
,group
oserviceAccount
.
Qualsiasi espressione CEL utilizzata nelle regole ha accesso a variabili che rappresentano l'oggetto elaborato. I campi nelle variabili si basano sui contenuti dei file di metadati HDFS o Apache Ranger. Le variabili disponibili dipendono dalla sezione del set di regole:
- Per
user_rules
, utilizza la variabileuser
- Per
group_rules
, utilizza la variabilegroup
- Per
other_rules
, utilizza la variabileother
- Per
role_rules
, utilizza la variabilerole
L'esempio seguente mappa gli utenti di HDFS con gli utenti in Trusted Cloud
con il loro nome utente, seguito da @google.com
come indirizzo email:
hdfs: user_rules: # Skip user named 'example' - when: "user.name == 'example'" skip: true # Map all other users to their name at google.com - when: "true" map: type: value: user email_address: expression: "user.name + '@google.com'"
Ignorare la mappatura dei ruoli predefinita
Per utilizzare principal non predefiniti, puoi ignorare o modificare i mapping dei ruoli predefiniti utilizzando i file del set di regole.
Il seguente esempio mostra come saltare una sezione di regole:
hdfs: user_rules: - skip: true group_rules: - skip: true other_rules: - skip: true
Creazione di un file YAML del set di regole delle autorizzazioni
Un file YAML del set di regole delle autorizzazioni viene utilizzato per generare un file di mappatura delle autorizzazioni di destinazione. Per creare un file YAML del set di regole delle autorizzazioni, utilizza le espressioni CEL nel file YAML del set di regole delle autorizzazioni per mappare le autorizzazioni HDFS o Apache Ranger ai ruoli Cloud Storage o BigQuery.
Mappatura dei ruoli predefinita
I ruoli dei file HDFS sono determinati dalle autorizzazioni dei file di origine:
- Se il bit
w
è impostato, il ruolo predefinito èwriter
- Se il bit
r
è impostato, il ruolo predefinito èreader
- Se non è impostato alcun bit, il ruolo è vuoto
Ranger HDFS:
- Se il set di accesso contiene
write
, il ruolo predefinito èwriter
- Se il set di accesso contiene
read
, il ruolo predefinito èreader
- Se il set di accesso non contiene nessuno dei due, il ruolo è vuoto.
Ranger:
- Se il set di accesso contiene
update
,create
,drop
,alter
,index
,lock
,all
,write
orefresh
, il ruolo predefinito èwriter
- Se il set di accesso contiene
select
oread
, il ruolo predefinito èreader
- Se l'insieme di accesso non contiene nessuna delle autorizzazioni precedenti, il ruolo è vuoto
Cloud Storage:
roles/storage.objectUser
- Writerroles/storage.objectViewer
- Reader
BigQuery:
roles/bigquery.dataOwner
- Writerroles/bigquery.dataViewer
- Reader
L'esempio seguente mostra come accettare i mapping predefiniti senza apportare modifiche al file YAML del ruleset:
ranger_hdfs_rules: - map: {}
Ignorare la mappatura dei ruoli predefinita
Per utilizzare ruoli non predefiniti, puoi ignorare o modificare i mapping dei ruoli predefiniti utilizzando i file del set di regole.
L'esempio seguente mostra come eseguire l'override di una mappatura dei ruoli predefinita utilizzando una clausola map con il campo del ruolo utilizzando una clausola value:
ranger_hdfs_rules: - map: role: value: "roles/customRole"
Unione delle mappature delle autorizzazioni
Se vengono generate più mappature delle autorizzazioni per la stessa risorsa di destinazione,
viene utilizzata la mappatura con l'accesso più ampio. Ad esempio, se una regola
HDFS assegna un ruolo di lettore all'entità pa1
in una
posizione HDFS e una regola Ranger assegna un ruolo di scrittore alla
stessa entità nella stessa posizione, viene assegnato il ruolo di scrittore.
Citazione di stringhe nelle espressioni CEL
Utilizza le virgolette ""
per racchiudere l'intera espressione CEL in YAML. All'interno dell'espressione CEL, utilizza le virgolette singole ''
per citare le stringhe. Ad esempio:
"'permissions-migration-' + group.name + '@google.com'"