Configurazione dei ruoli IAM di runtime per l'accesso al EMR cluster Amazon in Studio - Amazon SageMaker

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

Configurazione dei ruoli IAM di runtime per l'accesso al EMR cluster Amazon in Studio

Quando ti connetti a un EMR cluster Amazon dai tuoi notebook Studio o Studio Classic, puoi sfogliare visivamente un elenco di IAM ruoli, noti come ruoli di runtime, e selezionarne uno al volo. Successivamente, tutti i job Apache Spark, Apache Hive o Presto creati dal notebook accedono solo ai dati e alle risorse consentiti dalle policy associate al ruolo di runtime. Inoltre, quando si accede ai dati dai data lake gestiti con AWS Lake Formation, è possibile imporre l'accesso a livello di tabella e colonna utilizzando le policy associate al ruolo di runtime.

Grazie a questa funzionalità, tu e i tuoi colleghi potete connettervi allo stesso cluster, utilizzando ciascuno un ruolo di runtime con autorizzazioni corrispondenti al livello individuale di accesso ai dati. Le sessioni sono inoltre isolate l'una dall'altra nel cluster condiviso.

Per provare questa funzionalità con Studio Classic, consulta Applica controlli granulari di accesso ai dati con e AWS Lake Formation Amazon di EMR Amazon SageMaker Studio Classic. Questo post del blog ti aiuta a configurare un ambiente demo in cui puoi provare a utilizzare ruoli di runtime preconfigurati per connetterti ai EMR cluster Amazon.

Prerequisiti

Prima di iniziare, assicurati di soddisfare i seguenti requisiti preliminari:

Scenari di connessione multi-account

L'autenticazione con ruolo di runtime supporta una varietà di scenari di connessione tra account quando i dati risiedono all'esterno dell'account Studio. L'immagine seguente mostra tre diversi modi in cui puoi assegnare il tuo EMR cluster Amazon, i dati e persino il ruolo EMR di esecuzione di Amazon runtime tra Studio e gli account di dati:

Scenari tra account supportati dall'autenticazione dei IAM ruoli di runtime.

Nell'opzione 1, il EMR cluster Amazon e il ruolo EMR di esecuzione del runtime di Amazon si trovano in un account dati separato dall'account Studio. Definisci una politica di autorizzazione separata per il ruolo di EMR accesso di Amazon (noto anche comeAssumable role) che concede l'autorizzazione al ruolo di esecuzione di Studio o Studio Classic per assumere il ruolo di EMR accesso Amazon. Il ruolo di EMR accesso Amazon chiama quindi Amazon per EMR API GetClusterSessionCredentials conto del tuo ruolo di esecuzione Studio o Studio Classic, dandoti accesso al cluster.

Nell'opzione 2, il tuo EMR cluster Amazon e il ruolo EMR di esecuzione del runtime di Amazon si trovano nel tuo account Studio. Il tuo ruolo di esecuzione di Studio è autorizzato EMR API GetClusterSessionCredentials a utilizzare Amazon per accedere al tuo cluster. Per accedere al bucket Amazon S3, concedi al ruolo di esecuzione di Amazon EMR runtime le autorizzazioni di accesso al bucket Amazon S3 su più account: concedi queste autorizzazioni nell'ambito della tua policy sui bucket Amazon S3.

Nell'opzione 3, EMR i cluster Amazon si trovano nel tuo account Studio e il ruolo di esecuzione EMR di Amazon runtime si trova nell'account dati. Il tuo ruolo di esecuzione di Studio o Studio Classic è autorizzato EMR API GetClusterSessionCredentials a utilizzare Amazon per accedere al tuo cluster. Aggiungi il ruolo EMR di esecuzione del runtime di Amazon nella configurazione del ruolo di esecuzioneJSON. Quindi puoi selezionare il ruolo nell'interfaccia utente quando scegli il cluster. Per dettagli su come configurare il JSON file di configurazione del ruolo di esecuzione, consultaPrecarica i tuoi ruoli di esecuzione in Studio o Studio Classic.

Configura Studio per utilizzare i IAM ruoli di runtime

Per stabilire l'autenticazione dei ruoli di runtime per i tuoi EMR cluster Amazon, configura le IAM politiche, la rete e i miglioramenti dell'usabilità richiesti. La configurazione dipende dal fatto che tu gestisca eventuali accordi tra account se EMR i cluster Amazon, il ruolo di esecuzione del EMR runtime di Amazon o entrambi risiedono al di fuori del tuo account Studio. La sezione seguente illustra le politiche da installare, come configurare la rete per consentire il traffico tra più account e il file di configurazione locale da configurare per automatizzare la connessione AmazonEMR.

Configura l'autenticazione del ruolo di runtime quando il EMR cluster Amazon e Studio si trovano nello stesso account

