Logo Zephyrnet

Applica il controllo capillare degli accessi sui formati Open Table tramite Amazon EMR integrato con AWS Lake Formation | Servizi Web di Amazon

Data:

Con Amazon EMR 6.15, abbiamo lanciato Formazione AWS Lake controlli di accesso a grana fine (FGAC) basati su formati Open Table Formats (OTF), tra cui Apache Hudi, Apache Iceberg e Delta Lake. Ciò consente di semplificare la sicurezza e la governance data lake transazionali fornendo controlli di accesso a autorizzazioni a livello di tabella, colonna e riga con i processi Apache Spark. Molte grandi aziende cercano di utilizzare il proprio data Lake transazionale per ottenere informazioni approfondite e migliorare il processo decisionale. Puoi creare l'architettura di una casa sul lago utilizzando Amazon EMR integrato con Lake Formation per FGAC. Questa combinazione di servizi ti consente di condurre analisi dei dati sul tuo data Lake transazionale garantendo al tempo stesso un accesso sicuro e controllato.

Il componente del server di record Amazon EMR supporta funzionalità di filtraggio dei dati a livello di tabella, colonna, riga, cella e attributo nidificato. Estende il supporto ai formati Hive, Apache Hudi, Apache Iceberg e Delta Lake sia per operazioni di lettura (inclusi viaggi nel tempo e query incrementali) che per operazioni di scrittura (su istruzioni DML come INSERT). Inoltre, con la versione 6.15, Amazon EMR introduce la protezione del controllo degli accessi per l'interfaccia web della sua applicazione come Spark History Server su cluster, Yarn Timeline Server e Yarn Resource Manager UI.

In questo post, mostriamo come implementare FGAC su Apache Hudi tabelle che utilizzano Amazon EMR integrato con Lake Formation.

Caso d'uso del Data Lake sulle transazioni

I clienti Amazon EMR utilizzano spesso i formati Open Table per supportare le transazioni ACID e le esigenze di viaggio nel tempo in un data Lake. Preservando le versioni storiche, il viaggio nel tempo del data Lake offre vantaggi quali controllo e conformità, ripristino e rollback dei dati, analisi riproducibile ed esplorazione dei dati in diversi momenti nel tempo.

Un altro caso d'uso popolare del data Lake sulle transazioni è la query incrementale. La query incrementale si riferisce a una strategia di query incentrata sull'elaborazione e sull'analisi solo dei dati nuovi o aggiornati all'interno di un data Lake dall'ultima query. L'idea chiave alla base delle query incrementali è utilizzare metadati o meccanismi di rilevamento delle modifiche per identificare i dati nuovi o modificati dall'ultima query. Identificando queste modifiche, il motore di query può ottimizzare la query per elaborare solo i dati rilevanti, riducendo significativamente i tempi di elaborazione e i requisiti di risorse.

Panoramica della soluzione

In questo post, dimostriamo come implementare FGAC su tabelle Apache Hudi utilizzando Amazon EMR Cloud di calcolo elastico di Amazon (Amazon EC2) integrato con Lake Formation. Apache Hudi è un framework data Lake transazionale open source che semplifica notevolmente l'elaborazione incrementale dei dati e lo sviluppo di pipeline di dati. Questa nuova funzionalità FGAC supporta tutti gli OTF. Oltre alla dimostrazione con Hudi qui, seguiremo altri tavoli OTF con altri blog. Noi usiamo computer portatili in Amazon Sage Maker Studio per leggere e scrivere dati Hudi tramite diverse autorizzazioni di accesso utente attraverso un cluster EMR. Ciò riflette scenari di accesso ai dati reali, ad esempio se un utente tecnico necessita dell'accesso completo ai dati per risolvere i problemi su una piattaforma dati, mentre gli analisti di dati potrebbero dover accedere solo a un sottoinsieme di tali dati che non contiene informazioni di identificazione personale (PII) ). Integrazione con Lake Formation tramite il Ruolo runtime Amazon EMR consente inoltre di migliorare il livello di sicurezza dei dati e semplifica la gestione del controllo dei dati per i carichi di lavoro Amazon EMR. Questa soluzione garantisce un ambiente sicuro e controllato per l'accesso ai dati, soddisfacendo le diverse esigenze e requisiti di sicurezza dei diversi utenti e ruoli in un'organizzazione.

