IAMRichtlinien für den tagbasierten Zugriff auf Cluster und Notebooks EMR - 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.

IAMRichtlinien für den tagbasierten Zugriff auf Cluster und Notebooks EMR

Sie können Bedingungen in Ihrer identitätsbasierten Richtlinie verwenden, um den Zugriff auf Cluster und EMR Notebooks anhand von Tags zu steuern.

Weitere Informationen zum Hinzufügen von Tags zu Clustern finden Sie unter Clustern EMRtaggen.

Die folgenden Beispiele zeigen verschiedene Szenarien und Möglichkeiten, Bedingungsoperatoren mit EMR Amazon-Bedingungsschlüsseln zu verwenden. Diese IAM Grundsatzerklärungen dienen nur zu Demonstrationszwecken und sollten nicht in Produktionsumgebungen verwendet werden. Es gibt mehrere Möglichkeiten für die Kombination von Richtlinienanweisungen zum Gewähren oder Verweigern von Berechtigungen entsprechend Ihren Anforderungen. Weitere Informationen zur Planung und zum Testen von IAM Richtlinien finden Sie im IAMBenutzerhandbuch.

Wichtig

Das explizite Ablehnen von Berechtigungen für Markierungsaktionen stellt eine wichtige Überlegung dar. Dadurch wird verhindert, dass Benutzer eine Ressource markieren und sich dadurch selbst Berechtigungen erteilen, die Sie nicht gewähren wollten. Wenn Sie Tagging-Aktionen für eine Ressource nicht verweigern, kann ein Benutzer Tags ändern und die Absicht der tagbasierten Richtlinien umgehen.

Beispiel identitätsbasierter Richtlinienanweisungen für Cluster

Die folgenden Beispiele zeigen identitätsbasierte Berechtigungsrichtlinien, die zur Steuerung der Aktionen verwendet werden, die mit EMR Clustern zulässig sind.

Wichtig

Für die ModifyInstanceGroup Aktion in Amazon müssen Sie EMR keine Cluster-ID angeben. Aus diesem Grund sind zusätzliche Überlegungen erforderlich, um diese Aktion auf der Grundlage von Cluster-Tags abzulehnen. Weitere Informationen finden Sie unter Die ModifyInstanceGroup Aktion bei Amazon ablehnen EMR.

Zulassen von Aktionen nur für Cluster mit bestimmten Tag-Werten

Die folgenden Beispiele veranschaulichen eine Richtlinie, mit der ein Benutzer Aktionen auf der Grundlage des Cluster-Tags department mit dem Wert dev durchführen, sowie Cluster mit demselben Tag markieren kann. Das letzte Richtlinienbeispiel zeigt, wie Rechte verweigert werden können, um EMR Cluster mit etwas anderem als demselben Tag zu kennzeichnen.

Im folgenden Richtlinienbeispiel versucht der StringEquals-Bedingungsoperator, dev und den Wert für das Tag department abzugleichen. Wenn das Tag department dem Cluster nicht hinzugefügt wurde oder den Wert dev nicht enthält, ist die Richtlinie nicht anzuwenden und die Aktionen werden von dieser Richtlinie nicht zugelassen. Wenn keine anderen Richtlinienanweisungen die Aktionen zulassen, kann der Benutzer nur mit Clustern arbeiten, die dieses Tag mit diesem Wert enthalten.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt12345678901234", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListSteps", "elasticmapreduce:TerminateJobFlows", "elasticmapreduce:SetTerminationProtection", "elasticmapreduce:ListInstances", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListBootstrapActions", "elasticmapreduce:DescribeStep" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": "dev" } } } ] }

Sie können auch mehrere Tag-Werte mithilfe eines Bedingungsoperators angeben. Um beispielsweise alle Aktionen in Clustern zuzulassen, in denen das Tag department den Wert dev oder test enthält können Sie den Bedingungsblock im vorherigen Beispiel durch Folgendes ersetzen.

"Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department":["dev", "test"] } }

Erfordert Cluster-Tagging, wenn ein Cluster erstellt wird

Wie im oben stehenden Beispiel sucht die folgenden Beispielrichtlinie dasselbe übereinstimmende Tag: den Wert dev für das Tag department. In diesem Beispiel gibt der RequestTag-Bedingungsschlüssel jedoch an, dass die Richtlinie während der Tag-Erstellung gilt. Sie müssen also einen Cluster mit einem Tag erstellen, der dem angegebenen Wert entspricht.

Um einen Cluster mit einem Tag zu erstellen, benötigen Sie auch die Erlaubnis für die elasticmapredue:AddTags-Aktion. Bei dieser Anweisung stellt der elasticmapreduce:ResourceTag Bedingungsschlüssel sicher, dass IAM nur Zugriff auf Tag-Ressourcen gewährt wird, deren Wert dev auf dem department Tag steht. Das Resource-Element wird verwendet, um diese Berechtigung auf Clusterressourcen zu beschränken.

Für die PassRole Ressourcen müssen Sie die AWS Konto-ID oder den Alias, den Namen der Servicerolle in der PassRoleForEMR Anweisung und den Namen des Instanzprofils in der PassRoleForEC2 Anweisung angeben. Weitere Informationen zum IAM ARN Format finden Sie IAMARNsim IAMBenutzerhandbuch.

Weitere Informationen zum Abgleichen von Tag-Schlüsselwerten finden Sie aws:RequestTag/tag-keyim IAMBenutzerhandbuch.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RunJobFlowExplicitlyWithTag", "Effect": "Allow", "Action": [ "elasticmapreduce:RunJobFlow" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/department": "dev" } } }, { "Sid": "AddTagsForDevClusters", "Effect": "Allow", "Action": "elasticmapreduce:AddTags", "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": "dev" } } }, { "Sid": "PassRoleForEMR", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::AccountId:role/Role-Name-With-Path", "Condition": { "StringLike": { "iam:PassedToService": "elasticmapreduce.amazonaws.com*" } } }, { "Sid": "PassRoleForEC2", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::AccountId:role/Role-Name-With-Path", "Condition": { "StringLike": { "iam:PassedToService": "ec2.amazonaws.com*" } } } ] }

Aktionen für Cluster mit einem bestimmten Tag zulassen, unabhängig vom Tag-Wert

Sie können auch Aktionen nur für Cluster mit einem bestimmten Tag, unabhängig vom Tag-Wert, zulassen. Dazu können Sie den Null-Operator verwenden. Weitere Informationen finden Sie im IAMBenutzerhandbuch unter Bedingungsoperator zur Überprüfung der Existenz von Bedingungsschlüsseln. Um beispielsweise Aktionen nur für EMR Cluster zuzulassen, die über das department Tag verfügen, unabhängig vom darin enthaltenen Wert, könnten Sie die Bedingungsblöcke im vorherigen Beispiel durch den folgenden ersetzen. Der Null Operator sucht nach dem Vorhandensein des Tags department in einem EMR Cluster. Wenn das Tag vorhanden ist, wird die Anweisung Null entsprechend der in dieser Richtlinienanweisung angegebenen Bedingung mit "false" ausgewertet und die jeweiligen Aktionen werden zugelassen.

"Condition": { "Null": { "elasticmapreduce:ResourceTag/department":"false" } }

Mit der folgenden Richtlinienanweisung kann ein Benutzer nur dann einen EMR Cluster erstellen, wenn der Cluster über ein department Tag verfügt, das einen beliebigen Wert enthalten kann. Für die PassRole Ressource müssen Sie die AWS Konto-ID oder den Alias und den Namen der Dienstrolle angeben. Weitere Informationen zum IAM ARN Format finden Sie IAMARNsim IAMBenutzerhandbuch.

Weitere Informationen zur Angabe des Bedingungsoperators Null („falsch“) finden Sie im IAMBenutzerhandbuch unter Bedingungsoperator zur Überprüfung der Existenz von Bedingungsschlüsseln.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateClusterTagNullCondition", "Effect": "Allow", "Action": [ "elasticmapreduce:RunJobFlow" ], "Resource": [ "*" ], "Condition": { "Null": { "aws:RequestTag/department": "false" } } }, { "Sid": "AddTagsNullCondition", "Effect": "Allow", "Action": "elasticmapreduce:AddTags", "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*", "Condition": { "Null": { "elasticmapreduce:ResourceTag/department": "false" } } }, { "Sid": "PassRoleForElasticMapReduce", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::AccountId:role/Role-Name-With-Path", "Condition": { "StringLike": { "iam:PassedToService": "elasticmapreduce.amazonaws.com*" } } }, { "Sid": "PassRoleForEC2", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::AccountId:role/Role-Name-With-Path", "Condition": { "StringLike": { "iam:PassedToService": "ec2.amazonaws.com*" } } } ] }

Beispiel für identitätsbasierte Richtlinienerklärungen für Notebooks EMR

Die IAM Beispielrichtlinien in diesem Abschnitt veranschaulichen gängige Szenarien für die Verwendung von Schlüsseln, um zulässige Aktionen mit Notebooks einzuschränken. EMR Solange keine andere mit dem Prinzipal (Benutzer) verknüpfte Richtlinie die Aktionen zulässt, schränken die Bedingungskontextschlüssel die zulässigen Aktionen wie angegeben ein.

Beispiel
— Erlaubt nur den Zugriff auf EMR Notizbücher, die ein Benutzer auf der Grundlage von Tagging erstellt

Wenn die folgende Beispiel-Richtlinienanweisung an eine Rolle oder einen Benutzer angefügt wird, können Benutzer nur mit Notebooks arbeiten, die sie selbst erstellt haben. Diese Richtlinienanweisung verwendet das bei der Erstellung eines Notebooks angewendete Standard-Tag.

In diesem Beispiel versucht der Bedingungsoperator StringEquals, eine Variable, die die Benutzer-ID ({aws:userId}) des aktuellen Benutzers darstellt, dem Wert des Tags creatorUserID zuzuordnen. Wenn das Tag creatorUserID nicht zum Notebook hinzugefügt wurde oder den Wert der ID des aktuellen Benutzers nicht enthält, ist die Richtlinie nicht anzuwenden und die Aktionen werden von dieser Richtlinie nicht zugelassen. Wenn keine anderen Richtlinienanweisungen die Aktionen zulassen, kann der Benutzer nur mit Notebooks arbeiten, die dieses Tag mit diesem Wert enthalten.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:DescribeEditor", "elasticmapreduce:StartEditor", "elasticmapreduce:StopEditor", "elasticmapreduce:DeleteEditor", "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userId}" } } } ] }
Beispiel – Notebook-Tagging anfordern, wenn ein Notebook erstellt wird

In diesem Beispiel wird der Kontextschlüssel RequestTag verwendet. Die Aktion CreateEditor ist nur dann zulässig, wenn der Benutzer das creatorUserID Tag, das standardmäßig hinzugefügt wird, nicht ändert oder löscht. Die Variable $ {aws:userId} gibt die Benutzer-ID des aktuell aktiven Benutzers an. Dies ist der Standardwert des Tags.

Die Richtlinienanweisung kann verwendet werden, um sicherzustellen, dass Benutzer das Tag createUserId nicht entfernen und dessen Wert nicht ändern.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/creatorUserId": "${aws:userid}" } } } ] }

Dieses Beispiel erfordert, dass der Benutzer den Cluster mit einem Tag mit der Schlüsselzeichenfolge dept und einem der folgenden Werte erstellt: datascience, analytics, operations.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/dept": [ "datascience", "analytics", "operations" ] } } } ] }
Beispiel – Die Notebook-Erstellung auf getaggte Cluster beschränken und Notebook-Tags anfordern

Dieses Beispiel erlaubt die Notebook-Erstellung nur, wenn das Notebook mit einem Tag erstellt wird, bei dem die Schlüsselzeichenfolge owner auf einen der angegebenen Werte festgelegt ist. Darüber hinaus kann das Notebook nur erstellt werden, wenn der Cluster ein Tag enthält, bei dem die Schlüsselzeichenfolge department auf einen der angegebenen Werte festgelegt ist.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/owner": [ "owner1", "owner2", "owner3" ], "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }
Beispiel – Basierend auf Tags die Möglichkeit einschränken, ein Notebook zu starten

Dieses Beispiel schränkt die Möglichkeit, ein Notebook zu starten, auf Notebooks ein, die ein Tag enthalten, bei dem die Schlüsselzeichenfolge owner auf einen der angegebenen Werte festgelegt ist. Da das Element Resource verwendet wird, um nur den editor anzugeben, gilt die Bedingung nicht für den Cluster und ein Tagging ist nicht erforderlich.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "owner1", "owner2" ] } } } ] }

Dieses Beispiel ähnelt dem obigen. Die Einschränkung gilt hier jedoch nur für getaggte Cluster, nicht für Notebooks.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }

Dieses Beispiel verwendet andere Notebook- und Cluster-Tags. Es ermöglicht das Starten eines Notebooks nur, wenn Folgendes zutrifft:

  • Das Notebook enthält ein Tag, bei dem die Schlüsselzeichenfolge owner auf einen der angegebenen Wert festgelegt ist.

    – und –

  • Der Cluster enthält ein Tag, bei dem die Schlüsselzeichenfolge department auf einen der angegebenen Wert festgelegt ist.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "user1", "user2" ] } } }, { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "datascience", "analytics" ] } } } ] }
Beispiel – Basierend auf Tags die Möglichkeit einschränken, den Notebook-Editor zu öffnen

In diesem Beispiel kann der Notebook-Editor nur geöffnet werden, wenn Folgendes zutrifft:

  • Das Notebook enthält ein Tag, bei dem die Schlüsselzeichenfolge owner auf einen der angegebenen Wert festgelegt ist.

    – und –

  • Der Cluster enthält ein Tag, bei dem die Schlüsselzeichenfolge department auf einen der angegebenen Wert festgelegt ist.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "user1", "user2" ] } } }, { "Action": [ "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "datascience", "analytics" ] } } } ] }