Se il tuo EMR cluster Amazon risiede nel tuo account Studio, completa i seguenti passaggi per aggiungere le autorizzazioni necessarie alla tua politica di esecuzione di Studio:

  1. Aggiungi la IAM policy richiesta per connetterti ai EMR cluster Amazon. Per informazioni dettagliate, consultare Configura l'elenco dei EMR cluster Amazon.

  2. Concedi l'autorizzazione a chiamare Amazon EMR API GetClusterSessionCredentials quando superi uno o più ruoli di esecuzione EMR di Amazon runtime consentiti specificati nella politica.

  3. (Facoltativo) Concedi l'autorizzazione a trasferire IAM ruoli che seguono qualsiasi convenzione di denominazione definita dall'utente.

  4. (Facoltativo) Concedi l'autorizzazione per accedere ai EMR cluster Amazon etichettati con stringhe specifiche definite dall'utente.

  5. Precarica i IAM ruoli in modo da poter selezionare il ruolo da utilizzare quando ti connetti al tuo EMR cluster Amazon. Per informazioni dettagliate su come precaricare i IAM ruoli, consulta. Precarica i tuoi ruoli di esecuzione in Studio o Studio Classic

La seguente policy di esempio consente di chiamare i ruoli EMR di esecuzione di Amazon Runtime appartenenti ai gruppi di modellazione e formazione. GetClusterSessionCredentials Inoltre, l'assicurato può accedere ai EMR cluster Amazon contrassegnati con le stringhe o. modeling training

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "*", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::123456780910:role/emr-execution-role-ml-modeling*", "arn:aws:iam::123456780910:role/emr-execution-role-ml-training*" ], "elasticmapreduce:ResourceTag/group": [ "*modeling*", "*training*" ] } } } ] }

Configura l'autenticazione del ruolo di runtime quando il cluster e Studio si trovano in account diversi

Se il tuo EMR cluster Amazon non si trova nel tuo account Studio, consenti al ruolo di SageMaker esecuzione di assumere il ruolo di EMR accesso Amazon su più account in modo da poterti connettere al cluster. Completa le fasi seguenti per eseguire la configurazione multi-account:

  1. Crea la tua politica di autorizzazione del ruolo di SageMaker esecuzione in modo che il ruolo di esecuzione possa assumere il ruolo di EMR accesso di Amazon. Di seguito è riportato un esempio di policy:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAssumeCrossAccountEMRAccessRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::emr_account_id:role/emr-access-role-name" } ] }
  2. Crea la policy di fiducia per specificare a IDs quali account Studio è affidato il ruolo di Amazon EMR Access. Di seguito è riportato un esempio di policy:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio_account_id:role/studio_execution_role" }, "Action": "sts:AssumeRole" } }
  3. Crea la politica di autorizzazione del ruolo di EMR accesso di Amazon, che concede al ruolo EMR di esecuzione del runtime di Amazon le autorizzazioni necessarie per eseguire le attività previste sul cluster. Configura il ruolo di EMR accesso Amazon per chiamarlo API GetClusterSessionCredentials con i ruoli EMR di esecuzione di Amazon runtime specificati nella politica di autorizzazione del ruolo di accesso. Di seguito è riportato un esempio di policy:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::emr_account_id:role/emr-execution-role-name" ] } } } ] }
  4. Configura la rete tra account in modo che il traffico possa spostarsi avanti e indietro tra i tuoi account. Per istruzioni guidate, consulta Configura l'accesso alla rete per il tuo EMR cluster AmazonConfigurare il. I passaggi di questa sezione consentono di completare le seguenti attività:

    1. VPC-collega il tuo account Studio e il tuo EMR account Amazon per stabilire una connessione.

    2. Aggiungi manualmente i percorsi alle tabelle di routing delle sottoreti private in entrambi gli account. Ciò consente la creazione e la connessione di EMR cluster Amazon dall'account Studio alla sottorete privata dell'account remoto.

    3. Configura il gruppo di sicurezza collegato al tuo dominio Studio per consentire il traffico in uscita e il gruppo di sicurezza del nodo EMR primario Amazon per consentire il TCP traffico in entrata dal gruppo di sicurezza dell'istanza Studio.

  5. Precarica i ruoli IAM di runtime in modo da poter selezionare il ruolo da utilizzare quando ti connetti al tuo EMR cluster Amazon. Per informazioni dettagliate su come precaricare i IAM ruoli, consulta. Precarica i tuoi ruoli di esecuzione in Studio o Studio Classic

Configura l'accesso a Lake Formation

Quando accedi ai dati dai data lake gestiti da AWS Lake Formation, puoi imporre l'accesso a livello di tabella e colonna utilizzando le policy associate al tuo ruolo di runtime. Per configurare l'autorizzazione per l'accesso a Lake Formation, consulta Integrate Amazon EMR with AWS Lake Formation.

Precarica i tuoi ruoli di esecuzione in Studio o Studio Classic

