EMRSchritte zu Runtime-Rollen für Amazon - Amazon EMR

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.

EMRSchritte zu Runtime-Rollen für Amazon

Eine Runtime-Rolle ist eine AWS Identity and Access Management (IAM) Rolle, die Sie angeben können, wenn Sie einen Job oder eine Anfrage an einen EMR Amazon-Cluster senden. Der Job oder die Abfrage, die Sie an Ihren EMR Amazon-Cluster senden, verwendet die Runtime-Rolle für den Zugriff AWS Ressourcen, wie Objekte in Amazon S3. Sie können Runtime-Rollen bei Amazon EMR für Spark- und Hive-Jobs angeben.

Sie können auch Laufzeitrollen angeben, wenn Sie eine Verbindung zu EMR Amazon-Clustern herstellen in Amazon SageMaker und wenn Sie einen Amazon EMR Studio Workspace an einen EMR Cluster anhängen. Weitere Informationen finden Sie unter Von Studio aus eine Connect zu einem EMR Amazon-Cluster herstellen undFühren Sie einen EMR Studio-Workspace mit einer Runtime-Rolle aus.

Zuvor führten EMR Amazon-Cluster EMR Amazon-Jobs oder -Abfragen mit Berechtigungen aus, die auf der IAM Richtlinie basierten, die mit dem Instance-Profil verknüpft war, das Sie zum Starten des Clusters verwendet haben. Das bedeutete, dass die Richtlinien die Vereinigung aller Berechtigungen für alle Jobs und Abfragen enthalten mussten, die auf einem EMR Amazon-Cluster ausgeführt wurden. Mit Runtime-Rollen können Sie jetzt die Zugriffskontrolle für jeden Job oder jede Abfrage einzeln verwalten, anstatt das EMR Amazon-Instance-Profil des Clusters gemeinsam zu nutzen.

Auf EMR Amazon-Clustern mit Runtime-Rollen können Sie sich auch bewerben AWS Lake Formation basierte Zugriffskontrolle für Spark-, Hive- und Presto-Jobs und Abfragen für Ihre Data Lakes. Um mehr über die Integration zu erfahren AWS Lake Formation, finden Sie unter Integrieren Sie Amazon EMR mit AWS Lake Formation.

Anmerkung

Wenn Sie eine Runtime-Rolle für einen EMR Amazon-Schritt angeben, können die Jobs oder Abfragen, die Sie einreichen, nur auf AWS Ressourcen, die die mit der Runtime-Rolle verknüpften Richtlinien zulassen. Diese Jobs und Abfragen können nicht auf den Instanz-Metadatendienst auf den EC2 Instanzen des Clusters zugreifen. Sie können auch nicht das EC2 Instanzprofil des Clusters verwenden, um auf AWS Ressourcen schätzen.

Voraussetzungen für den Start eines EMR Amazon-Clusters mit einer Runtime-Rolle

Schritt 1: Sicherheitskonfigurationen in Amazon einrichten EMR

Verwenden Sie die folgende JSON Struktur, um eine Sicherheitskonfiguration auf dem zu erstellen AWS Command Line Interface (AWS CLI) und setzen Sie EnableApplicationScopedIAMRole auftrue. Weitere Informationen zu den Sicherheitskonfigurationen finden Sie unter Sicherheitskonfigurationen zum Einrichten der Cluster-Sicherheit verwenden.

{ "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true } } }

Wir empfehlen, in der Sicherheitskonfiguration immer die Verschlüsselungsoptionen bei der Übertragung zu aktivieren, sodass Daten, die über das Internet übertragen werden, verschlüsselt und nicht im Klartext übertragen werden. Sie können diese Optionen überspringen, wenn Sie keine Verbindung zu EMR Amazon-Clustern mit Runtime-Rollen aus SageMaker Runtime Studio oder EMR Studio herstellen möchten. Informationen zur Konfiguration der Datenverschlüsselung finden Sie unter Datenverschlüsselung konfigurieren.

Alternativ können Sie eine Sicherheitskonfiguration mit benutzerdefinierten Einstellungen mit dem AWS Management Console.

Schritt 2: Richten Sie ein EC2 Instance-Profil für den EMR Amazon-Cluster ein

EMRAmazon-Cluster verwenden die EC2 Amazon-Instance-Profilrolle, um die Runtime-Rollen zu übernehmen. Um Runtime-Rollen mit EMR Amazon-Schritten zu verwenden, fügen Sie der IAM Rolle, die Sie als Instance-Profilrolle verwenden möchten, die folgenden Richtlinien hinzu. Informationen zum Hinzufügen von Richtlinien zu einer IAM Rolle oder zum Bearbeiten einer bestehenden Inline- oder verwalteten Richtlinie finden Sie unter Hinzufügen und Entfernen von IAM Identitätsberechtigungen.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowRuntimeRoleUsage", "Effect":"Allow", "Action":[ "sts:AssumeRole", "sts:TagSession" ], "Resource":[ <runtime-role-ARN> ] } ] }

Schritt 3: Eine Vertrauensrichtlinie einrichten

Legen Sie für jede IAM Rolle, die Sie als Runtime-Rolle verwenden möchten, die folgende Vertrauensrichtlinie fest und EMR_EC2_DefaultRole ersetzen Sie sie durch Ihre Instanzprofilrolle. Informationen zum Ändern der Vertrauensrichtlinie einer IAM Rolle finden Sie unter Vertrauensrichtlinie für Rollen ändern.

{ "Sid":"AllowAssumeRole", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::<AWS_ACCOUNT_ID>:role/EMR_EC2_DefaultRole" }, "Action":"sts:AssumeRole" }

Starten Sie einen EMR Amazon-Cluster mit rollenbasierter Zugriffskontrolle

Nachdem Sie Ihre Konfigurationen eingerichtet haben, können Sie einen EMR Amazon-Cluster mit der Sicherheitskonfiguration von startenSchritt 1: Sicherheitskonfigurationen in Amazon einrichten EMR. Um Runtime-Rollen mit EMR Amazon-Schritten zu verwenden, verwenden Sie Release Label emr-6.7.0 oder höher und wählen Sie Hive, Spark oder beide als Cluster-Anwendung aus. Um von SageMaker Studio aus eine Verbindung herzustellen, verwenden Sie Release emr-6.9.0 oder höher und wählen Sie Livy, Spark, Hive oder Presto als Ihre Cluster-Anwendung aus. Anweisungen zum Start Ihres Clusters finden Sie unter Angabe einer Sicherheitskonfiguration für einen Cluster.

Spark-Jobs mithilfe der EMR Amazon-Schritte einreichen

Im Folgenden finden Sie ein Beispiel für die Ausführung des in Apache Spark enthaltenen HdfsTest Beispiels. Dieser API Aufruf ist nur erfolgreich, wenn die bereitgestellte EMR Amazon-Runtime-Rolle auf die S3_LOCATION zugreifen kann.

RUNTIME_ROLE_ARN=<runtime-role-arn> S3_LOCATION=<s3-path> REGION=<aws-region> CLUSTER_ID=<cluster-id> aws emr add-steps --cluster-id $CLUSTER_ID \ --steps '[{ "Name": "Spark Example", "ActionOnFailure": "CONTINUE","HadoopJarStep": { "Jar":"command-runner.jar","Args" : ["spark-example","HdfsTest", "$S3_LOCATION"] } }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION
Anmerkung

Wir empfehlen, den SSH Zugriff auf den EMR Amazon-Cluster zu deaktivieren und nur Amazon den Zugriff auf den Cluster EMR AddJobFlowSteps API zu gewähren.

Hive-Jobs mithilfe der EMR Amazon-Schritte einreichen

Im folgenden Beispiel wird Apache Hive mit Amazon EMR Steps verwendet, um einen Job zur Ausführung der QUERY_FILE.hql Datei einzureichen. Diese Abfrage ist nur erfolgreich, wenn die angegebene Laufzeit-Rolle auf den Amazon-S3-Pfad der Abfragedatei zugreifen kann.

RUNTIME_ROLE_ARN=<runtime-role-arn> REGION=<aws-region> CLUSTER_ID=<cluster-id> aws emr add-steps --cluster-id $CLUSTER_ID \ --steps '[{ "Name": "Run hive query using command-runner.jar - simple select","ActionOnFailure":"CONTINUE","HadoopJarStep": { "Jar": "command-runner.jar","Args" :["hive - f","s3://DOC_EXAMPLE_BUCKET/QUERY_FILE.hql"] } }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION

Stellen Sie über ein SageMaker Studio-Notizbuch eine Connect zu EMR Amazon-Clustern mit Runtime-Rollen her

Sie können EMR Amazon-Runtime-Rollen auf Abfragen anwenden, die Sie in EMR Amazon-Clustern von SageMaker Studio aus ausführen. Führen Sie dazu die folgenden Schritte aus.

  1. Folgen Sie den Anweisungen unter Amazon SageMaker Studio starten, um ein SageMaker Studio zu erstellen.

  2. Starten Sie in der SageMaker Studio-Benutzeroberfläche ein Notebook mit unterstützten Kerneln. Starten Sie beispielsweise ein SparkMagic Image mit einem PySpark Kernel.

  3. Wählen Sie in SageMaker Studio einen EMR Amazon-Cluster und dann Connect aus.

  4. Wählen Sie eine Laufzeit-Rolle und dann Verbinden aus.

Dadurch wird eine SageMaker Notebook-Zelle mit magischen Befehlen erstellt, um eine Verbindung zu Ihrem EMR Amazon-Cluster mit der ausgewählten EMR Amazon-Runtime-Rolle herzustellen. In der Notebook-Zelle können Sie Abfragen mit Laufzeit-Rollen- und Lake-Formation-basierter Zugriffskontrolle eingeben und ausführen. Ein detaillierteres Beispiel finden Sie unter Anwenden detaillierter Datenzugriffskontrollen mit AWS Lake Formation und Amazon EMR von Amazon SageMaker Studio.

Steuern Sie den Zugriff auf die EMR Amazon-Runtime-Rolle

Sie können den Zugriff auf die Laufzeit-Rolle mit dem Bedingungsschlüssel elasticmapreduce:ExecutionRoleArn steuern. Die folgende Richtlinie ermöglicht es einem IAM PrinzipalCaller, eine IAM Rolle mit dem Namen oder eine beliebige IAM Rolle, die mit der Zeichenfolge beginntCallerTeamRole, als Runtime-Rolle zu verwenden.

Wichtig

Sie müssen eine auf dem elasticmapreduce:ExecutionRoleArn Kontextschlüssel basierende Bedingung erstellen, wenn Sie einem Anrufer Zugriff auf den Befehl AddJobFlowSteps oder gewähren GetClusterSessionCredentialsAPIs, wie das folgende Beispiel zeigt.

{ "Sid":"AddStepsWithSpecificExecRoleArn", "Effect":"Allow", "Action":[ "elasticmapreduce:AddJobFlowSteps" ], "Resource":"*", "Condition":{ "StringEquals":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::<AWS_ACCOUNT_ID>:role/Caller" ] }, "StringLike":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::<AWS_ACCOUNT_ID>:role/CallerTeamRole*" ] } } }

Vertrauen zwischen Runtime-Rollen und EMR Amazon-Clustern aufbauen

Amazon EMR generiert ExternalId für jede Sicherheitskonfiguration mit aktivierter Laufzeit-Rollenautorisierung eine eindeutige Kennung. Diese Autorisierung ermöglicht es jedem Benutzer, eine Reihe von Laufzeit-Rollen zu besitzen, die er auf Clustern verwenden kann, die ihm gehören. In einem Unternehmen kann beispielsweise jede Abteilung ihre externe ID verwenden, um die Vertrauensrichtlinie für ihre eigenen Laufzeit-Rollen zu aktualisieren.

Sie können die externe ID bei Amazon finden EMR DescribeSecurityConfigurationAPI, wie im folgenden Beispiel gezeigt.

aws emr describe-security-configuration --name 'iamconfig-with-lf'{"Name": "iamconfig-with-lf", "SecurityConfiguration": "{\"AuthorizationConfiguration\":{\"IAMConfiguration\":{\"EnableApplicationScopedIAMRole\ ":true,\"ApplicationScopedIAMRoleConfiguration\":{\"PropagateSourceIdentity\":true,\"Exter nalId\":\"FXH5TSACFDWUCDSR3YQE2O7ETPUSM4OBCGLYWODSCUZDNZ4Y\"}},\"Lake FormationConfiguration\":{\"AuthorizedSessionTagValue\":\"Amazon EMR\"}}}", "CreationDateTime": "2022-06-03T12:52:35.308000-07:00" }

Informationen zur Verwendung einer externen ID finden Sie unter So verwenden Sie eine externe ID, wenn Sie Zugriff auf Ihre AWS Ressourcen für Dritte.

Audit

Um die Aktionen zu überwachen und zu kontrollieren, die Endbenutzer mit IAM Rollen ausführen, können Sie die Quellidentitätsfunktion aktivieren. Weitere Informationen zur Quellenidentität finden Sie unter Überwachen und Steuern von Aktionen mit übernommenen Rollen.

Um die Quellidentität nachzuverfolgen, stellen Sie ApplicationScopedIAMRoleConfiguration/PropagateSourceIdentity in Ihrer Sicherheitskonfiguration wie folgt auf true ein.

{ "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true, "ApplicationScopedIAMRoleConfiguration":{ "PropagateSourceIdentity":true } } } }

Wenn Sie PropagateSourceIdentity diese Option festlegentrue, EMR wendet Amazon die Quellidentität aus den Anrufanmeldedaten auf eine Job- oder Abfragesitzung an, die Sie mit der Runtime-Rolle erstellen. Wenn in den Anrufanmeldedaten keine Quellidentität enthalten ist, legt Amazon die Quellidentität EMR nicht fest.

Um diese Eigenschaft zu verwenden, geben Sie wie folgt sts:SetSourceIdentity-Berechtigungen für Ihr Instance-Profil ein.

{ // PropagateSourceIdentity statement "Sid":"PropagateSourceIdentity", "Effect":"Allow", "Action":"sts:SetSourceIdentity", "Resource":[ <runtime-role-ARN> ], "Condition":{ "StringEquals":{ "sts:SourceIdentity":<source-identity> } } }

Sie müssen die AllowSetSourceIdentity-Anweisung auch zur Vertrauensrichtlinie Ihrer Laufzeit-Rollen hinzufügen.

{ // AllowSetSourceIdentity statement "Sid":"AllowSetSourceIdentity", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::<AWS_ACCOUNT_ID>:role/EMR_EC2_DefaultRole" }, "Action":[ "sts:SetSourceIdentity", "sts:AssumeRole" ], "Condition":{ "StringEquals":{ "sts:SourceIdentity":<source-identity> } } }

Weitere Überlegungen

Anmerkung

Bei der EMR Amazon-Version kann es zu zeitweiligen Ausfällen kommenemr-6.9.0, wenn Sie von SageMaker Studio aus eine Verbindung zu EMR Amazon-Clustern herstellen. Um dieses Problem zu lösen, können Sie den Patch mit einer Bootstrap-Aktion installieren, wenn Sie den Cluster starten. Einzelheiten zum Patch finden Sie unter Bekannte Probleme von Amazon EMR Version 6.9.0.

Beachten Sie außerdem Folgendes, wenn Sie Runtime-Rollen für Amazon konfigurierenEMR.

  • Amazon EMR unterstützt Runtime-Rollen in allen kommerziellen Anwendungen AWS-Regionen.

  • Amazon EMR Steps unterstützt Apache Spark- und Apache Hive-Jobs mit Runtime-Rollen, wenn Sie Release emr-6.7.0 oder höher verwenden.

  • SageMaker Studio unterstützt Spark-, Hive- und Presto-Abfragen mit Runtime-Rollen, wenn Sie Release emr-6.9.0 oder höher verwenden.

  • Die folgenden Notebook-Kernel SageMaker unterstützen Runtime-Rollen:

    • DataScience — Python-3-Kernel

    • DataScience 2.0 — Python-3-Kernel

    • DataScience 3.0 — Python-3-Kernel

    • SparkAnalytics 1.0 — SparkMagic und PySpark Kernel

    • SparkAnalytics 2.0 — SparkMagic und Kernel PySpark

    • SparkMagic — Kernel PySpark

  • Amazon EMR unterstützt Schritte, die RunJobFlow nur zum Zeitpunkt der Clustererstellung verwendet werden. Runtime-Rollen werden dadurch API nicht unterstützt.

  • Amazon unterstützt EMR keine Runtime-Rollen auf Clustern, die Sie so konfigurieren, dass sie hochverfügbar sind.

  • Sie müssen Ihre Bash-Befehlsargumente umgehen, wenn Sie Befehle mit der folgenden Datei ausführen: command-runner.jar JAR

    aws emr add-steps --cluster-id <cluster-id> --steps '[{"Name":"sample-step","ActionOnFailure":"CONTINUE","Jar":"command-runner.jar","Properties":"","Args":["bash","-c","\"aws s3 ls\""],"Type":"CUSTOM_JAR"}]' --execution-role-arn <IAM_ROLE_ARN>
  • Runtime-Rollen bieten keine Unterstützung für die Steuerung des Zugriffs auf Cluster-Ressourcen wie HDFS und. HMS