IAM JSON 정책 요소: NotAction - AWS Identity and Access Management

IAM JSON 정책 요소: NotAction

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