Abilitazione di Amazon EMR con Lake Formation - 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à.

Abilitazione di Amazon EMR con Lake Formation

Con Amazon EMR 6.15.0 e versioni successive, quando esegui job Spark su Amazon EMR EC2 su cluster che accedono ai dati nel AWS Glue Data Catalog, AWS Lake Formation puoi utilizzare per applicare autorizzazioni a livello di tabella, riga, colonna e cella su tabelle basate su Hudi, Iceberg o Delta Lake.

Questa sezione illustra come creare una configurazione di sicurezza e impostare Lake Formation per l'utilizzo con Amazon EMR. Descrive inoltre come avviare un cluster con la configurazione di sicurezza creata per Lake Formation.

Passaggio 1: Impostazione di un ruolo di runtime per il cluster EMR

Per utilizzare un ruolo di runtime per il cluster EMR, devi prima creare una configurazione di sicurezza. Con una configurazione di sicurezza puoi applicare opzioni di sicurezza, autorizzazione e autenticazione coerenti in tutti i tuoi cluster.

  1. Crea un file denominato lf-runtime-roles-sec-cfg.json con la seguente configurazione di sicurezza.

    { "AuthorizationConfiguration": { "IAMConfiguration": { "EnableApplicationScopedIAMRole": true, "ApplicationScopedIAMRoleConfiguration": { "PropagateSourceIdentity": true } }, "LakeFormationConfiguration": { "AuthorizedSessionTagValue": "Amazon EMR" } }, "EncryptionConfiguration": { "EnableAtRestEncryption": false, "EnableInTransitEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": {<certificate-configuration>} } } }

    L'esempio seguente illustra come utilizzare un file zip con certificati in Amazon S3 per la configurazione dei certificati:

    "TLSCertificateConfiguration": { "CertificateProviderType": "PEM", "S3Object": "s3://MyConfigStore/artifacts/MyCerts.zip" }

    L'esempio seguente illustra come utilizzare un provider di chiavi personalizzate per la configurazione dei certificati:

    "TLSCertificateConfiguration": { "CertificateProviderType": "Custom", "S3Object": "s3://MyConfig/artifacts/MyCerts.jar", "CertificateProviderClass": "com.mycompany.MyCertProvider" }
  2. Quindi, per assicurarti che il tag di sessione possa autorizzare Lake Formation, imposta la proprietà LakeFormationConfiguration/AuthorizedSessionTagValue su Amazon EMR.

  3. Utilizza il seguente comando per creare una configurazione di sicurezza Amazon EMR.

    aws emr create-security-configuration \ --name 'iamconfig-with-iam-lf' \ --security-configuration file://lf-runtime-roles-sec-cfg.json

    In alternativa, puoi utilizzare la console Amazon EMR per creare una configurazione di sicurezza con impostazioni personalizzate.

Fase 2: avvio di un cluster Amazon EMR

Ora puoi avviare un cluster EMR con la configurazione di sicurezza creata nel passaggio precedente. Per ulteriori informazioni sulle configurazioni di sicurezza, consulta le sezioni Usa le configurazioni di sicurezza per configurare la sicurezza dei cluster Amazon EMR e Ruoli di runtime per le fasi di Amazon EMR.

Fase 3: configurare le autorizzazioni a livello di colonna, riga o cella basate su Lake Formation con i ruoli di runtime di Amazon EMR

Per applicare un controllo granulare degli accessi a livello di colonna, riga o cella con Lake Formation, l'amministratore del data lake per Lake Formation deve impostare Amazon EMR come valore per la configurazione del tag di sessione,. AuthorizedSessionTagValue Lake Formation utilizza questo tag di sessione per autorizzare i chiamanti e fornire l'accesso al data lake. Puoi impostare questo tag di sessione nella sezione Impostazioni di integrazione dell'applicazione della console Lake Formation. Sostituiscilo 123456789012 con il tuo Account AWS ID.

Fase 4: Configurazione delle sovvenzioni AWS Glue and Lake Formation per i ruoli di runtime di Amazon EMR

Per continuare con la configurazione del controllo degli accessi basato su Lake Formation con i ruoli di runtime di Amazon EMR, devi configurare le sovvenzioni AWS Glue and Lake Formation per i ruoli di runtime di Amazon EMR. Per permettere ai ruoli di runtime IAM di interagire con Lake Formation, concedi loro l'accesso con lakeformation:GetDataAccess e glue:Get*.

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 catalogo dati (SELECT), l'operazione fallisce se non disponi dell'autorizzazione IAM per l'API glue:Get*. Per maggiori dettagli sul controllo degli accessi in Lake Formation, consulta la sezione Lake Formation access control overview (Panoramica del controllo degli accessi a Lake Formation).

  1. Crea il file emr-runtime-roles-lake-formation-policy.json con i seguenti contenuti.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "LakeFormationManagedAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:Get*", "glue:Create*", "glue:Update*" ], "Resource": [ "*" ] } ] }
  2. Crea la policy IAM correlata.

    aws iam create-policy \ --policy-name emr-runtime-roles-lake-formation-policy \ --policy-document file://emr-runtime-roles-lake-formation-policy.json
  3. Per assegnare questa policy ai ruoli di runtime IAM, segui i passaggi in Managing AWS Lake Formation permissions.

Ora puoi utilizzare i ruoli di runtime e Lake Formation per applicare le autorizzazioni a livello di tabella e colonna. Puoi anche utilizzare un'identità di origine per controllare le azioni e monitorare le operazioni con AWS CloudTrail.

Per ogni ruolo IAM che intendi utilizzare come ruolo di runtime, imposta la seguente policy di attendibilità, sostituendo EMR_EC2_DefaultRole con il ruolo del profilo dell'istanza. Per modificare la policy di attendibilità di un ruolo IAM, consulta Modifica di una policy di attendibilità del ruolo.

{ "Sid":"AllowAssumeRole", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::<AWS_ACCOUNT_ID>:role/EMR_EC2_DefaultRole" }, "Action":[ "sts:AssumeRole", "sts:TagSession" ] }

Per un end-to-end esempio dettagliato, consulta la sezione Introduzione ai ruoli di runtime per le fasi di Amazon EMR.

Per informazioni su come integrare Iceberg e AWS Glue Data Catalog per una gerarchia multicatalogo, vedi Configurare Spark per accedere a una gerarchia multicatalogo in Glue Data Catalog. AWS