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

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 di runtime IAM per l’accesso al cluster Amazon EMR in Studio

Quando ti connetti a un cluster Amazon EMR dai notebook Studio o Studio Classic, puoi visualizzare un elenco di ruoli IAM, noti come ruoli di runtime, e selezionarne rapidamente uno. Successivamente, tutti i processi Apache Spark, Apache Hive o Presto creati dal notebook avranno accesso solo ai dati e alle risorse consentiti dalle policy collegate al ruolo di runtime. Inoltre, quando si accede ai dati dai data lake gestiti conAWS 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 AWS Lake Formation Amazon EMR di Amazon Studio Classic. SageMaker Questo post del blog ti aiuta a configurare un ambiente demo in cui provare a utilizzare ruoli di runtime preconfigurati per connetterti ai cluster Amazon EMR.

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 modi diversi per assegnare il cluster Amazon EMR, i dati e persino il ruolo di esecuzione di runtime Amazon EMR agli account Studio e dati:

Scenari tra account supportati dall'autenticazione dei ruoli IAM in fase di esecuzione.

Nell’opzione 1, il cluster Amazon EMR e il ruolo di esecuzione di runtime di Amazon EMR si trovano in un account dati separato rispetto all’account Studio. Definisci una policy di autorizzazione separata del ruolo di accesso (anche noto come Assumable role) Amazon EMR che concede l’autorizzazione al tuo ruolo di esecuzione di Studio o Studio Classic per assumere il ruolo di accesso di Amazon EMR. Il ruolo di accesso di Amazon EMR chiama quindi l’API Amazon EMR GetClusterSessionCredentials per conto del tuo ruolo di esecuzione di Studio o Studio Classic, consentendoti di accedere al cluster.

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

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

Configurare Studio per utilizzare i ruoli IAM in fase di esecuzione

Per stabilire l'autenticazione dei ruoli di runtime per i tuoi cluster Amazon EMR, configura le policy IAM, i miglioramenti della rete e dell'usabilità richiesti. La configurazione varia a seconda che tu debba gestire o meno ambienti multi-account, ad esempio nel caso in cui i cluster Amazon EMR, il ruolo di esecuzione di runtime di Amazon EMR o entrambi risiedano al di fuori del tuo account Studio. La sezione seguente illustra le policy da installare, la configurazione della rete per consentire il traffico multi-account e il file di configurazione locale da configurare per automatizzare la connessione Amazon EMR.

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

Se il cluster Amazon EMR risiede nel tuo account Studio, completa la procedura seguente per aggiungere le autorizzazioni necessarie alla policy di esecuzione di Studio:

  1. Aggiungi la policy IAM richiesta per connetterti ai cluster Amazon EMR. Per informazioni dettagliate, vedi Configurazione della visualizzazione dei cluster Amazon EMR.

  2. Concedi l’autorizzazione per chiamare l’API Amazon EMR GetClusterSessionCredentials quando passi uno o più dei ruoli di esecuzione di runtime Amazon EMR consentiti specificati nella policy.

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

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

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

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

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "*", "Condition": { "ArnLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::111122223333:role/emr-execution-role-ml-modeling*", "arn:aws:iam::111122223333:role/emr-execution-role-ml-training*" ]}, "StringLike":{ "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 cluster Amazon EMR non è nel tuo account Studio, consenti al ruolo di esecuzione SageMaker AI di assumere il ruolo di accesso Amazon EMR tra 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 esecuzione SageMaker AI in modo che il ruolo di esecuzione possa assumere il ruolo di accesso di Amazon EMR. Di seguito è riportato un esempio di policy:

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

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

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "arn:aws:elasticmapreduce:us-east-1:111122223333:cluster/cluster-id", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::111122223333: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 una procedura guidata, consulta Configurazione di Configurazione dell’accesso di rete per il cluster Amazon EMR. Le fasi in questa sezione ti aiutano a completare le attività seguenti:

    1. Esegui il VPC in peering tra il tuo account Studio e il tuo account Amazon EMR per stabilire una connessione.

    2. Aggiungi manualmente i percorsi alle tabelle di routing delle sottoreti private in entrambi gli account. Questo consente la creazione e la connessione di cluster Amazon EMR 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 primario Amazon EMR per consentire il traffico TCP in entrata dal gruppo di sicurezza dell'istanza Studio.

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

Configura l'accesso a Lake Formation

Quando accedi ai dati dai data lake gestiti daAWS 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 Integrare Amazon EMR con AWS Lake Formation.

Precaricamento dei ruoli di esecuzione in Studio o Studio Classic

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

Preload runtime roles in JupyterLab using the SageMaker AI console

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

  1. Vai alla console SageMaker AI 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 esecuzione SageMaker AI 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 tuo profilo utente: nella pagina dei dettagli del dominio, scegli la scheda Profili utente, seleziona il profilo utente che utilizza il ruolo di esecuzione SageMaker AI 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 runtime EMR Serverless.

  4. Seleziona Invia.

Alla successiva connessione a un server Amazon EMR, 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 esecuzione SageMaker AI di cui hai aggiornato le autorizzazioni, esegui il seguente comando in un terminale. Sostituisci domainID, user-profile-name, emr-accountID e EMRServiceRole con i valori corretti. Questo frammento di codice aggiorna le impostazioni di un profilo utente (client.update_user_profile) all'interno di un dominio SageMaker AI in un caso d'uso tra account. In particolare, imposta i ruoli di servizio per Amazon EMR. Consente inoltre all' JupyterLab applicazione di assumere un ruolo IAM particolare (AssumableRoleoAccessRole) per l'esecuzione di Amazon EMR all'interno dell'account Amazon EMR.

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

import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_user_profile( DomainId="domainID", UserProfileName="user-profile-name", UserSettings={ '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 l'ARN di AccessRole (AssumableRole) al tuo ruolo di esecuzione dell' SageMaker IA. L’ARN viene caricato dal server Jupyter all’avvio. Il ruolo di esecuzione utilizzato da Studio presuppone che questo ruolo multi-account rilevi e connetta i cluster Amazon EMR nell’account che concede l’attendibilità.

Puoi specificare queste informazioni utilizzando gli script di configurazione del ciclo di vita (LCC). Puoi collegare lo script LCC al tuo dominio o a un profilo utente specifico. Lo script LCC che utilizzate deve essere una JupyterServer configurazione. Per ulteriori informazioni su come creare uno script LCC, consulta Utilizzo delle configurazioni del ciclo di vita con Studio Classic.

Di seguito è riportato un esempio di script LCC. Per modificare lo script, sostituisci AssumableRole e emr-account con i rispettivi valori. Il limite al numero di account è cinque.

Il frammento seguente è un esempio di script bash LCC 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 accesso Amazon EMR che possono utilizzare il cluster. Nella seguente policy di esempio, 123456789012 è l'ID dell'account del cluster Amazon EMR e 212121212121 e 434343434343 sono i ruoli di accesso Amazon EMR consentiti. ARNs

#!/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