

# IAM JSON 정책 요소: NotResource
<a name="reference_policies_elements_notresource"></a>

`NotResource`는 지정된 리소스를 제외한 모든 리소스와 명시적으로 일치하는 고급 정책 요소입니다. `NotResource`를 사용하면 일치하는 리소스의 긴 목록을 포함하는 대신 일치하지 않는 몇몇 리소스만 나열함으로써 정책을 줄일 수 있습니다. 이는 단일 AWS 서비스 내에서 적용되는 정책에 특히 유용합니다.

예를 들어 `HRPayroll`라는 이름의 그룹이 있다고 가정하겠습니다. 그리고 `HRPayroll` 멤버는 `HRBucket` 버킷의 `Payroll` 폴더를 제외하고 모든 Amazon S3 리소스에 액세스할 수 없습니다. 다음 정책은 나열된 리소스 이외의 모든 Amazon S3 리소스에 대한 액세스를 거부합니다. 단, 이 정책은 사용자에게 리소스에 대한 액세스 권한을 부여하는 것이 아닙니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": "s3:*",
    "NotResource": [
      "arn:aws:s3:::HRBucket/Payroll",
      "arn:aws:s3:::HRBucket/Payroll/*"
    ]
  }
}
```

------

일반적으로 리소스에 대한 액세스를 명시적으로 거부하려면 `"Effect":"Deny"`를 사용하고 각 폴더를 개별적으로 나열하는 `Resource` 요소를 포함하는 정책을 작성합니다. 하지만 이때 사용자가 `HRBucket`에 폴더를 추가하거나 액세스하면 안 되는 Amazon S3에 리소스를 추가할 때마다 그 이름 역시 `Resource` 요소의 목록에 추가해야 합니다. 그렇지 않고 `NotResource` 요소를 사용할 때는 폴더 이름을 `NotResource` 요소에 추가하지 않더라도 사용자가 새 폴더에 대한 액세스 권한이 자동으로 거부됩니다.

`NotResource`를 사용할 때는 이 요소에 지정된 리소스가 제한되지 않는 *유일한* 리소스라는 점을 명심해야 합니다. 이렇게 하면 작업에 적용되는 모든 리소스가 제한됩니다. 위의 예에서 정책은 Amazon S3 작업에만 적용되므로 Amazon S3 리소스에만 영향을 미칩니다. `Action` 요소에도 Amazon EC2 작업이 포함되어 있으면 정책에서 `NotResource` 요소에 지정되지 않은 EC2 리소스에 대한 액세스를 거부합니다. 리소스의 ARN을 지정할 수 있는 서비스 작업에 대해 알아보려면 [AWS 서비스에 사용되는 작업, 리소스 및 조건 키](reference_policies_actions-resources-contextkeys.html)를 참조하세요.

## 다른 요소가 있는 NotResource
<a name="notresource-element-combinations"></a>

`"Effect": "Allow"`, `"Action": "*"` 및 `"NotResource": "arn:aws:s3:::HRBucket"` 요소를 함께 사용하면 **안 됩니다**. 이 문은 `HRBucket` S3 버킷을 제외한 모든 리소스에 대해 AWS의 모든 작업을 허용하므로 매우 위험합니다. 이렇게 하면 `HRBucket`에 액세스할 수 있는 정책을 사용자가 직접 추가할 수 있으므로 주의해야 합니다.

동일한 설명문에서 또는 동일한 정책의 다른 설명문에서 `NotResource` 요소와 `"Effect": "Allow"`를 사용할 경우 주의하세요. `NotResource`은 명시적으로 나열되지 않은 모든 서비스 및 작업을 허용하므로 사용자에게 의도한 것보다 많은 권한을 부여하는 결과를 가져올 수 있습니다. 동일한 설명문에서 `NotResource` 요소와 `"Effect": "Deny"`를 사용하면 명시적으로 나열되지 않은 서비스 및 리소스를 거부합니다.