IAM JSON 策略元素:NotAction - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

IAM JSON 策略元素:NotAction

NotAction 是与指定的操作列表之外 的所有内容显式匹配的高级策略元素。使用 NotAction 时只列出不应匹配的一些操作,而不是包括将匹配的长操作列表,因此生成的策略较短。NotAction 中指定的操作不受策略语句中 AllowDeny 效果影响。这也就意味着,如果使用 Allow 效果,则允许未列出的所有适用操作或服务。此外,如果使用 Deny 效果,则拒绝此类未列出的操作或服务。将 NotActionResource 元素结合使用时,您需要提供策略的范围。这是 Amazon 确定哪些操作或服务适用的方式。有关更多信息,请参阅以下策略示例。

NotAction 与 Allow

可在包含 "Effect": "Allow" 的语句中使用 NotAction 元素来提供对 Amazon 服务中所有操作(在 NotAction 中指定的操作除外)的访问权限。您可以将它与 Resource 元素结合使用以提供策略的范围,从而将允许的操作限制为那些可在指定资源上执行的操作。

以下示例允许用户访问可在任何 S3 资源上执行的所有 Amazon S3 操作,但删除存储桶的操作除外。这将不允许用户使用 ListAllMyBuckets S3 API 操作,因为该操作需要“*”资源。此策略也不允许其他服务中的操作,因为其他服务操作不适用于 S3 资源。

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

有时您可能需要允许访问大量操作。使用 NotAction 元素可有效地修改语句,生成更短的操作列表。例如,由于 Amazon 提供了如此多的服务,您可能需要创建一个策略,以允许用户执行除访问 IAM 操作之外的所有操作。

下面的示例允许用户访问除 IAM 之外的 Amazon 服务中的所有操作。

"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"}} }] }

有关拒绝访问特定区域以外的操作(来自特定服务的操作除外)的示例策略,请参阅Amazon:根据请求的区域拒绝访问 Amazon