Il diagramma seguente illustra l'architettura della soluzione.

Architettura della soluzione

Conduciamo un processo di inserimento dei dati per aggiornare (aggiornare e inserire) un set di dati Hudi in un file Servizio di archiviazione semplice Amazon (Amazon S3) e rendere persistente o aggiornare lo schema della tabella nel file Colla AWS Catalogo dati. Con zero spostamenti di dati, possiamo interrogare la tabella Hudi governata da Lake Formation tramite vari servizi AWS, come Amazzone Atena, Amazon EMR e Amazon Sage Maker.

Quando gli utenti inviano un lavoro Spark tramite qualsiasi endpoint del cluster EMR (EMR Steps, Livy, EMR Studio e SageMaker), Lake Formation convalida i loro privilegi e indica al cluster EMR di filtrare i dati sensibili come i dati PII.

Questa soluzione ha tre diverse tipologie di utenti con diversi livelli di autorizzazione per accedere ai dati Hudi:

  • ruolo-creatore-hudi-db – Viene utilizzato dall'amministratore del Data Lake che dispone dei privilegi per eseguire operazioni DDL come la creazione, la modifica e l'eliminazione di oggetti del database. Possono definire regole di filtraggio dei dati su Lake Formation per il controllo dell'accesso ai dati a livello di riga e di colonna. Queste regole FGAC garantiscono che il data Lake sia protetto e soddisfi le norme sulla privacy dei dati richieste.
  • hudi-table-pii-ruolo – Viene utilizzato dagli utenti tecnici. Gli utenti ingegneristici sono in grado di eseguire viaggi nel tempo e query incrementali sia su Copy-on-Write (CoW) che su Merge-on-Read (MoR). Hanno inoltre il privilegio di accedere ai dati PII in base a eventuali timestamp.
  • hudi-table-non-pii-ruolo – Viene utilizzato dagli analisti di dati. I diritti di accesso ai dati degli analisti di dati sono regolati dalle regole autorizzate dalla FGAC controllate dagli amministratori del data Lake. Non hanno visibilità sulle colonne contenenti dati PII come nomi e indirizzi. Inoltre, non possono accedere a righe di dati che non soddisfano determinate condizioni. Ad esempio, gli utenti possono accedere solo alle righe di dati che appartengono al loro Paese.

Prerequisiti

Puoi scaricare i tre taccuini utilizzati in questo post dal Repository GitHub.

Prima di distribuire la soluzione, assicurati di disporre di quanto segue:

Completa i seguenti passaggi per impostare le tue autorizzazioni:

  1. Accedi al tuo account AWS con l'utente IAM amministratore.

Assicurati di essere nel fileus-east-1Regione.

  1. Crea un bucket S3 nel file us-east-1 Regione (ad esempio,emr-fgac-hudi-us-east-1-<ACCOUNT ID>).

Successivamente, abilitiamo Lake Formation tramite modifica del modello di autorizzazione predefinito.

  1. Accedi alla console Lake Formation come utente amministratore.
  2. Scegli Impostazioni del catalogo dati per Amministrazione nel pannello di navigazione.
  3. Sotto Autorizzazioni predefinite per database e tabelle appena creati, deseleziona Utilizza solo il controllo degli accessi IAM per i nuovi database ed Utilizza solo il controllo degli accessi IAM per le nuove tabelle nei nuovi database.
  4. Scegli Risparmi.

Impostazioni del catalogo dati

In alternativa, devi revocare IAMAllowedPrincipals sulle risorse (database e tabelle) create se hai avviato Lake Formation con l'opzione predefinita.