Puoi precaricare i ruoli IAM di runtime in modo da poter selezionare il ruolo da utilizzare quando ti connetti al tuo EMR cluster Amazon. Gli utenti di JupyterLab in Studio possono utilizzare la SageMaker console o lo script fornito.

Preload runtime roles in JupyterLab using the SageMaker console

Per associare i ruoli di runtime al profilo utente o al dominio utilizzando la SageMaker console:

  1. Accedi alla SageMaker console all'indirizzo https://console.aws.amazon.com/sagemaker/.

  2. Nel riquadro di navigazione a sinistra, scegli dominio, quindi seleziona il dominio utilizzando il ruolo di SageMaker esecuzione di cui hai aggiornato le autorizzazioni.

    • Per aggiungere il runtime (e i ruoli di accesso per il caso d'uso tra più account) al dominio: nella scheda Configurazioni app della pagina dei dettagli del dominio, vai alla sezione. JupyterLab

    • Per aggiungere il runtime (e i ruoli di accesso per il caso d'uso tra più account) al profilo utente: nella pagina dei dettagli del dominio, scegli la scheda Profili utente, seleziona il profilo utente utilizzando il ruolo di SageMaker esecuzione di cui hai aggiornato le autorizzazioni. Nella scheda Configurazioni dell'app, vai alla sezione. JupyterLab

  3. Scegli Modifica e aggiungi il tuo ruolo ARNs di accesso (ruolo assumibile) e i ruoli di esecuzione in runtime EMR Serverless.

  4. Scegli Invia.

La prossima volta che ti connetti a un EMR server Amazon, i ruoli di runtime dovrebbero apparire in un menu a discesa per la selezione.

Preload runtime roles in JupyterLab using a Python script

In un' JupyterLab applicazione avviata da uno spazio utilizzando il ruolo di SageMaker esecuzione di cui hai aggiornato le autorizzazioni, esegui il seguente comando in un terminale. SostituiscidomainID, user-profile-nameemr-accountID, e EMRServiceRole con i valori corretti. Questo frammento di codice aggiorna le impostazioni di un profilo utente (client.update_userprofile) all'interno di un SageMaker dominio in un caso d'uso tra account. In particolare, imposta i ruoli di servizio per AmazonEMR. Consente inoltre all' JupyterLab applicazione di assumere un IAM ruolo particolare (AssumableRoleoAccessRole) per l'esecuzione di Amazon EMR all'interno dell'EMRaccount Amazon.

In alternativa, client.update_domain utilizzalo per aggiornare le impostazioni del dominio se il tuo spazio utilizza un ruolo di esecuzione impostato a livello di dominio.

import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_userprofile( DomainId="domainID", UserProfileName="user-profile-name", DefaultUserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"], 'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", "arn:aws:iam::emr-accountID:role/AnotherServiceRole"] } } }) resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))
Preload runtime roles in Studio Classic

Fornisci the ARN of the AccessRole (AssumableRole) al tuo ruolo di SageMaker esecuzione. ARNViene caricato dal server Jupyter al momento del lancio. Il ruolo di esecuzione utilizzato da Studio presuppone il ruolo tra account diversi per rilevare e connettersi ai EMR cluster Amazon nell'account di fiducia.

Puoi specificare queste informazioni utilizzando gli script di Lifecycle Configuration (). LCC Puoi collegarli LCC al tuo dominio o a un profilo utente specifico. Lo LCC script che usi deve essere una JupyterServer configurazione. Per ulteriori informazioni su come creare uno LCC script, consulta Utilizzare le configurazioni del ciclo di vita con Studio Classic.

Di seguito è riportato uno script di esempio. LCC Per modificare lo script, sostituite AssumableRole e emr-account con i rispettivi valori. Il numero di account incrociati è limitato a cinque.

Il seguente frammento è un esempio di script LCC bash che puoi applicare se l'applicazione Studio Classic e il cluster si trovano nello stesso account:

#!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE" FILE_NAME="emr-configurations-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "emr-execution-role-arns": { "123456789012": [ "arn:aws:iam::123456789012:role/emr-execution-role-1", "arn:aws:iam::123456789012:role/emr-execution-role-2" ] } } EOF

Se l'applicazione Studio Classic e i cluster si trovano in account diversi, specifica i ruoli di EMR accesso Amazon che possono utilizzare il cluster. Nella seguente politica di esempio, 123456789012 è l'ID dell'account del EMR cluster Amazon e 212121212121 e 434343434343 sono i ruoli di accesso Amazon consentiti. ARNs EMR

#!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE" FILE_NAME="emr-configurations-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "emr-execution-role-arns": { "123456789012": [ "arn:aws:iam::212121212121:role/emr-execution-role-1", "arn:aws:iam::434343434343:role/emr-execution-role-2" ] } } EOF # add your cross-account EMR access role FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE" FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "123456789012": "arn:aws:iam::123456789012:role/cross-account-emr-access-role" } EOF