

# 显式拒绝和隐式拒绝之间的区别
<a name="reference_policies_evaluation-logic_AccessPolicyLanguage_Interplay"></a>

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

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

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

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

------
#### [ JSON ]

****  

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

------