Infine, creiamo una coppia di chiavi per Amazon EMR.

  1. Sulla console Amazon EC2, scegli Coppie di chiavi nel pannello di navigazione.
  2. Scegli Crea coppia di chiavi.
  3. Nel Nome, inserisci un nome (ad esemr-fgac-hudi-keypair).
  4. Scegli Crea coppia di chiavi.

Crea coppia di chiavi

La coppia di chiavi generata (per questo post, emr-fgac-hudi-keypair.pem) salverà sul tuo computer locale.

Successivamente, creiamo un AWS Cloud9 ambiente di sviluppo interattivo (IDE).

  1. Nella console AWS Cloud9, scegli Ambienti nel pannello di navigazione.
  2. Scegli Crea ambiente.
  3. Nel Nomeinserire un nome (ad esempio,emr-fgac-hudi-env).
  4. Mantieni le altre impostazioni come predefinite.

Ambiente Cloud9

  1. Scegli Creare.
  2. Quando l'IDE è pronto, scegli Apri per aprirlo.

ambiente cloud9

  1. Nell'IDE AWS Cloud9, su Compila il menù, scegliere Carica file locali.

Carica file locale

  1. Carica il file della coppia di chiavi (emr-fgac-hudi-keypair.pem).
  2. Scegli il segno più e scegli Nuovo terminale.

nuovo terminale

  1. Nel terminale, inserisci le seguenti righe di comando:
#Create encryption certificates for EMR in transit encryption
openssl req -x509 
-newkey rsa:1024 
-keyout privateKey.pem 
-out certificateChain.pem 
-days 365 
-nodes 
-subj '/C=US/ST=Washington/L=Seattle/O=MyOrg/OU=MyDept/CN=*.compute.internal'
cp certificateChain.pem trustedCertificates.pem

# Zip certificates
zip -r -X my-certs.zip certificateChain.pem privateKey.pem trustedCertificates.pem

# Upload the certificates zip file to S3 bucket
# Replace <ACCOUNT ID> with your AWS account ID
aws s3 cp ./my-certs.zip s3://emr-fgac-hudi-us-east-1-<ACCOUNT ID>/my-certs.zip

Tieni presente che il codice di esempio è una prova di concetto solo a scopo dimostrativo. Per i sistemi di produzione, utilizzare un'autorità di certificazione (CA) attendibile per emettere certificati. Fare riferimento a Fornitura di certificati per la crittografia dei dati in transito con la crittografia Amazon EMR per i dettagli.

Distribuisci la soluzione tramite AWS CloudFormation

Forniamo un file AWS CloudFormazione modello che imposta automaticamente i seguenti servizi e componenti:

  • Un bucket S3 per il data Lake. Contiene il set di dati TPC-DS di esempio.
  • Un cluster EMR con configurazione di sicurezza e DNS pubblico abilitato.
  • Ruoli IAM runtime EMR con autorizzazioni granulari di Lake Formation:
    • -hudi-db-creator-role – Questo ruolo viene utilizzato per creare database e tabelle Apache Hudi.
    • -hudi-table-pii-role – Questo ruolo fornisce l'autorizzazione per interrogare tutte le colonne delle tabelle Hudi, incluse le colonne con PII.
    • -hudi-table-non-pii-role – Questo ruolo fornisce l'autorizzazione per eseguire query sulle tabelle Hudi che hanno filtrato le colonne PII in base a Lake Formation.
  • Ruoli di esecuzione di SageMaker Studio che consentono agli utenti di assumere i ruoli runtime EMR corrispondenti.
  • Risorse di rete come VPC, sottoreti e gruppi di sicurezza.

Completare i seguenti passaggi per distribuire le risorse:

  1. Scegli Stack di creazione rapida per avviare lo stack CloudFormation.
  2. Nel Nome dello stack, inserisci un nome di stack (ad esempio,rsv2-emr-hudi-blog).
  3. Nel Ec2KeyPair, inserisci il nome della tua coppia di chiavi.
  4. Nel IdleTimeout, inserisci un timeout di inattività per il cluster EMR per evitare di pagare per il cluster quando non viene utilizzato.
  5. Nel InitS3Bucket, inserisci il nome del bucket S3 creato per salvare il file .zip del certificato di crittografia Amazon EMR.
  6. Nel S3CertsZip, inserisci l'URI S3 del file .zip del certificato di crittografia Amazon EMR.

