

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EMR の ModifyInstanceGroup アクションを拒否する
<a name="emr-cluster-deny-modifyinstancegroup"></a>

Amazon EMR の [ModifyInstanceGroups](https://docs.aws.amazon.com/emr/latest/APIReference/API_ModifyInstanceGroups.html) アクションでは、アクションでクラスター ID を指定する必要はありません。代わりに、インスタンスグループ ID のみを指定できます。このため、クラスター ID またはクラスタータグに基づくこのアクションに対する単純な拒否ポリシーでは、意図した効果が得られない可能性があります。次のポリシー例を考えます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticmapreduce:ModifyInstanceGroups"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Sid": "AllowELASTICMAPREDUCEModifyinstancegroups"
    },
    {
      "Action": [
        "elasticmapreduce:ModifyInstanceGroups"
      ],
      "Effect": "Deny",
      "Resource": [
        "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/j-12345ABCDEFG67"
      ],
      "Sid": "DenyELASTICMAPREDUCEModifyinstancegroups"
    }
  ]
}
```

------

このポリシーがアタッチされたユーザーが `ModifyInstanceGroup` アクションを実行し、インスタンスグループ ID のみを指定した場合、このポリシーは適用されません。アクションは他のすべてのリソースで許可されるため、アクションは成功します。

この問題の解決策として、[NotResource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notresource.html) 要素を使用してクラスター ID なしで発行された `ModifyInstanceGroup` アクションを拒否するポリシーステートメントを ID にアタッチできます。次のポリシー例では、このような deny ステートメントを追加して、クラスター ID が指定されていない限り、`ModifyInstanceGroups` リクエストが失敗するようにします。ID はアクションでクラスター ID を指定する必要があるため、クラスター ID に基づく deny ステートメントが有効になります。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticmapreduce:ModifyInstanceGroups"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Sid": "AllowELASTICMAPREDUCEModifyinstancegroups"
    },
    {
      "Action": [
        "elasticmapreduce:ModifyInstanceGroups"
      ],
      "Effect": "Deny",
      "Resource": [
        "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/j-12345ABCDEFG67"
      ],
      "Sid": "DenyELASTICMAPREDUCEModifyinstancegroupsSpecificCluster"
    },
    {
      "Action": [
        "elasticmapreduce:ModifyInstanceGroups"
      ],
      "Effect": "Deny",
      "NotResource": "arn:*:elasticmapreduce:*:*:cluster/*",
      "Sid": "DenyELASTICMAPREDUCEModifyinstancegroupsNonCluster"
    }
  ]
}
```

------

クラスタータグに関連付けられた値に基づいて `ModifyInstanceGroups` アクションを拒否する場合にも同様の問題が存在します。解決策も同様です。タグ値を指定する deny ステートメントに加えて、値に関係なく、指定したタグが存在しない場合に `ModifyInstanceGroup` アクションを拒否するポリシーステートメントを追加できます。

次の例では、ID にアタッチされたときに、タグ `department` が `dev` に設定されているクラスターでその ID に対して `ModifyInstanceGroups` アクションを拒否するポリシーを示しています。`StringNotLike` 条件を使用して `department` タグが存在しない限りアクションを拒否する deny ステートメントのため、このステートメントのみが有効です。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticmapreduce:ModifyInstanceGroups"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Sid": "AllowELASTICMAPREDUCEModifyinstancegroups"
    },
    {
      "Action": [
        "elasticmapreduce:ModifyInstanceGroups"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/department": "dev"
        }
      },
      "Effect": "Deny",
      "Resource": [
        "*"
      ],
      "Sid": "DenyELASTICMAPREDUCEModifyinstancegroupsDevDepartment"
    },
    {
      "Action": [
        "elasticmapreduce:ModifyInstanceGroups"
      ],
      "Condition": {
        "StringNotLike": {
          "aws:ResourceTag/department": "?*"
        }
      },
      "Effect": "Deny",
      "Resource": [
        "*"
      ],
      "Sid": "DenyELASTICMAPREDUCEModifyinstancegroupsNoDepartmentTag"
    }
  ]
}
```

------