显式拒绝和隐式拒绝之间的区别 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

显式拒绝和隐式拒绝之间的区别

如果适用策略包含 Deny 语句,则请求会导致显式拒绝。如果应用于请求的策略包含一个 Allow 语句和一个 Deny 语句,Deny 语句优先于 Allow 语句。将显式拒绝请求。

当没有适用的 Deny 语句但也没有适用的 Allow 语句时,会发生隐式拒绝。由于原定设置下拒绝访问 IAM 主体,因此必须显式允许他们执行操作。否则,将隐式拒绝他们访问。

在设计授权战略时,您必须创建包含 Allow 语句的策略才能允许主体成功发出请求。但是,您可以选择显式拒绝和隐式拒绝的任意组合。

例如,您可以创建以下策略,其中包括允许的操作、隐式拒绝的操作和显式拒绝的操作。AllowGetList 语句允许对 IAM 操作的只读权限,这些操作以 GetList 为前缀。IAM 中的所有其他操作,例如 iam:CreatePolicy隐式拒绝DenyReports 语句通过拒绝对包含 Report 后缀(例如 iam:GetOrganizationsAccessReport)的操作的访问权限,显式拒绝对 IAM 报告的访问权限。如果有人向此主体添加另一个策略以授予他们访问 IAM 报告的权限(例如 iam:GenerateCredentialReport),由于这种明确拒绝,报告相关请求仍被拒绝。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetList", "Effect": "Allow", "Action": [ "iam:Get*", "iam:List*" ], "Resource": "*" }, { "Sid": "DenyReports", "Effect": "Deny", "Action": "iam:*Report", "Resource": "*" } ] }