Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Politiques IAM pour l'accès basé sur des balises aux clusters et aux bloc-notes EMR
Vous pouvez utiliser des conditions dans votre stratégie basée sur les identités pour contrôler l'accès aux clusters et blocs-notes EMR en fonction des balises.
Pour de plus amples informations sur l'ajout de balises à des clusters, veuillez consulter Balisage de clusters EMR.
Les exemples suivants illustrent différents scénarios et différentes façons d'utiliser des opérateurs de condition avec des clés de condition Amazon EMR. Ces déclarations de politique IAM sont conçues uniquement à des fins de démonstration et ne doivent pas être utilisées dans des environnements de production. Il existe plusieurs façons de combiner des instructions de stratégie pour accorder et refuser des autorisations selon vos besoins. Pour plus d'informations sur la planification et le test des politiques IAM, consultez le Guide de l'utilisateur IAM.
Important
Le refus explicite d'autoriser l'attribution de balises doit être pris en considération. Cela empêche les utilisateurs de baliser une ressource et de s'accorder ainsi des autorisations que vous n'aviez pas l'intention d'accorder. Si vous ne refusez pas les actions de balisage pour une ressource, un utilisateur peut modifier les balises et contourner l'intention des politiques basées sur les balises.
Exemple de déclarations de stratégie basées sur les identités pour les clusters
Les exemples suivants illustrent les stratégies d'autorisation basées sur une identité qui sont utilisées pour contrôler les actions autorisées avec les clusters EMR.
Important
L'action ModifyInstanceGroup
dans Amazon EMR ne nécessite pas que vous spécifiiez un ID de cluster. Pour cette raison, le refus de cette action sur la base des balises de cluster nécessite une attention supplémentaire. Pour de plus amples informations, veuillez consulter Refuser l' ModifyInstanceGroup action dans Amazon EMR.
Rubriques
Actions autorisées uniquement sur des clusters avec des valeurs de balises spécifiques
Les exemples suivants illustrent une stratégie qui permet à un utilisateur d'effectuer des actions sur la base de la balise du cluster
avec la valeur department
et qui permet également à un utilisateur de baliser des clusters en utilisant cette même balise. L'exemple de stratégie finale montre comment refuser les privilèges permettant d'attribuer aux clusters EMR des balises autres que cette même balise.dev
Dans l'exemple suivant de la stratégie, l'opérateur de condition StringEquals
essaie de faire correspondre
avec la valeur de la balise dev
. Si la balise department
n'a pas été ajoutée au cluster, ou ne contient pas la valeur department
, la stratégie ne s'applique pas et les actions ne sont pas autorisées par cette stratégie. Si aucune autre déclaration de stratégie n'autorise ces actions, l'utilisateur peut uniquement utiliser des clusters ayant cette balise avec cette valeur.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" } } } ] }
Vous pouvez également spécifier plusieurs valeurs de balise à l'aide d'un opérateur de condition. Par exemple, pour autoriser toutes les actions sur des clusters où la balise
a la valeur department
ou dev
, vous pouvez remplacer le bloc de condition dans l'exemple précédent avec les éléments suivants. test
"Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department":["dev", "test"] } }
Exiger le balisage du cluster lors de la création d'un cluster
Comme dans l'exemple précédent, l'exemple de politique suivant recherche la même balise correspondante : la valeur
pour la balise dev
. Mais dans cet exemple, la clé de condition department
RequestTag
indique que la politique s'applique lors de la création de balises. Vous devez donc créer un cluster avec une balise correspondant à la valeur spécifiée.
Pour créer un cluster avec une balise, vous devez également être autorisé à effectuer l'action elasticmapredue:AddTags
. Pour cette déclaration, la clé de condition elasticmapreduce:ResourceTag
garantit que IAM n'accorde l'accès qu'aux ressources à balises ayant la valeur
sur la balise dev
. L'élément department
Resource
est utilisé pour limiter cette autorisation aux ressources cluster.
Pour les PassRole
ressources, vous devez fournir l'identifiant ou l'alias du AWS compte, le nom du rôle de service dans l'PassRoleForEMR
instruction et le nom du profil d'instance dans l'PassRoleForEC2
instruction. Pour plus d'informations sur le format IAM ARN, consultez la section IAM ARNs dans le guide de l'utilisateur IAM.
Pour plus d'informations sur la correspondance des valeurs clés des balises, consultez aws:RequestTag/tag-key
dans le Guide de l'utilisateur IAM.
{ "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*" } } } ] }
Actions autorisées sur des clusters avec une balise spécifique, quelle que soit la valeur de la balise
Vous pouvez également autoriser des actions uniquement sur des clusters ayant une balise spécifique, quelle que soit la valeur de la balise. Pour cela, vous pouvez utiliser l'opérateur Null
. Pour plus d'informations, consultez Opérateur de condition pour vérifier l'existence des clés de condition dans le Guide de l'utilisateur IAM. Par exemple, pour autoriser des actions uniquement sur des clusters EMR qui ont la balise
, quelle que soit sa valeur, vous pouvez remplacer les blocs de condition de l'exemple précédent par le suivant. L'opérateur department
Null
recherche la balise
sur un cluster EMR. Si la balise existe, l'instruction department
Null
a la valeur false, correspondant à la condition spécifiée dans cette déclaration de stratégie, et les actions appropriées sont autorisées.
"Condition": { "Null": { "elasticmapreduce:ResourceTag/department":"false" } }
La déclaration de stratégie suivante permet à un utilisateur de créer un cluster EMR uniquement s'il a une balise
, quelle que soit la valeur de cette dernière. Pour la department
PassRole
ressource, vous devez fournir l'identifiant ou l'alias du AWS compte, ainsi que le nom du rôle de service. Pour plus d'informations sur le format IAM ARN, consultez la section IAM ARNs dans le guide de l'utilisateur IAM.
Pour plus d'informations sur la spécification de l'opérateur de condition null (« false »), consultez la section Opérateur de condition pour vérifier l'existence des clés de condition dans le Guide de l'utilisateur IAM.
{ "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*" } } } ] }
Exemple de déclarations de stratégie basées sur l'identité pour les bloc-notes EMR
Les exemples de politiques IAM présentés dans cette section illustrent des scénarios courants d'utilisation de clés pour limiter les actions autorisées à l'aide de Blocs-notes EMR. Dans la mesure où aucune autre stratégie associée au principal (utilisateur) autorise les actions, les clés de contexte de condition limitent les actions autorisées comme indiqué.
Exemple – Autorise l'accès uniquement à Blocs-notes EMR créé par un utilisateur sur la base d'un balisage
L'exemple de déclaration de politique suivant, lorsqu'il est attaché à un rôle ou à un utilisateur, permet à l'utilisateur de travailler uniquement avec les blocs-notes qu'il a créés. Cette déclaration de stratégie utilise la balise par défaut appliquée lorsqu'un bloc-notes est créé.
Dans l'exemple, l'opérateur de condition StringEquals
essaie de faire correspondre une variable représentant l'ID d'utilisateur actuel ({aws:userId}
) avec la valeur de la balise creatorUserID
. Si la balise creatorUserID
n'a pas été ajoutée au bloc-notes, ou ne contient pas la valeur de l'ID de l'utilisateur actuel, la stratégie ne s'applique pas et les actions ne sont pas autorisées par cette stratégie. Si aucune autre déclaration de stratégie n'autorise ces actions, l'utilisateur peut uniquement utiliser des blocs-notes ayant cette balise avec cette valeur.
{ "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}" } } } ] }
Exemple – Exiger le balisage de bloc-notes lorsqu'un bloc-notes est créé
Dans cet exemple, la clé de contexte RequestTag
est utilisée. L'action CreateEditor
est autorisée uniquement si l'utilisateur n'a pas modifié ou supprimé la balise creatorUserID
est ajoutée par défaut. La variable ${aws:userId}, spécifie l'ID d'utilisateur de l'utilisateur actuellement actif, ce qui est la valeur par défaut de la balise.
La déclaration de stratégie peut être utilisée pour aider à garantir que les utilisateurs ne suppriment pas la balise createUserId
ou ne modifient sa valeur.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/creatorUserId": "${aws:userid}" } } } ] }
Cet exemple nécessite que l'utilisateur crée le cluster avec une balise dont la chaîne de clé dept
et une valeur sont définies sur l'une des valeurs suivantes : datascience
, analytics
, operations
.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/dept": [ "datascience", "analytics", "operations" ] } } } ] }
Exemple – Limiter la création de bloc-notes aux clusters balisés et exiger des balises de blocs-notes
Cet exemple autorise la création de bloc-notes uniquement si le bloc-notes est créé avec une balise qui dispose de la chaîne de clé owner
définie sur l'une des valeurs spécifiées. De plus, le bloc-notes peut être créé uniquement si le cluster dispose d'une balise avec la chaîne de clé department
définie sur l'une des valeurs spécifiées.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/owner": [ "owner1", "owner2", "owner3" ], "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }
Exemple – Limiter la possibilité de démarrer un bloc-notes basé sur des balises
Cet exemple limite la capacité de lancer des blocs-notes uniquement aux blocs-notes dotés d'une balise avec la chaîne de clé owner
définie sur une des valeurs spécifiées. Étant donné que l'élément Resource
est utilisé pour spécifier uniquement l'editor
, la condition ne s'applique pas au cluster et n'a pas besoin d'être balisée.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "owner1", "owner2" ] } } } ] }
Cet exemple est similaire à un exemple précédent. Toutefois, la limite s'applique uniquement aux clusters balisés, pas aux blocs-notes.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }
Cet exemple utilise un autre ensemble de bloc-notes et de balises de clusters. Il permet à un bloc-notes de se lancer uniquement si :
-
Le bloc-notes a une balise avec la chaîne de clé
owner
définie sur l'une des valeurs spécifiées—and—
-
Le cluster a une balise avec la chaîne de clé
department
définie sur l'une des valeurs spécifiées
{ "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" ] } } } ] }
Exemple – Limiter la possibilité d'ouvrir l'éditeur de bloc-notes basé sur des balises
Cet exemple autorise l'éditeur de bloc-notes à s'ouvrir uniquement si :
-
Le bloc-notes a une balise avec la chaîne de clé
owner
définie sur l'une des valeurs spécifiées.—and—
-
Le cluster a une balise avec la chaîne de clé
department
définie sur l'une des valeurs spécifiées.
{ "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" ] } } } ] }