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.
Refuser l' ModifyInstanceGroup action sur Amazon EMR
L'ModifyInstanceGroupsaction dans Amazon EMR ne nécessite pas que vous fournissiez un ID de cluster avec l'action. Au lieu de cela, vous pouvez spécifier uniquement un ID de groupe d'instance. Pour cette raison, une politique de refus apparemment simple pour cette action basée sur l'ID de cluster ou une balise de cluster peut ne pas avoir l'effet escompté. Examinons l'exemple de politique suivant.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:ModifyInstanceGroups" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "elasticmapreduce:ModifyInstanceGroups" ], "Effect": "Deny", "Resource": "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/j-12345ABCDEFG67" } ] }
Si un utilisateur auquel cette politique est attachée effectue une action ModifyInstanceGroup
et ne spécifie que l'ID du groupe d'instance, la politique ne s'applique pas. Comme l'action est autorisée sur toutes les autres ressources, l'action est réussie.
Une solution à ce problème consiste à joindre une déclaration de politique à l'identité qui utilise un NotResourceélément pour refuser toute ModifyInstanceGroup
action émise sans identifiant de cluster. L'exemple de politique suivant ajoute une telle instruction de refus de sorte que toute demande ModifyInstanceGroups
échoue à moins qu'un identifiant de cluster ne soit spécifié. Étant donné qu'une identité doit spécifier un ID de cluster avec l'action, les déclarations de refus basées sur l'ID de cluster sont donc efficaces.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:ModifyInstanceGroups" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "elasticmapreduce:ModifyInstanceGroups" ], "Effect": "Deny", "Resource": "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/j-12345ABCDEFG67" }, { "Action": [ "elasticmapreduce:ModifyInstanceGroups" ], "Effect": "Deny", "NotResource": "arn:*:elasticmapreduce:*:*:cluster/*" } ] }
Un problème similaire se pose lorsque vous voulez refuser l'action ModifyInstanceGroups
en fonction de la valeur associée à une balise de cluster. La solution est similaire. En plus d'une instruction de refus qui spécifie la valeur de la balise, vous pouvez ajouter une instruction de stratégie qui refuse l'action ModifyInstanceGroup
si la balise que vous spécifiez n'est pas présente, quelle qu'en soit la valeur.
L'exemple suivant illustre une politique qui, lorsqu'elle est attachée à une identité, refuse à cette dernière l'action ModifyInstanceGroups
pour tout cluster dont la balise department
est définie sur dev
. Cette instruction n'est efficace qu'en raison de l'instruction de refus qui utilise la condition StringNotLike
pour refuser l'action à moins que la balise department
ne soit présente.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:ModifyInstanceGroups" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "elasticmapreduce:ModifyInstanceGroups" ], "Condition": { "StringEquals": { "aws:ResourceTag/department": "dev" } }, "Effect": "Deny", "Resource": "*" }, { "Action": [ "elasticmapreduce:ModifyInstanceGroups" ], "Condition": { "StringNotLike": { "aws:ResourceTag/department": "?*" } }, "Effect": "Deny", "Resource": "*" } ], }