Modello CloudFormation

  1. Seleziona Riconosco che AWS CloudFormation potrebbe creare risorse IAM con nomi personalizzati.
  2. Scegli Crea stack.

La distribuzione dello stack CloudFormation richiede circa 10 minuti.

Configura Lake Formation per l'integrazione di Amazon EMR

Completa i seguenti passaggi per impostare Lake Formation:

  1. Sulla console Lake Formation, scegli Impostazioni di integrazione dell'applicazione per Amministrazione nel pannello di navigazione.
  2. Seleziona Consenti ai motori esterni di filtrare i dati nelle posizioni Amazon S3 registrate con Lake Formation.
  3. Scegli Amazon EMR per Valori dei tag di sessione.
  4. Inserisci l'ID del tuo account AWS per ID account AWS.
  5. Scegli Risparmi.

LF: impostazioni di integrazione dell'applicazione

  1. Scegli Database per Catalogo dati nel pannello di navigazione.
  2. Scegli Crea database.
  3. Nel Nome, inserisci predefinito.
  4. Scegli Crea database.

LF: crea database

  1. Scegli Autorizzazioni del data lake per Permessi nel pannello di navigazione.
  2. Scegli Grant.
  3. Seleziona Utenti e ruoli IAM.
  4. Scegli i tuoi ruoli IAM.
  5. Nel Database, scegli predefinito.
  6. Nel Permessi del database, selezionare Descrivere.
  7. Scegli Grant.

LF: concedere le autorizzazioni per i dati

Copia il file JAR Hudi su Amazon EMR HDFS

A usa Hudi con i notebook Jupyter, è necessario completare i passaggi seguenti per il cluster EMR, che includono la copia di un file JAR Hudi dalla directory locale Amazon EMR al relativo storage HDFS, in modo da poter configurare una sessione Spark per utilizzare Hudi:

  1. Autorizzare il traffico SSH in entrata (porta 22).
  2. Copia il valore per DNS pubblico del nodo primario (ad esempio, ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com) dal cluster EMR Sommario .

Riepilogo del cluster EMR

  1. Torna al terminale AWS Cloud9 precedente utilizzato per creare la coppia di chiavi EC2.
  2. Esegui il comando seguente su SSH nel nodo primario EMR. Sostituisci il segnaposto con il nome host DNS EMR:
chmod 400 emr-fgac-hudi-keypair.pem
ssh -i emr-fgac-hudi-keypair.pem hadoop@ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com

  1. Esegui il comando seguente per copiare il file JAR Hudi su HDFS:
hdfs dfs -mkdir -p /apps/hudi/lib
hdfs dfs -copyFromLocal /usr/lib/hudi/hudi-spark-bundle.jar /apps/hudi/lib/hudi-spark-bundle.jar

Crea il database e le tabelle Hudi in Lake Formation

Ora siamo pronti per creare il database e le tabelle Hudi con FGAC abilitato dal ruolo runtime EMR. IL Ruolo runtime EMR è un ruolo IAM che puoi specificare quando invii un lavoro o una query a un cluster EMR.

Concedere l'autorizzazione al creatore del database

Innanzitutto, concediamo al creatore del database Lake Formation l'autorizzazione a<STACK-NAME>-hudi-db-creator-role:

  1. Accedi al tuo account AWS come amministratore.
  2. Sulla console Lake Formation, scegli Ruoli e compiti amministrativi per Amministrazione nel pannello di navigazione.
  3. Conferma che l'utente di accesso ad AWS sia stato aggiunto come amministratore del data Lake.
  4. Nel Creatore di banche dati sezione, scegliere Grant.
  5. Nel Utenti e ruoli IAMscegli<STACK-NAME>-hudi-db-creator-role.
  6. Nel Permessi catalogo Catalog, selezionare Crea database.
  7. Scegli Grant.

Registrare la posizione del data Lake

