

# 策略评估逻辑
<a name="reference_policies_evaluation-logic"></a>

在主体尝试使用 AWS 管理控制台、AWS API 或 AWS CLI 时，该主体将向 AWS 发送*请求*。在 AWS 服务收到请求时，AWS 会完成几个步骤来确定是允许还是拒绝该请求。

1. **身份验证** - AWS 首先对发出请求的主体进行身份验证（如有必要）。有一些服务（如 Amazon S3）不需要此步骤，它们允许来自匿名用户的某些请求。

1. **[处理请求上下文](reference_policies_evaluation-logic_policy-eval-reqcontext.md)** - AWS 处理在请求中收集的信息以确定应用于请求的策略。

1. **[AWS 执行代码逻辑如何评估允许或拒绝访问的请求](reference_policies_evaluation-logic_policy-eval-denyallow.md)**：AWS 会评估所有策略类型，策略的顺序会影响策略的评估方式。随后，AWS 根据请求上下文处理策略，决定是允许还是拒绝请求。

## 评估基于身份的策略以及基于资源的策略
<a name="policy-eval-basics-id-rdp"></a>

基于身份的策略和基于资源的策略向策略所附加到的身份或资源授予权限。在 IAM 实体（用户或角色）请求访问同一账户中的资源时，AWS 评估基于身份的策略和基于资源的策略授予的所有权限。生成的权限是指两种类型的权限的联合。如果基于身份的策略和/或基于资源的策略允许此操作，则 AWS 允许执行该操作。其中任一项策略中的显式拒绝将覆盖允许。

![\[评估基于身份的策略和基于资源的策略\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/images/permissions_policies_effective.png)


## 评估具有权限边界的基于身份的策略
<a name="policy-eval-basics-id-bound"></a>

在 AWS 评估用户的基于身份的策略和权限边界时，生成的权限是这两种类别的交集。这意味着，当您通过现有基于身份的策略向用户添加权限边界时，您可能会减少用户可以执行的操作。或者，当您从用户删除权限边界时，您可能会增加用户可以执行的操作。其中任一项策略中的显式拒绝将覆盖允许。要查看有关如何使用权限边界评估其他策略类型的信息，请参阅[评估具有边界的有效权限](access_policies_boundaries.md#access_policies_boundaries-eval-logic)。

![\[评估基于身份的策略和权限边界\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/images/permissions_boundary.png)


## 评估具有 AWS Organizations SCP 或 RCP 的基于身份的策略
<a name="policy-eval-basics-id-scp"></a>

当一个用户属于组织成员账户且能够访问未配置基于资源的策略的资源，生成的权限是该用户的策略、服务控制策略（SCP）和资源控制策略（RCP）的交集。这意味着所有三种策略类型均必须允许某项操作。基于身份的策略、SCP 或 RCP 中的显式拒绝会覆盖该允许。

![\[评估基于身份的策略和 SCP 或 RCP\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/images/permissions_scp-idp.png)


您可以在 AWS Organizations 中了解[您的账户是否为某个组织的成员](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html#orgs_view_account)。组织成员可能会受 SCP 或 RCP 的影响。要使用 AWS CLI 命令或 AWS API 操作查看该数据，您必须具有 AWS Organizations 实体的 `organizations:DescribeOrganization` 操作的权限。您必须具有额外的权限才能在 AWS Organizations 控制台中执行该操作。要了解 SCP 或 RCP 是否拒绝访问特定的请求或更改您的有效权限，请与您的 AWS Organizations 管理员联系。