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 tuoi notebook Studio o Studio Classic, puoi sfogliare visivamente un elenco di ruoli IAM, 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 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 del runtime di Amazon EMR tra Studio e gli account di 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 del runtime di Amazon EMR si trovano in un account dati separato dall'account Studio. Definisci una politica di autorizzazione separata per il ruolo di accesso di Amazon EMR (noto anche comeAssumable role) che concede l'autorizzazione al ruolo di esecuzione di Studio o Studio Classic per assumere il ruolo di accesso Amazon EMR. Il ruolo di accesso Amazon EMR chiama quindi l'API Amazon EMR per GetClusterSessionCredentials conto del tuo ruolo di esecuzione Studio o Studio Classic, consentendoti di accedere al cluster.

Nell'opzione 2, il cluster Amazon EMR e il ruolo di esecuzione del 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 del runtime di Amazon EMR 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, i cluster Amazon EMR si trovano nel tuo account Studio e il ruolo di esecuzione del runtime di Amazon EMR si trova nell'account dati. Il tuo ruolo di esecuzione di Studio o Studio Classic è autorizzato a utilizzare l'API Amazon EMR GetClusterSessionCredentials per accedere al tuo cluster. Aggiungi il ruolo di esecuzione del runtime di Amazon EMR nella configurazione del ruolo di esecuzione JSON. 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 Precarica i tuoi 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 dipende dal fatto che tu gestisca eventuali accordi tra account se i cluster Amazon EMR, il ruolo di esecuzione del runtime di Amazon EMR 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 Amazon EMR.

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

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

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

  2. Concedi l'autorizzazione a chiamare l'API Amazon EMR GetClusterSessionCredentials quando passi uno o più ruoli di esecuzione runtime di 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 Precarica i tuoi ruoli di esecuzione in Studio o Studio Classic.

La seguente policy di esempio consente di chiamare i ruoli di esecuzione del runtime di Amazon EMR appartenenti ai gruppi di modellazione e formazione. GetClusterSessionCredentials Inoltre, l'assicurato può accedere ai cluster Amazon EMR contrassegnati con le stringhe modeling o 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 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:

    { "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 accesso di Amazon EMR. 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 policy di autorizzazione del ruolo di accesso di Amazon EMR, che concede al ruolo di esecuzione in fase di esecuzione 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 del runtime di Amazon EMR 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 cluster Amazon EMRConfigurare il. I passaggi di questa sezione consentono di completare le seguenti attività:

    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. Ciò 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 tuo cluster Amazon EMR. Per ulteriori informazioni su come precaricare i ruoli IAM, 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 collegate al tuo ruolo di runtime. Per configurare l'autorizzazione per l'accesso a Lake Formation, consulta Integrare Amazon EMR con AWS Lake Formation.

Precarica i tuoi 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 tuo 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. Scegli Invia.

La prossima volta che ti connetti 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. SostituiscidomainID, user-profile-nameemr-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, 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_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 il ruolo tra account diversi per rilevare e connettersi ai cluster Amazon EMR nell'account affidabile.

Puoi specificare queste informazioni utilizzando gli script Lifecycle Configuration (LCC). Puoi collegare la scheda LCC al tuo dominio o a un profilo utente specifico. Lo script LCC utilizzato deve essere una JupyterServer configurazione. Per ulteriori informazioni su come creare uno script LCC, consulta Utilizzare le 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 numero di account incrociati è limitato a cinque.

Il seguente frammento è 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 di 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