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

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

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

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

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 dieser Funktion 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 Amazon EMR-Runtime-Ausführungsrolle zwischen 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 Amazon EMR-Runtime-Ausführungsrolle in einem vom Studio-Konto getrennten Datenkonto. Sie definieren eine separate Berechtigungsrichtlinie für die Amazon EMR-Zugriffsrolle (auch bezeichnetAssumable role), die der 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 im Namen Ihrer Studio- oder Studio Classic-Ausführungsrolle GetClusterSessionCredentials auf, sodass Sie Zugriff auf den Cluster erhalten.

In Option 2 befinden sich Ihr Amazon EMR-Cluster und Ihre Amazon EMR-Runtime-Ausführungsrolle 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 S3-Bucket zuzugreifen, erteilen Sie der Amazon EMR-Runtime-Ausführungsrolle kontoübergreifende Amazon S3 S3-Bucket-Zugriffsberechtigungen — Sie gewähren diese Berechtigungen im Rahmen Ihrer Amazon S3 S3-Bucket-Richtlinie.

In Option 3 befinden sich Ihre Amazon EMR-Cluster in Ihrem Studio-Konto und die Amazon EMR-Runtime-Ausführungsrolle befindet sich im Datenkonto. Ihre Studio- oder Studio Classic-Ausführungsrolle ist berechtigt, die Amazon EMR-API zu verwendenGetClusterSessionCredentials, um Zugriff auf Ihren Cluster zu erhalten. Fügen Sie die Amazon EMR-Runtime-Ausführungsrolle zur Konfigurations-JSON für die 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 Laden Sie Ihre Ausführungsrollen vorab in Studio oder Studio Classic.

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 Amazon EMR-Runtime-Ausführungsrolle oder beide 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 einrichten müssen, um Ihre Amazon EMR-Verbindung zu automatisieren.

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

  2. Erteilen Sie die Erlaubnis zum Aufrufen der Amazon EMR-APIGetClusterSessionCredentials, wenn Sie eine oder mehrere zulässige Amazon EMR-Runtime-Ausführungsrollen übergeben, 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 Laden Sie Ihre Ausführungsrollen vorab in Studio oder Studio Classic.

Die folgende Beispielrichtlinie ermöglicht das Aufrufen GetClusterSessionCredentials von Amazon EMR-Runtime-Ausführungsrollen, die zu den Modellierungs- und Trainingsgruppen gehören. 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": { "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*" ] } } } ] }

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 KI-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 SageMaker KI-Ausführungsrollen, 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::emr_account_id:role/emr-access-role-name" } ] }
  2. Erstellen Sie die Vertrauensrichtlinie, um anzugeben, welchen Studio-Konten 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 Amazon EMR-Runtime-Ausführungsrolle 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 Amazon EMR-Runtime-Ausführungsrollen 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": "", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::emr_account_id: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. Eine Anleitung mit Anleitung finden Sie unter Netzwerkzugriff für Ihren Amazon EMR-Cluster konfigurierenEinrichten von. Die Schritte in diesem Abschnitt helfen Ihnen bei der Ausfü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 Laden Sie Ihre Ausführungsrollen vorab in Studio oder Studio Classic.

Lake Formation-Zugriff konfigurieren

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

Laden Sie Ihre Ausführungsrollen vorab in Studio oder Studio Classic

Sie können Ihre IAM-Runtime-Rollen vorab laden, sodass Sie die Rolle auswählen können, die Sie verwenden möchten, wenn Sie sich mit Ihrem Amazon EMR-Cluster verbinden. 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. Navigieren Sie zur SageMaker AI-Konsole unter https://console.aws.amazon.com/sagemaker/.

  2. Wählen Sie im linken Navigationsbereich die Domäne aus und wählen Sie dann die Domäne mit der SageMaker AI-Ausführungsrolle aus, deren Berechtigungen Sie aktualisiert haben.

    • So fügen Sie Ihrer Domain Ihre Laufzeit (und Zugriffsrollen für kontoübergreifende Anwendungen) hinzu: Navigieren Sie auf der Seite mit den Domain-Details auf der Registerkarte App-Konfigurationen zu dem JupyterLabAbschnitt.

    • So fügen Sie Ihre Laufzeit (und Zugriffsrollen für kontoübergreifende Anwendungsfälle) zu Ihrem Benutzerprofil hinzu: Wählen Sie auf der Seite mit den Domänendetails den Tab Benutzerprofile aus und wählen Sie das Benutzerprofil mit der SageMaker AI-Ausführungsrolle aus, deren Berechtigungen Sie aktualisiert haben. Navigieren Sie auf der Registerkarte App-Konfigurationen zum JupyterLabAbschnitt.

  3. Wählen Sie Bearbeiten und fügen Sie die Rollen ARNs Ihrer Zugriffsrolle (angenommene Rolle) und EMR Serverless Runtime Execution 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 Drop-down-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 Sie die domainIDuser-profile-name,emr-accountID, und EMRServiceRole durch die entsprechenden Werte. Dieser Codeausschnitt aktualisiert die Einstellungen eines Benutzerprofils (client.update_user_profile) innerhalb einer SageMaker KI-Domäne 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.

Verwenden Sie diese Option auch, 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 KI-Ausführungsrolle an. Der ARN wird beim Start vom Jupyter-Server geladen. Die von Studio verwendete Ausführungsrolle übernimmt diese kontoübergreifende Rolle, um Amazon EMR-Cluster im vertrauenswürdigen Konto zu erkennen und eine Verbindung zu ihnen herzustellen.

Sie können diese Informationen mithilfe von Lifecycle Configuration (LCC) -Skripts angeben. Sie können das LCC an Ihre Domain oder ein bestimmtes Benutzerprofil anhängen. Das von Ihnen verwendete LCC-Skript muss eine JupyterServer Konfiguration sein. Weitere Informationen zum Erstellen eines LCC-Skripts finden Sie unter Verwenden von Lebenszykluskonfigurationen mit Studio Classic.

Nachfolgend sehen Sie ein LCC-Beispielskript. Um das Skript zu ändern, ersetzen Sie AssumableRole und emr-account durch die entsprechenden Werte. Die Anzahl der Cros-Accounts ist auf fünf begrenzt.

Der folgende Ausschnitt 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 Amazon EMR-Cluster-Konto-ID, und 212121212121 und 434343434343 sind die für die erlaubten Amazon EMR-Zugriffsrollen. 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