Successivamente, registriamo la posizione del data Lake S3 in Lake Formation:

  1. Sulla console Lake Formation, scegli Posizioni del data lake per Amministrazione nel pannello di navigazione.
  2. Scegli Registra posizione.
  3. Nel Percorso Amazon S3, Scegli Scopri la nostra gamma di prodotti e scegli il bucket Data Lake S3. (<STACK_NAME>s3bucket-XXXXXXX) creato dallo stack CloudFormation.
  4. Nel Ruolo IAMscegli<STACK-NAME>-hudi-db-creator-role.
  5. Nel Modalità di autorizzazione, selezionare Formazione del lago.
  6. Scegli Registra posizione.

LF - Registra la posizione

Concedere l'autorizzazione alla localizzazione dei dati

Successivamente, dobbiamo concedere<STACK-NAME>-hudi-db-creator-roleil permesso di localizzazione dei dati:

  1. Sulla console Lake Formation, scegli Posizioni dei dati per Permessi nel pannello di navigazione.
  2. Scegli Grant.
  3. Nel Utenti e ruoli IAMscegli<STACK-NAME>-hudi-db-creator-role.
  4. Nel Posizioni di stoccaggio, inserisci il bucket S3 (<STACK_NAME>-s3bucket-XXXXXXX).
  5. Scegli Grant.

LF: concedere autorizzazioni

Connettersi al cluster EMR

Ora utilizziamo un notebook Jupyter in SageMaker Studio per connetterci al cluster EMR con il ruolo runtime EMR creatore del database:

  1. Sulla console di SageMaker, scegli Domini nel pannello di navigazione.
  2. Scegli il dominio<STACK-NAME>-Studio-EMR-LF-Hudi.
  3. Sulla Lancio menu accanto al profilo utente<STACK-NAME>-hudi-db-creatorscegli Studio.

SM - Dettagli del dominio

  1. Scarica il taccuino rsv2-hudi-db-creator-notebook.
  2. Scegli l'icona di caricamento.

SM Studio - Carica

  1. Scegli il taccuino Jupyter scaricato e scegli Apri.
  2. Apri il taccuino caricato.
  3. Nel Immaginescegli Spark Magic.
  4. Nel noccioloscegli PySpark.
  5. Lascia le altre configurazioni come predefinite e scegli Seleziona.

SM Studio: cambia ambiente

  1. Scegli Cluster per connettersi al cluster EMR.

SM Studio: collega il cluster EMR

  1. Scegli il cluster EMR sul cluster EC2 (<STACK-NAME>-EMR-Cluster) creato con lo stack CloudFormation.
  2. Scegli Connettiti.
  3. Nel Ruolo di esecuzione dell'EMRscegli<STACK-NAME>-hudi-db-creator-role.
  4. Scegli Connettiti.

Creare database e tabelle

Ora puoi seguire i passaggi nel notebook per creare il database e le tabelle Hudi. I passaggi principali sono i seguenti:

  1. Quando avvii il notebook, configura“spark.sql.catalog.spark_catalog.lf.managed":"true"per informare Spark che spark_catalog è protetto da Lake Formation.
  2. Crea tabelle Hudi utilizzando il seguente Spark SQL.
%%sql 
CREATE TABLE IF NOT EXISTS ${hudi_catalog}.${hudi_db}.${cow_table_name_sql}(
    c_customer_id string,
    c_birth_country string,
    c_customer_sk integer,
    c_email_address string,
    c_first_name string,
    c_last_name string,
    ts bigint
) USING hudi
LOCATION '${cow_table_location_sql}'
OPTIONS (
  type = 'cow',
  primaryKey = '${hudi_primary_key}',
  preCombineField = '${hudi_pre_combined_field}'
 ) 
PARTITIONED BY (${hudi_partitioin_field});

  1. Inserisci i dati dalla tabella di origine alle tabelle Hudi.
%%sql
INSERT OVERWRITE ${hudi_catalog}.${hudi_db}.${cow_table_name_sql}
SELECT 
    c_customer_id ,  
    c_customer_sk,
    c_email_address,
    c_first_name,
    c_last_name,
    unix_timestamp(current_timestamp()) AS ts,
    c_birth_country
