Utilizzo di EMR Serverless per un controllo granulare degli AWS Lake Formation accessi - Amazon EMR

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

Utilizzo di EMR Serverless per un controllo granulare degli AWS Lake Formation accessi

Panoramica di

Con le versioni 7.2.0 e successive di Amazon EMR, sfrutta AWS Lake Formation per applicare controlli di accesso granulari alle tabelle di Data Catalog supportate da S3. Questa funzionalità consente di configurare i controlli di accesso a livello di tabella, riga, colonna e cella per read le query all'interno dei job Amazon EMR Serverless Spark. Per configurare un controllo granulare degli accessi per i processi batch e le sessioni interattive di Apache Spark, usa EMR Studio. Consulta le seguenti sezioni per saperne di più su Lake Formation e su come utilizzarlo con EMR Serverless.

L'utilizzo di Amazon EMR Serverless AWS Lake Formation comporta costi aggiuntivi. Per ulteriori informazioni, consulta i prezzi di Amazon EMR.

Come funziona EMR Serverless con AWS Lake Formation

L'utilizzo di EMR Serverless con Lake Formation ti consente di applicare un livello di autorizzazioni su ogni lavoro Spark per applicare il controllo delle autorizzazioni di Lake Formation quando EMR Serverless esegue i lavori. EMR Serverless utilizza i profili di risorse Spark per creare due profili per eseguire i lavori in modo efficace. Il profilo utente esegue il codice fornito dall'utente, mentre il profilo di sistema applica le policy di Lake Formation. Per ulteriori informazioni, consulta Cos'è AWS Lake Formation e Considerazioni e limitazioni.

Quando utilizzi la capacità preinizializzata con Lake Formation, ti suggeriamo di avere almeno due driver Spark. Ogni job abilitato per Lake Formation utilizza due driver Spark, uno per il profilo utente e uno per il profilo di sistema. Per prestazioni ottimali, utilizza il doppio del numero di driver per i lavori abilitati a Lake Formation rispetto a chi non utilizza Lake Formation.

Quando esegui i job Spark su EMR Serverless, considera anche l'impatto dell'allocazione dinamica sulla gestione delle risorse e sulle prestazioni del cluster. La configurazione spark.dynamicAllocation.maxExecutors del numero massimo di esecutori per profilo di risorsa si applica agli esecutori utente e di sistema. Se si configura tale numero in modo che sia uguale al numero massimo consentito di executor, l'esecuzione del job potrebbe bloccarsi a causa di un tipo di executor che utilizza tutte le risorse disponibili, impedendo all'altro executor di eseguire i job di job.

Per non esaurire le risorse, EMR Serverless imposta il numero massimo predefinito di esecutori per profilo di risorsa al 90% del valore. spark.dynamicAllocation.maxExecutors È possibile sovrascrivere questa configurazione quando si specifica spark.dynamicAllocation.maxExecutorsRatio un valore compreso tra 0 e 1. Inoltre, configurate anche le seguenti proprietà per ottimizzare l'allocazione delle risorse e le prestazioni complessive:

  • spark.dynamicAllocation.cachedExecutorIdleTimeout

  • spark.dynamicAllocation.shuffleTracking.timeout

  • spark.cleaner.periodicGC.interval

Di seguito è riportata una panoramica di alto livello su come EMR Serverless ottiene l'accesso ai dati protetti dalle politiche di sicurezza di Lake Formation.

