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.
Themen
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
mit dem Wert department
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.dev
Im folgenden Richtlinienbeispiel versucht der StringEquals
-Bedingungsoperator,
und den Wert für das Tag dev
abzugleichen. Wenn das Tag department
dem Cluster nicht hinzugefügt wurde oder den Wert department
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.dev
{ "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
den Wert department
oder dev
enthält können Sie den Bedingungsblock im vorherigen Beispiel durch Folgendes ersetzen. test
"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
für das Tag dev
. In diesem Beispiel gibt der department
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
auf dem dev
Tag steht. Das department
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-key
im 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
Tag verfügen, unabhängig vom darin enthaltenen Wert, könnten Sie die Bedingungsblöcke im vorherigen Beispiel durch den folgenden ersetzen. Der department
Null
Operator sucht nach dem Vorhandensein des Tags
in einem EMR Cluster. Wenn das Tag vorhanden ist, wird die Anweisung department
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
Tag verfügt, das einen beliebigen Wert enthalten kann. Für die department
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" ] } } } ] }