

# IAM JSON 정책 요소: NotAction
<a name="reference_policies_elements_notaction"></a>

`NotAction`은 지정된 작업의 목록을 *제외*한 모든 작업과 명시적으로 일치하는 고급 정책 요소입니다. `NotAction`을 사용하면 일치하는 작업의 긴 목록을 포함하는 대신 일치하지 않는 몇몇 작업만 나열함으로써 정책을 줄일 수 있습니다. `NotAction`에 지정된 작업은 정책 설명의 `Allow` 또는 `Deny` 효과의 영향을 받지 않습니다. 따라서 나열되지 않은 모든 해당 작업 또는 서비스가 `Allow` 효과를 사용할 경우 허용되고, `Deny`를 사용하려는 경우에는 나열되지 않은 작업 또는 서비스가 거부됩니다. `NotAction`을 `Resource` 요소와 함께 사용할 경우 정책 범위를 제공해야 합니다. 이에 따라 AWS는 어떤 작업이나 서비스를 적용할 수 있는지 결정합니다. 자세한 내용은 다음 예제 정책을 참조하세요.

**NotAction 및 Allow** 

설명문에서 `NotAction` 요소를 `"Effect": "Allow"`와 함께 사용하여 AWS 서비스에서 `NotAction`에 지정된 작업을 제외한 모든 작업에 대한 액세스 권한을 제공할 수 있습니다. 이 요소와 `Resource` 요소를 함께 사용하여 정책에 대한 범위를 제공하고 지정한 리소스에서 수행할 수 있는 작업으로만 작업을 제한할 수 있습니다.

다음 예제에서는 버킷 삭제를 *제외하고* 사용자가 S3 리소스에서 수행할 수 있는 모든 Amazon S3 작업에 액세스할 수 있도록 허용합니다. 이 정책은 또한 다른 서비스에서의 작업을 허용하지 않습니다. 다른 서비스 작업은 S3 리소스에 적용되지 않기 때문입니다.

```
"Effect": "Allow",
"NotAction": "s3:DeleteBucket",
"Resource": "arn:aws:s3:::*",
```

때로는 다수의 작업에 액세스하도록 허용해야 할 수 있습니다. `NotAction` 요소를 사용하여 효과적으로 설명문을 반전시켜 작업 목록을 단축시킬 수 있습니다. 예를 들어 AWS 서비스는 종류가 다양하므로 사용자에게 IAM 작업에 대한 액세스를 제외한 모든 것을 허용하는 정책을 생성하기를 원할 수 있습니다.

다음 예제는 사용자가 IAM을 제외한 모든 AWS 서비스에서 모든 작업에 액세스하도록 허용합니다.

```
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
```

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

**NotAction 및 Deny**

설명문에서 `NotAction` 요소를 `"Effect": "Deny"`와 함께 사용하여 `NotAction` 요소에 지정된 작업을 제외하고 모든 나열된 리소스에 대한 액세스를 거부할 수 있습니다. 이 조합은 나열된 항목을 허용하는 것이 아니라 나열되지 않은 작업을 명시적으로 거부합니다. 그러므로 허용하려는 작업은 별도로 허용해야 합니다.

다음의 조건부 예제는 사용자가 MFA를 사용하여 로그인하지 않은 경우 비 IAM 작업에 대한 액세스를 거부합니다. 사용자가 MFA를 사용하여 로그인한 경우에는 `"Condition"` 테스트에 실패하며 최종 `"Deny"` 문은 효과가 없습니다. 단, 이 정책은 사용자에게 작업에 대한 액세스 권한을 부여하는 것이 아니라 IAM 작업을 제외한 다른 모든 작업을 명시적으로 거부할 뿐입니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "DenyAllUsersNotUsingMFA",
        "Effect": "Deny",
        "NotAction": "iam:*",
        "Resource": "*",
        "Condition": {"BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}}
    }]
}
```

------

특정 서비스의 작업을 제외하고 특정 리전 외부의 작업에 대한 액세스를 거부하는 정책의 예는 [AWS: 요청된 리전에 따라 AWS에 대한 액세스를 거부](reference_policies_examples_aws_deny-requested-region.md) 섹션을 참조하세요.