FROM ${src_df_view}
WHERE c_birth_country = 'HONG KONG' OR c_birth_country = 'CHINA' 
LIMIT 1000

  1. Inserisci nuovamente i dati nelle tabelle Hudi.
%%sql
INSERT INTO ${hudi_catalog}.${hudi_db}.${cow_table_name_sql}
SELECT 
    c_customer_id ,  
    c_customer_sk,
    c_email_address,
    c_first_name,
    c_last_name,
    unix_timestamp(current_timestamp()) AS ts,
    c_birth_country
FROM ${insert_into_view}

Interroga le tabelle Hudi tramite Lake Formation con FGAC

Dopo aver creato il database e le tabelle Hudi, sei pronto per eseguire query sulle tabelle utilizzando il controllo degli accessi granulare con Lake Formation. Abbiamo creato due tipi di tabelle Hudi: Copy-On-Write (COW) e Merge-On-Read (MOR). La tabella COW memorizza i dati in un formato colonnare (Parquet) e ogni aggiornamento crea una nuova versione dei file durante una scrittura. Ciò significa che per ogni aggiornamento, Hudi riscrive l'intero file, il che può richiedere più risorse ma fornire prestazioni di lettura più veloci. MOR, d'altra parte, viene introdotto per i casi in cui COW potrebbe non essere ottimale, in particolare per carichi di lavoro pesanti di scrittura o modifica. In una tabella MOR, ogni volta che si verifica un aggiornamento, Hudi scrive solo la riga per il record modificato, riducendo i costi e consentendo scritture a bassa latenza. Tuttavia, le prestazioni di lettura potrebbero essere più lente rispetto alle tabelle COW.

Concedere l'autorizzazione di accesso alla tabella

Utilizziamo il ruolo IAM<STACK-NAME>-hudi-table-pii-roleper interrogare Hudi COW e MOR contenenti colonne PII. Per prima cosa concediamo l'autorizzazione di accesso alla tabella tramite Lake Formation:

  1. Sulla console Lake Formation, scegli Autorizzazioni del data lake per Permessi nel pannello di navigazione.
  2. Scegli Grant.
  3. Scegli<STACK-NAME>-hudi-table-pii-roleper Utenti e ruoli IAM.
  4. Scegliere ilrsv2_blog_hudi_db_1database per Database.
  5. Nel tavoli, scegli le quattro tabelle Hudi che hai creato nel taccuino Jupyter.

LF: concedere le autorizzazioni per i dati

  1. Nel Autorizzazioni della tabella, selezionare Seleziona.
  2. Scegli Grant.

LF - autorizzazioni tabella

Interrogare le colonne PII

Ora sei pronto per eseguire il notebook per interrogare le tabelle Hudi. Seguiamo passaggi simili alla sezione precedente per eseguire il notebook in SageMaker Studio:

  1. Sulla console SageMaker, vai a<STACK-NAME>-Studio-EMR-LF-Hudidominio.
  2. Sulla Lancio menu accanto a<STACK-NAME>-hudi-table-readerprofilo utente, scegli Studio.
  3. Carica il taccuino scaricato rsv2-hudi-table-pii-reader-notebook.
  4. Apri il taccuino caricato.
  5. Ripeti i passaggi di configurazione del notebook e connettiti allo stesso cluster EMR, ma utilizza il ruolo<STACK-NAME>-hudi-table-pii-role.

Nella fase attuale, il cluster EMR abilitato per FGAC deve interrogare la colonna del tempo di commit di Hudi per eseguire query incrementali e viaggi nel tempo. Non supporta la sintassi "timestamp as of" di Spark e Spark.read(). Stiamo lavorando attivamente per incorporare il supporto per entrambe le azioni nelle future versioni di Amazon EMR con FGAC abilitato.

Ora puoi seguire i passaggi nel taccuino. Di seguito sono riportati alcuni passaggi evidenziati:

  1. Esegui una query di istantanea.
