

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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를 지정하지 않는 한 모든 `ModifyInstanceGroups` 요청이 실패하도록 합니다. 자격 증명은 작업과 함께 클러스터 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": "DenyELASTICMAPREDUCEModifyinstancegroupsSpecificCluster"
    },
    {
      "Action": [
        "elasticmapreduce:ModifyInstanceGroups"
      ],
      "Effect": "Deny",
      "NotResource": "arn:*:elasticmapreduce:*:*:cluster/*",
      "Sid": "DenyELASTICMAPREDUCEModifyinstancegroupsNonCluster"
    }
  ]
}
```

------

클러스터 태그와 관련된 값을 기반으로 `ModifyInstanceGroups` 작업을 거부하려는 경우에도 비슷한 문제가 존재합니다. 해결 방법도 비슷합니다. 태그 값을 지정하는 거부 명령문 외에도 지정한 태그가 없는 경우 값에 관계없이 `ModifyInstanceGroup` 작업을 거부하는 정책 명령문을 추가할 수 있습니다.

다음 예제는 자격 증명에 연결된 경우 `department` 태그가 `dev`로 설정된 모든 클러스터에서 자격 증명의 `ModifyInstanceGroups` 작업을 거부하는 정책을 보여줍니다. `StringNotLike` 조건을 사용하여 `department` 태그가 없는 한 작업을 거부하는 거부 명령문 때문에 이 명령문만 유효합니다.

------
#### [ 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"
    }
  ]
}
```

------