IAM JSON 정책 요소: NotAction
NotAction
은 지정된 작업의 목록을 제외한 모든 작업과 명시적으로 일치하는 고급 정책 요소입니다. NotAction
을 사용하면 일치하는 작업의 긴 목록을 포함하는 대신 일치하지 않는 몇몇 작업만 나열함으로써 정책을 줄일 수 있습니다. NotAction
에 지정된 작업은 정책 설명의 Allow
또는 Deny
효과의 영향을 받지 않습니다. 따라서 나열되지 않은 모든 해당 작업 또는 서비스가 Allow
효과를 사용할 경우 허용되고, Deny
를 사용하려는 경우에는 나열되지 않은 작업 또는 서비스가 거부됩니다. NotAction
을 Resource
요소와 함께 사용할 경우 정책 범위를 제공해야 합니다. 이에 따라 AWS는 어떤 작업이나 서비스를 적용할 수 있는지 결정합니다. 자세한 내용은 다음 예제 정책을 참조하세요.
NotAction 및 Allow
설명문에서 NotAction
요소를 "Effect":
"Allow"
와 함께 사용하여 AWS 서비스에서 NotAction
에 지정된 작업을 제외한 모든 작업에 대한 액세스 권한을 제공할 수 있습니다. 이 요소와 Resource
요소를 함께 사용하여 정책에 대한 범위를 제공하고 지정한 리소스에서 수행할 수 있는 작업으로만 작업을 제한할 수 있습니다.
다음 예제에서는 버킷 삭제를 제외하고 사용자가 S3 리소스에서 수행할 수 있는 모든 Amazon S3 작업에 액세스할 수 있도록 허용합니다. ListAllMyBuckets
S3 API 작업은 "*" 리소스가 필요하기 때문에 이 작업은 사용자가 사용할 수 없습니다. 이 정책은 또한 다른 서비스에서의 작업을 허용하지 않습니다. 다른 서비스 작업은 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 작업을 제외한 다른 모든 작업을 명시적으로 거부할 뿐입니다.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "DenyAllUsersNotUsingMFA", "Effect": "Deny", "NotAction": "iam:*", "Resource": "*", "Condition": {"BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}} }] }
특정 서비스의 작업을 제외하고 특정 리전 외부의 작업에 대한 액세스를 거부하는 정책의 예는 AWS: 요청된 리전에 따라 AWS에 대한 액세스를 거부 섹션을 참조하세요.