%%sql 
SELECT c_birth_country, count(*) FROM ${hudi_catalog}.${hudi_db}.${cow_table_name_sql} GROUP BY c_birth_country;

  1. Esegui una query incrementale.
incremental_df = spark.sql(f"""
SELECT * FROM {HUDI_CATALOG}.{HUDI_DATABASE}.{COW_TABLE_NAME_SQL} WHERE _hoodie_commit_time >= {commit_ts[-1]}
""")

incremental_df.createOrReplaceTempView("incremental_view")

%%sql
SELECT 
    c_birth_country, 
    count(*) 
FROM incremental_view
GROUP BY c_birth_country;

  1. Esegui una query di viaggio nel tempo.
%%sql
SELECT
    c_birth_country, COUNT(*) as count
FROM ${hudi_catalog}.${hudi_db}.${cow_table_name_sql}
WHERE _hoodie_commit_time IN
(
    SELECT DISTINCT _hoodie_commit_time FROM ${hudi_catalog}.${hudi_db}.${cow_table_name_sql} ORDER BY _hoodie_commit_time LIMIT 1 
)
GROUP BY c_birth_country

  1. Esegui query sulle tabelle MOR ottimizzate per la lettura e in tempo reale.
%%sql
SELECT
    a.email_label,
    count(*)
FROM (
    SELECT
        CASE
            WHEN c_email_address = 'UNKNOWN' THEN 'UNKNOWN'
            ELSE 'NOT_UNKNOWN'
        END AS email_label
    FROM ${hudi_catalog}.${hudi_db}.${mor_table_name_sql}_ro
    WHERE c_birth_country = 'HONG KONG'
) a
GROUP BY a.email_label;

%%sql
SELECT *  
FROM ${hudi_catalog}.${hudi_db}.${mor_table_name_sql}_ro
WHERE 
    c_birth_country = 'INDIA' OR c_first_name = 'MASKED'

Interroga le tabelle Hudi con filtri di dati a livello di colonna e di riga

Utilizziamo il ruolo IAM<STACK-NAME>-hudi-table-non-pii-roleper interrogare le tabelle Hudi. A questo ruolo non è consentito eseguire query su colonne contenenti PII. Utilizziamo i filtri di dati a livello di colonna e di riga di Lake Formation per implementare un controllo degli accessi granulare:

  1. Sulla console Lake Formation, scegli Filtri dati per Catalogo dati nel pannello di navigazione.
  2. Scegli Crea nuovo filtro.
  3. Nel Nome del filtro dati, accederecustomer-pii-filter.
  4. Sceglirsv2_blog_hudi_db_1per Database di destinazione.
  5. Sceglirsv2_blog_hudi_mor_sql_dl_customer_1per Tabella di destinazione.
  6. Seleziona Escludi colonne e scegliere ilc_customer_id,c_email_addressec_last_namecolonne.
  7. entrarec_birth_country != 'HONG KONG'per Espressione del filtro di riga.
  8. Scegli Crea un filtro.

LF: crea filtro dati

  1. Scegli Autorizzazioni del data lake per Permessi nel pannello di navigazione.
  2. Scegli Grant.
  3. Scegli<STACK-NAME>-hudi-table-non-pii-roleper Utenti e ruoli IAM.
  4. Sceglirsv2_blog_hudi_db_1per Database.
  5. Sceglirsv2_blog_hudi_mor_sql_dl_tpc_customer_1per tavoli.
  6. Sceglicustomer-pii-filterper Filtri dati.
  7. Nel Autorizzazioni del filtro dati, selezionare Seleziona.
  8. Scegli Grant.

LF: concedere le autorizzazioni per i dati

Seguiamo passaggi simili per eseguire il notebook in SageMaker Studio:

  1. Nella console SageMaker, vai al dominioStudio-EMR-LF-Hudi.
  2. Sulla Lancio menù per ilhudi-table-readerprofilo utente, scegli Studio.
  3. Carica il taccuino scaricato rsv2-hudi-table-non-pii-reader-notebook e scegli Apri.
  4. Ripeti i passaggi di configurazione del notebook e connettiti allo stesso cluster EMR, ma seleziona il ruolo<STACK-NAME>-hudi-table-non-pii-role.