In che modo Amazon EMR accede ai dati protetti dalle policy di sicurezza di Lake Formation.
  1. Un utente invia un job Spark a un'applicazione EMR AWS Lake Formation Serverless abilitata.

  2. EMR Serverless invia il lavoro a un driver utente ed esegue il lavoro nel profilo utente. Il driver utente esegue una versione snella di Spark che non è in grado di avviare attività, richiedere esecutori, accedere a S3 o al catalogo di Glue. Costruisce un piano per il processo.

  3. EMR Serverless imposta un secondo driver chiamato driver di sistema e lo esegue nel profilo di sistema (con un'identità privilegiata). EMR Serverless configura un canale TLS crittografato tra i due driver per la comunicazione. Il driver utente utilizza il canale per inviare i piani per il processo al driver di sistema. Il driver di sistema non esegue il codice inviato dall'utente. Esegue Spark completo e comunica con S3 e il catalogo dati per l'accesso ai dati. Richiede esecutori e compila il piano per il processo in una sequenza di fasi di esecuzione.

  4. EMR Serverless esegue quindi le fasi sugli executor con il driver utente o il driver di sistema. Il codice utente in qualsiasi fase viene eseguito esclusivamente sugli esecutori dei profili utente.

  5. Le fasi che leggono i dati dalle tabelle del Data Catalog protette da AWS Lake Formation o che applicano filtri di sicurezza vengono delegate agli esecutori di sistema.

Abilitazione di Lake Formation in Amazon EMR

Per abilitare Lake Formation, imposta spark.emr-serverless.lakeformation.enabled la true spark-defaults sottoclassificazione per il parametro di configurazione di runtime durante la creazione di un'applicazione EMR Serverless.

aws emr-serverless create-application \ --release-label emr-7.12.0 \ --runtime-configuration '{ "classification": "spark-defaults", "properties": { "spark.emr-serverless.lakeformation.enabled": "true" } }' \ --type "SPARK"

Puoi anche abilitare Lake Formation quando crei una nuova applicazione in EMR Studio. Scegli Use Lake Formation per un controllo granulare degli accessi, disponibile in Configurazioni aggiuntive.

La crittografia tra lavoratori è abilitata per impostazione predefinita quando si utilizza Lake Formation con EMR Serverless, quindi non è necessario abilitare nuovamente in modo esplicito la crittografia tra lavoratori.

Attivazione dei lavori di Lake Formation per Spark

Per abilitare Lake Formation per i singoli job Spark, imposta su spark.emr-serverless.lakeformation.enabled true durante l'utilizzospark-submit.

--conf spark.emr-serverless.lakeformation.enabled=true

Autorizzazioni IAM per il ruolo di runtime del processo

Le autorizzazioni di Lake Formation controllano l'accesso alle risorse di AWS Glue Data Catalog, alle sedi Amazon S3 e ai dati sottostanti in tali sedi. Le autorizzazioni IAM controllano l'accesso a Lake Formation and AWS Glue APIs e alle risorse. Anche se disponi dell'autorizzazione di Lake Formation per accedere a una tabella nel Data Catalog (SELECT), l'operazione fallisce se non disponi dell'autorizzazione IAM per il funzionamento dell'API glue:Get*.

Di seguito è riportato un esempio di policy su come fornire le autorizzazioni IAM per accedere a uno script in S3, caricare i log su S3, le autorizzazioni dell'API AWS Glue e l'autorizzazione per accedere a Lake Formation.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ScriptAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.amzn-s3-demo-bucket/scripts", "arn:aws:s3:::*.amzn-s3-demo-bucket/*" ] }, { "Sid": "LoggingAccess", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/logs/*" ] }, { "Sid": "GlueCatalogAccess", "Effect": "Allow", "Action": [ "glue:Get*", "glue:Create*", "glue:Update*" ], "Resource": [ "*" ] }, { "Sid": "LakeFormationAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": [ "*" ] } ] }

Configurazione delle autorizzazioni di Lake Formation per il ruolo di runtime del processo

Innanzitutto, registrare la posizione della tabella Hive con Lake Formation. Poi, creare le autorizzazioni per il ruolo di runtime del processo nella tabella desiderata. Per maggiori dettagli su Lake Formation, consulta What is AWS Lake Formation? nella Guida per gli AWS Lake Formation sviluppatori.

Dopo aver configurato le autorizzazioni di Lake Formation, invia i lavori Spark su Amazon EMR Serverless. Per ulteriori informazioni sui job Spark, consulta gli esempi di Spark.

Invio di un'esecuzione di processo

Dopo aver completato la configurazione delle sovvenzioni Lake Formation, puoi inviare lavori Spark su EMR Serverless. La sezione che segue mostra esempi di come configurare e inviare le proprietà del job run.

Requisiti per l'autorizzazione

Tabelle non registrate in AWS Lake Formation

Per le tabelle non registrate con AWS Lake Formation, il ruolo di job runtime accede sia al AWS Glue Data Catalog che ai dati della tabella sottostante in Amazon S3. Ciò richiede che il ruolo di job runtime disponga delle autorizzazioni IAM appropriate per le operazioni di AWS Glue e Amazon S3.

Tabelle registrate in AWS Lake Formation

Per le tabelle registrate con AWS Lake Formation, il ruolo di job runtime accede ai metadati di AWS Glue Data Catalog, mentre le credenziali temporanee fornite da Lake Formation accedono ai dati della tabella sottostante in Amazon S3. Le autorizzazioni Lake Formation necessarie per eseguire un'operazione dipendono dalle chiamate API di AWS Glue Data Catalog e Amazon S3 avviate dal job Spark e possono essere riassunte come segue:

  • L'autorizzazione DESCRIBE consente al ruolo di runtime di leggere i metadati di tabelle o database nel Data Catalog

  • L'autorizzazione ALTER consente al ruolo di runtime di modificare i metadati di tabelle o database nel Data Catalog

  • L'autorizzazione DROP consente al ruolo di runtime di eliminare i metadati di tabelle o database dal Data Catalog

  • L'autorizzazione SELECT consente al ruolo di runtime di leggere i dati della tabella da Amazon S3

  • L'autorizzazione INSERT consente al ruolo di runtime di scrivere dati di tabella su Amazon S3

  • L'autorizzazione DELETE consente al ruolo di runtime di eliminare i dati della tabella da Amazon S3

    Nota

    Lake Formation valuta le autorizzazioni pigramente quando un job Spark chiama AWS Glue per recuperare i metadati della tabella e Amazon S3 per recuperare i dati della tabella. I lavori che utilizzano un ruolo di runtime con autorizzazioni insufficienti non falliranno finché Spark non effettuerà una chiamata AWS Glue o Amazon S3 che richiede l'autorizzazione mancante.

Nota

Nella seguente matrice di tabelle supportata:

  • Le operazioni contrassegnate come Supported utilizzano esclusivamente le credenziali di Lake Formation per accedere ai dati delle tabelle per le tabelle registrate con Lake Formation. Se le autorizzazioni di Lake Formation sono insufficienti, l'operazione non ricorrerà alle credenziali del ruolo di runtime. Per le tabelle non registrate con Lake Formation, le credenziali del ruolo di job runtime accedono ai dati della tabella.

  • Le operazioni contrassegnate come Supportate con autorizzazioni IAM sulla posizione Amazon S3 non utilizzano le credenziali di Lake Formation per accedere ai dati delle tabelle sottostanti in Amazon S3. Per eseguire queste operazioni, il ruolo di job runtime deve disporre delle autorizzazioni IAM di Amazon S3 necessarie per accedere ai dati della tabella, indipendentemente dal fatto che la tabella sia registrata con Lake Formation.

Hive
Operation AWS Lake Formation autorizzazioni Stato del supporto
SELECT SELECT Supportata
CREATE TABLE CREATE_TABLE Supportata
CREATE TABLE LIKE CREA_TABELLA Supportato con autorizzazioni IAM sulla posizione Amazon S3
CREATE TABLE AS SELECT CREATE_TABLE Supportato con autorizzazioni IAM sulla posizione Amazon S3
DESCRIBE TABLE DESCRIBE Supportata
SHOW TBLPROPERTIES DESCRIBE Supportata
SHOW COLUMNS DESCRIBE Supportata
SHOW PARTITIONS DESCRIBE Supportata
SHOW CREATE TABLE DESCRIBE Supportata
MODIFICA TABELLA tablename SELEZIONA e ALTER Supportata
MODIFICA LA POSIZIONE DEL tablename SET DI TABELLE - Non supportata
ALTER TABLE tablename AGGIUNGI PARTIZIONE SELEZIONA, INSERISCI e MODIFICA Supportata
REPAIR TABLE SELEZIONA e ALTER Supportata
CARICARE DATI Non supportata
INSERT INSERT e ALTER Supportata
INSERT OVERWRITE SELEZIONA, INSERISCI, ELIMINA e ALTER Supportata
DROP TABLE SELEZIONA, RILASCIA, ELIMINA e MODIFICA Supportata
TRUNCATE TABLE SELEZIONA, INSERISCI, ELIMINA e MODIFICA Supportata
Dataframe Writer V1 Uguale all'operazione SQL corrispondente

Supportata per l'aggiunta di dati a una tabella esistente. Per ulteriori informazioni, consulta le considerazioni e le limitazioni

Dataframe Writer V2 Uguale all'operazione SQL corrispondente

Supportata per l'aggiunta di dati a una tabella esistente. Per ulteriori informazioni, consulta le considerazioni e le limitazioni

Iceberg
Operation AWS Lake Formation autorizzazioni Stato del supporto
SELECT SELECT Supportata
CREATE TABLE CREATE_TABLE Supportata
CREATE TABLE LIKE CREA_TABELLA Supportato con autorizzazioni IAM sulla posizione Amazon S3
CREATE TABLE AS SELECT CREATE_TABLE Supportato con autorizzazioni IAM sulla posizione Amazon S3
SOSTITUISCI LA TABELLA CON SELECT SELEZIONA, INSERISCI e ALTER Supportata
DESCRIBE TABLE DESCRIBE Supportato con autorizzazioni IAM sulla posizione Amazon S3
SHOW TBLPROPERTIES DESCRIBE Supportato con autorizzazioni IAM sulla posizione Amazon S3
SHOW CREATE TABLE DESCRIBE Supportato con autorizzazioni IAM sulla posizione Amazon S3
ALTER TABLE SELEZIONA, INSERISCI e MODIFICA Supportata
ALTER TABLE SET LOCATION SELEZIONA, INSERISCI e ALTER Supportato con autorizzazioni IAM sulla posizione Amazon S3
MODIFICA LA SCRITTURA DELLA TABELLA ORDINATA PER SELEZIONA, INSERISCI e ALTER Supportato con autorizzazioni IAM sulla posizione Amazon S3
ALTER TABLE WRITE DISTRIBUITO DA SELECT, INSERT e ALTER Supportato con autorizzazioni IAM sulla posizione Amazon S3
MODIFICARE LA TABELLA, RINOMINARE LA TABELLA CREATE_TABLE e DROP Supportata
INSERT INTO SELECT, INSERT e ALTER Supportata
INSERT OVERWRITE SELEZIONA, INSERISCI e ALTER Supportata
DELETE SELEZIONA, INSERISCI e ALTER Supportata
UPDATE SELEZIONA, INSERISCI e ALTER Supportata
MERGE INTO SELEZIONA, INSERISCI e ALTER Supportata
DROP TABLE SELEZIONA, ELIMINA e RILASCIA Supportata
DataFrame Writer V1 - Non supportata
DataFrame Scrittore V2 Uguale all'operazione SQL corrispondente

Supportata per l'aggiunta di dati a una tabella esistente. Per ulteriori informazioni, consulta le considerazioni e le limitazioni.

Tabelle dei metadati SELECT Supportato. Alcune tabelle sono nascoste. Per ulteriori informazioni, consulta le considerazioni e le limitazioni.
Stored procedure - Supportato per le tabelle che soddisfano le seguenti condizioni:
  • Tabelle non registrate in AWS Lake Formation

  • Tabelle che non utilizzano register_table e migrate

    Per ulteriori informazioni, fare riferimento a considerazioni e limitazioni.

Configurazione Spark per Iceberg: L'esempio seguente mostra come configurare Spark con Iceberg. Per eseguire i job Iceberg, fornisci le seguenti proprietà. spark-submit

--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog --conf spark.sql.catalog.spark_catalog.warehouse=<S3_DATA_LOCATION> --conf spark.sql.catalog.spark_catalog.glue.account-id=<ACCOUNT_ID> --conf spark.sql.catalog.spark_catalog.client.region=<REGION> --conf spark.sql.catalog.spark_catalog.glue.endpoint=https://glue.<REGION>.amazonaws.com
Hudi
Operation AWS Lake Formation autorizzazioni Stato del supporto
SELECT SELECT Supportata
CREATE TABLE CREATE_TABLE Supportato con autorizzazioni IAM sulla posizione Amazon S3
CREATE TABLE LIKE CREATE_TABLE Supportato con autorizzazioni IAM sulla posizione Amazon S3
CREATE TABLE AS SELECT - Non supportata
DESCRIBE TABLE DESCRIBE Supportato con autorizzazioni IAM sulla posizione Amazon S3
SHOW TBLPROPERTIES DESCRIBE Supportato con autorizzazioni IAM sulla posizione Amazon S3
SHOW COLUMNS DESCRIBE Supportato con autorizzazioni IAM sulla posizione Amazon S3
SHOW CREATE TABLE DESCRIBE Supportato con autorizzazioni IAM sulla posizione Amazon S3
ALTER TABLE SELECT Supportato con autorizzazioni IAM sulla posizione Amazon S3
INSERT INTO SELEZIONA e MODIFICA Supportato con autorizzazioni IAM sulla posizione Amazon S3
INSERT OVERWRITE SELEZIONA e MODIFICA Supportato con autorizzazioni IAM sulla posizione Amazon S3
DELETE - Non supportata
UPDATE - Non supportata
MERGE INTO - Non supportata
DROP TABLE SELEZIONA e RILASCIA Supportato con autorizzazioni IAM sulla posizione Amazon S3
DataFrame Writer V1 - Non supportata
DataFrame Scrittore V2 Uguale all'operazione SQL corrispondente Supportato con autorizzazioni IAM sulla posizione Amazon S3
Tabelle dei metadati - Non supportata
Manutenzione delle tabelle e funzionalità di utilità - Non supportata

I seguenti esempi configurano Spark con Hudi, specificando le posizioni dei file e altre proprietà necessarie per l'uso.

Configurazione Spark per Hudi: questo frammento, se usato in un notebook, specifica il percorso del file JAR del pacchetto Hudi Spark, che abilita la funzionalità Hudi in Spark. Inoltre configura Spark per utilizzare il AWS Glue Data Catalog come metastore.

%%configure -f { "conf": { "spark.jars": "/usr/lib/hudi/hudi-spark-bundle.jar", "spark.hadoop.hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", "spark.serializer": "org.apache.spark.serializer.JavaSerializer", "spark.sql.catalog.spark_catalog": "org.apache.spark.sql.hudi.catalog.HoodieCatalog", "spark.sql.extensions": "org.apache.spark.sql.hudi.HoodieSparkSessionExtension" } }

Configurazione Spark per Hudi with AWS Glue: questo frammento, se utilizzato in un notebook, abilita Hudi come formato data-lake supportato e garantisce la disponibilità delle librerie e delle dipendenze Hudi.

%%configure { "--conf": "spark.serializer=org.apache.spark.serializer.JavaSerializer --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog --conf spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension", "--datalake-formats": "hudi", "--enable-glue-datacatalog": True, "--enable-lakeformation-fine-grained-access": "true" }
Delta Lake
Operation AWS Lake Formation autorizzazioni Stato del supporto
SELECT SELECT Supportata
CREATE TABLE CREATE_TABLE Supportata
CREATE TABLE LIKE - Non supportata
CREATE TABLE AS SELECT CREA_TABELLA Supportata
SOSTITUISCI LA TABELLA COME SELECT SELEZIONA, INSERISCI e ALTER Supportata
DESCRIBE TABLE DESCRIBE Supportato con autorizzazioni IAM sulla posizione Amazon S3
SHOW TBLPROPERTIES DESCRIBE Supportato con autorizzazioni IAM sulla posizione Amazon S3
SHOW COLUMNS DESCRIBE Supportato con autorizzazioni IAM sulla posizione Amazon S3
SHOW CREATE TABLE DESCRIBE Supportato con autorizzazioni IAM sulla posizione Amazon S3
ALTER TABLE SELEZIONA e INSERISCI Supportata
ALTER TABLE SET LOCATION SELEZIONA e INSERISCI Supportato con autorizzazioni IAM sulla posizione Amazon S3
MODIFICA TABLE CLUSTER tablename DI SELEZIONA e INSERISCI Supportato con autorizzazioni IAM sulla posizione Amazon S3
ALTER TABLE AGGIUNGI VINCOLO tablename SELEZIONA e INSERISCI Supportato con autorizzazioni IAM sulla posizione Amazon S3
MODIFICA IL VINCOLO tablename TABLE DROP SELEZIONA e INSERISCI Supportato con autorizzazioni IAM sulla posizione Amazon S3
INSERT INTO SELEZIONA e INSERISCI Supportata
INSERT OVERWRITE SELEZIONA e INSERISCI Supportata
DELETE SELEZIONA e INSERISCI Supportata
UPDATE SELEZIONA e INSERISCI Supportata
MERGE INTO SELEZIONA e INSERISCI Supportata
DROP TABLE SELEZIONA, ELIMINA e RILASCIA Supportata
DataFrame Writer V1 - Non supportata
DataFrame Scrittore V2 Uguale all'operazione SQL corrispondente

Supportata

Manutenzione delle tabelle e funzionalità di utilità - Non supportata

EMR Serverless con Delta Lake: per utilizzare Delta Lake with Lake Formation su EMR Serverless, esegui il seguente comando:

spark-sql \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog \