Konfigurieren Sie IAM-Laufzeitrollen für den Amazon EMR-Clusterzugriff in Studio - Amazon SageMaker AI

Konfigurieren Sie IAM-Laufzeitrollen für den Amazon EMR-Clusterzugriff in Studio

Wenn Sie von Ihren Studio- oder Studio-Classic-Notebook aus eine Verbindung zu einem Amazon-EMR-Cluster herstellen, können Sie visuell eine Liste von IAM-Rollen, auch Laufzeit-Rollen genannt, durchsuchen und spontan eine auswählen. Anschließend greifen alle Ihre Apache Spark-, Apache Hive- oder Presto-Aufträge, die von Ihrem Notebook aus erstellt wurden, nur auf die Daten und Ressourcen zu, die gemäß den mit der Laufzeit-Rolle verknüpften Richtlinien zulässig sind. Wenn auf Daten aus Data Lakes zugegriffen wird, die mit AWS Lake Formation verwaltet werden, können Sie außerdem den Zugriff auf Tabellen- und Spaltenebene mithilfe von Richtlinien erzwingen, die der Laufzeit-Rolle zugeordnet sind.

Mit dieser Funktion können Sie und Ihre Teamkollegen eine Verbindung zu demselben Cluster herstellen und dabei jeweils eine Laufzeit-Rolle verwenden, deren Umfang über Berechtigungen verfügt, die Ihrer individuellen Zugriffsebene auf Daten entsprechen. Ihre Sitzungen sind auf dem gemeinsam genutzten Cluster auch voneinander isoliert.

Informationen zum Ausprobieren dieses neuen Features mit Studio Classic finden Sie unter Anwenden detaillierter Datenzugriffskontrollen mit AWS Lake Formation und Amazon EMR von Amazon SageMaker Studio Classic . Dieser Blogbeitrag hilft Ihnen beim Einrichten einer Demo-Umgebung, in der Sie versuchen können, mithilfe vorkonfigurierter Laufzeit-Rollen eine Verbindung zu Amazon EMR-Clustern herzustellen.

Voraussetzungen

Bevor Sie beginnen, sollten Sie sicherstellen, dass Sie die folgenden Voraussetzungen erfüllen:

Kontoübergreifende Verbindungsszenarien

Die Laufzeit-Rollenauthentifizierung unterstützt eine Vielzahl von kontoübergreifenden Verbindungsszenarien, wenn sich Ihre Daten außerhalb Ihres Studio-Kontos befinden. Die folgende Abbildung zeigt drei verschiedene Möglichkeiten, wie Sie Ihren Amazon-EMR-Cluster, Ihre Daten und sogar Ihre Laufzeit-Ausführungsrolle von Amazon EMR Ihren Studio- und Datenkonten zuweisen können:

Sehen Sie sich kontenübergreifende Szenarien an, die von Laufzeit-IAM-Rollen unterstützt werden.

In Option 1 befinden sich Ihr Amazon-EMR-Cluster und Ihre Laufzeit-Ausführungsrolle von Amazon EMR in einem vom Studio-Konto getrennten Datenkonto. Sie definieren eine separate Autorisierungsrichtlinie für Amazon-EMR-Zugriffsrollen (auch bezeichnet als Assumable role) , die Ihrer Studio- oder-Studio-Classic-Ausführungsrolle die Erlaubnis erteilt, die Amazon-EMR-Zugriffsrolle zu übernehmen. Die Amazon-EMR-Zugriffsrolle ruft dann die Amazon-EMR-API GetClusterSessionCredentials im Namen Ihrer Studio- oder Studio Classic-Ausführungsrolle auf, sodass Sie Zugriff auf den Cluster erhalten.

In Option 2 befinden sich Ihr Amazon-EMR-Cluster und Ihre Laufzeit-Ausführungsrolle von Amazon EMR in Ihrem Studio-Konto. Ihre Studio-Ausführungsrolle ist berechtigt, die Amazon EMR-API GetClusterSessionCredentials zu verwenden, um Zugriff auf Ihren Cluster zu erhalten. Um auf den Amazon-S3-Bucket zuzugreifen, erteilen Sie der Laufzeit-Ausführungsrolle von Amazon EMR kontoübergreifende Zugriffsberechtigungen von Amazon S3 Bucket. Sie gewähren diese Berechtigungen im Rahmen Ihrer Bucket-Richtlinie von Amazon S3.

In Option 3 befinden sich Ihre Amazon-EMR-Cluster in Ihrem Studio-Konto und die Laufzeit-Ausführungsrolle von Amazon EMR in Ihrem Datenkonto. Ihre Studio- oder Studio-Classic-Ausführungsrolle ist berechtigt, die Amazon-EMR-API GetClusterSessionCredentials zu verwenden, um Zugriff auf Ihren Cluster zu erhalten. Fügen Sie die Laufzeit-Ausführungsrolle von Amazon EMR zur Konfigurations-JSON der Ausführungsrolle hinzu. Anschließend können Sie die Rolle in der Benutzeroberfläche auswählen, wenn Sie Ihren Cluster auswählen. Einzelheiten zum Einrichten der JSON-Datei für die Konfiguration Ihrer Ausführungsrolle finden Sie unter Herunterladen Ihrer Ausführungsrollen in Studio oder Studio im Vorfeld.

Richten Sie Studio für die Verwendung von Laufzeit-IAM-Rollen ein

Um die Laufzeit-Rollenauthentifizierung für Ihre Amazon EMR-Cluster einzurichten, konfigurieren Sie die erforderlichen IAM-Richtlinien, Netzwerk- und Benutzerfreundlichkeitsverbesserungen. Ihre Einrichtung hängt davon ab, ob Sie kontenübergreifende Vereinbarungen treffen, wenn sich Ihre Amazon-EMR-Cluster, Ihre Laufzeit-Ausführungsrolle von Amazon EMR oder beides außerhalb Ihres Studio-Kontos befinden. Der folgende Abschnitt führt Sie durch die zu installierenden Richtlinien, die Konfiguration des Netzwerks, um den Datenverkehr zwischen kontenübergreifenden Konten zuzulassen, und die lokale Konfigurationsdatei, die Sie zur Automatisierung Ihrer Amazon-EMR-Verbindung einrichten müssen.

Konfigurieren Sie die Laufzeit-Rollenauthentifizierung, wenn sich Ihr Amazon EMR-Cluster und Studio im selben Konto befinden

Wenn sich Ihr Amazon EMR-Cluster in Ihrem Studio-Konto befindet, führen Sie die folgenden Schritte aus, um Ihrer Studio-Ausführungsrichtlinie die erforderlichen Berechtigungen hinzuzufügen:

  1. Fügen Sie die erforderliche IAM-Richtlinie hinzu, um eine Verbindung zu Amazon EMR-Clustern herzustellen. Details hierzu finden Sie unter Amazon-EMR-Cluster konfigurieren.

  2. Erteilen Sie die Erlaubnis zum Aufrufen der Amazon-EMR-API GetClusterSessionCredentials, wenn Sie eine oder mehrere zulässige Laufzeit-Ausführungsrollen von Amazon EMR bestehen, die in der Richtlinie angegeben sind.

  3. (Optional) Erteilen Sie die Erlaubnis, IAM-Rollen zu übergeben, die beliebigen benutzerdefinierten Benennungskonventionen entsprechen.

  4. (Optional) Erteilen Sie die Berechtigung zum Zugriff auf Amazon EMR-Cluster, die mit bestimmten benutzerdefinierten Strings gekennzeichnet sind.

  5. Laden Sie Ihre IAM-Rollen vorab herunter, damit Sie die Rolle auswählen können, die Sie verwenden möchten, wenn Sie eine Verbindung zu Ihrem Amazon EMR-Cluster herstellen. Weitere Informationen über das Vorladen Ihrer IAM-Rollen finden Sie unter Herunterladen Ihrer Ausführungsrollen in Studio oder Studio im Vorfeld.

Die folgende Beispielrichtlinie ermöglicht Laufzeit-Ausführungsrollen von Amazon EMR, die zu den Modellierungs- und Trainingsgruppen gehören, das Aufrufen von GetClusterSessionCredentials. Darüber hinaus kann der Versicherungsnehmer auf Amazon EMR-Cluster zugreifen, die mit den Strings modeling oder training gekennzeichnet sind.

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*" ] } } } ] }

Konfigurieren Sie die Laufzeit-Rollenauthentifizierung, wenn sich Ihr Cluster und Studio in verschiedenen Konten befinden