Ora puoi seguire i passaggi nel taccuino. Dai risultati della query, puoi vedere che è stato applicato FGAC tramite il filtro dati Lake Formation. Il ruolo non può vedere le colonne PIIc_customer_id,c_last_nameec_email_address. Inoltre, le righe daHONG KONGsono stati filtrati.

risultato della query filtrata

ripulire

Dopo aver finito di sperimentare la soluzione, ti consigliamo di ripulire le risorse con i seguenti passaggi per evitare costi imprevisti:

  1. Chiudi le app SageMaker Studio per i profili utente.

Il cluster EMR verrà eliminato automaticamente dopo il valore di timeout di inattività.

  1. Eliminare il File system elastico Amazon (Amazon EFS) creato per il dominio.
  2. Svuotare i secchi S3 creato dallo stack CloudFormation.
  3. Nella console AWS CloudFormation, elimina lo stack.

Conclusione

In questo post, abbiamo utilizzato Apachi Hudi, un tipo di tabelle OTF, per dimostrare questa nuova funzionalità per applicare un controllo degli accessi granulare su Amazon EMR. Puoi definire autorizzazioni granulari in Lake Formation per le tabelle OTF e applicarle tramite query Spark SQL sui cluster EMR. Puoi anche utilizzare funzionalità di data Lake transazionale come l'esecuzione di query snapshot, query incrementali, viaggi nel tempo e query DML. Tieni presente che questa nuova funzionalità copre tutte le tabelle OTF.

Questa funzionalità viene lanciata a partire dalla versione 6.15 di Amazon EMR Regioni dove è disponibile Amazon EMR. Con l'integrazione di Amazon EMR con Lake Formation, puoi gestire ed elaborare con sicurezza i big data, sbloccando insight e facilitando un processo decisionale informato mantenendo al contempo la sicurezza e la governance dei dati.

Per saperne di più, fare riferimento a Abilita la formazione di laghi con Amazon EMR e non esitare a contattare i tuoi AWS Solutions Architect, che possono esserti di aiuto durante il tuo percorso con i dati.


L'autore

Raimondo LaiRaimondo Lai è un Senior Solutions Architect specializzato nel soddisfare le esigenze dei clienti di grandi imprese. La sua esperienza consiste nell'assistere i clienti nella migrazione di complessi sistemi e database aziendali su AWS, nella costruzione di piattaforme di data warehousing e data Lake aziendali. Raymond eccelle nell'identificazione e progettazione di soluzioni per casi d'uso AI/ML e si concentra in particolare sulle soluzioni AWS Serverless e sulla progettazione dell'architettura basata sugli eventi.

Bin Wang, PhD, è un Senior Analytic Specialist Solutions Architect presso AWS, vanta oltre 12 anni di esperienza nel settore ML, con particolare attenzione alla pubblicità. Possiede esperienza nell'elaborazione del linguaggio naturale (NLP), nei sistemi di raccomandazione, in diversi algoritmi ML e nelle operazioni ML. È profondamente appassionato nell'applicazione delle tecniche ML/DL e dei big data per risolvere problemi del mondo reale.

Aditya Shah è un ingegnere di sviluppo software presso AWS. È interessato ai motori di database e data warehouse e ha lavorato sull'ottimizzazione delle prestazioni, sulla conformità della sicurezza e sulla conformità ACID per motori come Apache Hive e Apache Spark.

Melodia Yang è Senior Big Data Solution Architect per Amazon EMR presso AWS. È una leader esperta nell'analisi dei dati che collabora con i clienti AWS per fornire indicazioni sulle best practice e consigli tecnici al fine di assisterli con successo nella trasformazione dei dati. Le sue aree di interesse sono i framework e l'automazione open source, l'ingegneria dei dati e i DataOps.

spot_img

L'ultima intelligenza

spot_img