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

IAM JSON 策略元素: NotResource

NotResource 是与除指定资源列表之外的所有内容显式匹配的高级策略元素。使用 NotResource 时只列出不应匹配的一些资源,而不是包括将匹配的长资源列表,因此生成的策略较短。使用 NotResource 时应注意,在此元素中指定的资源是受限的唯一 资源。这意味着,如果您使用 Allow 效果,则允许未列出的所有资源,包括所有其他服务中的资源;如果您使用 Deny 效果,则拒绝所有资源。语句必须包含一个使用 ARN 指定资源的 ResourceNotResource 元素。(有关 ARN 格式的更多信息,请参阅 Amazon Resource Names (ARNs) and AWS Service Namespaces。)

在同一语句或一个策略内的不同语句中使用 NotResource 元素和 "Effect": "Allow" 时要谨慎。NotResource 将允许未显式列出的所有服务和资源,最终会向用户授予超出您预期的权限。在同一语句中使用 NotResource 元素和 "Effect": "Deny" 将拒绝未显式列出的服务和资源。

例如,假设您有名为 HRPayroll 的群组。不应允许 HRPayroll 的成员访问除 HRBucket 存储桶中的 Payroll 文件夹之外的任何 Amazon S3 资源。以下策略显式拒绝访问除所列资源外的所有 Amazon S3 资源。但请注意,此策略不向用户授予对任何资源的访问权限。

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "s3:*", "NotResource": [ "arn:aws-cn:s3:::HRBucket/Payroll", "arn:aws-cn:s3:::HRBucket/Payroll/*" ] } }

通常,为了显式拒绝对某一资源的访问,可以编写一条策略,其中使用 "Effect":"Deny",而且包含一个单独列出每个文件夹的 Resource 元素。不过,在此示例中,每当向 HRBucket 添加文件夹或向 Amazon S3 添加不应访问的资源时,都必须将其名称添加到 Resource 中的列表。如果改用 NotResource 元素,除非将文件夹名称添加到 NotResource 元素,否则会自动拒绝用户访问新文件夹。