Wenn sich Ihr Amazon-EMR-Cluster nicht in Ihrem Studio-Konto befindet, erlauben Sie Ihrer SageMaker-AI-Ausführungsrolle, die kontoübergreifende Amazon-EMR-Zugriffsrolle zu übernehmen, damit Sie eine Verbindung zum Cluster herstellen können. Führen Sie die folgenden Schritte aus, um Ihre Kontoübergreifende Konfiguration einzurichten:

  1. Erstellen Sie Ihre Berechtigungsrichtlinie für die SageMaker-AI-Ausführungsrolle, sodass die Ausführungsrolle die Amazon-EMR-Zugriffsrolle übernehmen kann. Folgendes ist eine Beispielrichtlinie:

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAssumeCrossAccountEMRAccessRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/emr-access-role-name" } ] }
  2. Erstellen Sie die Vertrauensrichtlinie, um anzugeben, welchen Studio-Konto-IDs vertraut wird, um die Amazon EMR-Zugriffsrolle zu übernehmen. Folgendes ist eine Beispielrichtlinie:

    { "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. Erstellen Sie die Autorisierungsrichtlinie für Amazon-EMR-Zugriffsrollen, die der Laufzeit-Ausführungsrolle von Amazon EMR die erforderlichen Berechtigungen für die Ausführung der vorgesehenen Aufgaben auf dem Cluster gewährt. Konfigurieren Sie die Amazon-EMR-Zugriffsrolle so, dass sie die API GetClusterSessionCredentials mit den Laufzeit-Ausführungsrollen von Amazon EMR aufruft, die in der Zugriffsrollenberechtigungsrichtlinie angegeben sind. Folgendes ist eine Beispielrichtlinie:

    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. Richten Sie das kontenübergreifende Netzwerk so ein, dass der Datenverkehr zwischen Ihren Konten hin und her fließen kann. Anweisungen finden Sie unter Konfigurieren Sie den Netzwerkzugriff für Ihren Amazon-EMR-Cluster Einrichten von . Die Schritte in diesem Abschnitt helfen Ihnen bei der Durchführung der folgenden Aufgaben:

    1. VPC-Peer zwischen Ihrem Studio-Konto und Ihrem Amazon EMR-Konto, um eine Verbindung herzustellen.

    2. Fügen Sie den Routing-Tabellen für private Subnetze in beiden Konten manuell Routen hinzu. Dies ermöglicht die Erstellung und Verbindung von Amazon-EMR-Clustern vom Studio-Konto zum privaten Subnetz des Remote-Kontos.

    3. Richten Sie die mit Ihrer Studio-Domain verbundene Sicherheitsgruppe ein, um ausgehenden Datenverkehr zuzulassen, und die Sicherheitsgruppe des Amazon EMR-Primärknotens, um eingehenden TCP-Verkehr von der Studio-Instance-Sicherheitsgruppe zuzulassen.

  5. Laden Sie Ihre IAM-Runtime-Rollen vorab herunter, sodass Sie die Rolle auswählen können, die Sie verwenden möchten, wenn Sie eine Verbindung zu Ihrem Amazon EMR-Cluster herstellen. Weitere Informationen über das Vorladen Ihrer IAM-Rollen finden Sie unter Herunterladen Ihrer Ausführungsrollen in Studio oder Studio im Vorfeld.

Lake Formation-Zugriff konfigurieren

Wenn auf Daten aus Data Lakes zugegriffen wird, die mit AWS Lake Formation verwaltet werden, können Sie außerdem den Zugriff auf Tabellen- und Spaltenebene mithilfe von Richtlinien erzwingen, die der Laufzeit-Rolle zugeordnet sind. Informationen zur Konfiguration von Lake Formation-Zugriff finden Sie unter Integrieren von Amazon EMR mit AWS Lake Formation.

Herunterladen Ihrer Ausführungsrollen in Studio oder Studio im Vorfeld

Sie können Ihre IAM-Runtime-Rollen vorab laden, sodass Sie die Rolle auswählen können, die Sie verwenden möchten, wenn Sie eine Verbindung zu Ihrem Amazon EMR-Cluster herstellen. Benutzer von JupyterLab in Studio können die SageMaker-AI-Konsole oder das bereitgestellte Skript verwenden.

Preload runtime roles in JupyterLab using the SageMaker AI console

So verknüpfen Sie Ihre Runtime-Rollen mithilfe der SageMaker-AI-Konsole mit Ihrem Benutzerprofil oder Ihrer Domain:

  1. Öffnen Sie die SageMaker-AI-Konsole unter https://console.aws.amazon.com/sagemaker/.

  2. Wählen Sie im linken Navigationsbereich Domain und dann mithilfe der SageMaker AI-Ausführungsrolle, deren Berechtigungen Sie aktualisiert haben.

    • So fügen Sie Ihre übertragbaren Rollen (Zugriffsrollen) zu Ihrer Domain hinzu: Navigieren Sie auf der Seite mit den Domaindetails auf der Registerkarte App-Konfigurationen zum Abschnitt JupyterLab.

    • So fügen Sie Ihre Laufzeitrollen (und Zugriffsrollen für die kontoübergreifende Verwendung) zu Ihrem Benutzerprofil hinzu: Wählen Sie auf der Seite mit den Domaindetails die Registerkarte Benutzerprofile und anschließend das Benutzerprofil mit der SageMaker-AI-Ausführungsrolle aus, deren Berechtigungen Sie aktualisiert haben. Navigieren Sie auf der Registerkarte App-Konfigurationen zum Abschnitt JupyterLab.

  3. Wählen Sie Bearbeiten und fügen Sie die ARNs Ihrer Zugriffsrolle (angenommene Rolle) und der EMR-Serverless-Runtime-Ausführungsrollen hinzu.

  4. Wählen Sie Absenden aus.

Wenn Sie das nächste Mal eine Verbindung zu einem Amazon EMR-Server herstellen, sollten die Runtime-Rollen in einem Dropdown-Menü zur Auswahl angezeigt werden.

Preload runtime roles in JupyterLab using a Python script

Führen Sie in einer JupyterLab-Anwendung, die von einem Space aus gestartet wurde und die SageMaker AI-Ausführungsrolle verwendet, deren Berechtigungen Sie aktualisiert haben, den folgenden Befehl in einem Terminal aus. Ersetzen SiedomainID,, und durch die user-profile-name entsprechenden emr-accountID Werte. EMRServiceRole Dieser Codeausschnitt aktualisiert die Einstellungen eines Benutzerprofils (client.update_user_profile) innerhalb einer SageMaker AI-Domain in einem kontoübergreifenden Anwendungsfall. Insbesondere werden die Servicerollen für Amazon EMR festgelegt. Außerdem kann die JupyterLab-Anwendung eine bestimmte IAM-Rolle (AssumableRoleoderAccessRole) für die Ausführung von Amazon EMR innerhalb des Amazon EMR-Kontos übernehmen.

Alternativ können Sie diese Option verwenden, client.update_domain um die Domain-Einstellungen zu aktualisieren, falls Ihr Space eine auf Domainebene festgelegte Ausführungsrolle verwendet.

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

Geben Sie den ARN von AccessRole (AssumableRole) für Ihre SageMaker AI-Ausführungsrolle ein. Der ARN wird beim Start des Jupyter-Servers geladen. Die Ausführungsrolle von Studio übernimmt diese kontoübergreifende Rolle, um Amazon-EMR-Cluster im vertrauenden Konto aufzufinden und eine Verbindung zu ihnen herzustellen.

Sie können diese Informationen mithilfe von Lifecycle Configuration (LCC) -Skripten angeben. Sie können das LCC an Ihre Domain oder ein bestimmtes Benutzerprofil anfügen. Das von Ihnen verwendete LCC-Skript muss eine JupyterServer-Konfiguration sein. Weitere Informationen dazu, wie ein LCC-Skript erstellt wird, finden Sie unter Verwenden der Lebenszykluskonfigurationen mit Studio Classic.

Nachfolgend sehen Sie ein LCC-Beispielskript. Um das Skript zu ändern, ersetzen Sie AssumableRole es emr-account durch die entsprechenden Werte. Die Anzahl der Konten für die kontoübergreifende Nutzung ist auf fünf begrenzt.

Das folgende Snippet ist ein Beispiel für ein LCC-Bash-Skript, das Sie anwenden können, wenn sich Ihre Studio-Classic-Anwendung und Ihr Cluster im selben Konto befinden:

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

Wenn sich Ihre Studio-Classic-Anwendung und Ihre Cluster in unterschiedlichen Konten befinden, geben Sie die Amazon-EMR-Zugriffsrollen an, die den Cluster verwenden können. In der folgenden Beispielrichtlinie ist 123456789012 die ID des Amazon-EMR-Clusterkontos und 212121212121 und 434343434343 sind die ARNs für die zulässigen Amazon-EMR-Zugriffsrollen.

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