AWS Identity and Access Management
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

IAM JSON 策略元素: NotAction

NotAction 是与指定的操作列表之外 的所有内容显式匹配的高级策略元素。使用 NotAction 时只列出不应匹配的一些操作,而不是包括将匹配的长操作列表,因此生成的策略较短。使用 NotAction 时应注意,在此元素中指定的操作是受限的唯一 操作。这意味着,如果使用 Allow 效果,则允许未列出的所有操作或服务;如果使用 Deny 效果,则拒绝未列出的所有操作或服务。

NotAction 与 Allow

可在包含 "Effect": "Allow" 的语句中使用 NotAction 元素来提供对 AWS 服务中所有操作 (在 NotAction 中指定的操作除外) 的访问权限。还可将其与 Resource 元素一起使用,来提供对一个或多个资源 (在 NotAction 元素中指定的操作除外) 的访问权限。

下面的示例允许用户访问每个 Amazon 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 操作之外的所有其他操作。

"Effect": "Deny", "NotAction": "iam:*", "Resource": "*", "Condition":{ "BoolIfExists":{ "aws:MultiFactorAuthPresent": "false"}}