

# 权限和策略如何提供访问管理
<a name="introduction_access-management"></a>

AWS Identity and Access Management（IAM）的访问管理部分帮助定义主体实体可在账户内执行的操作。主体实体是指使用 IAM 实体（IAM 用户或 IAM 角色）进行身份验证的人员或应用程序。访问管理通常称为*授权*。您在 AWS 中通过创建策略并将其附加到 IAM 身份（IAM 用户、IAM 组或 IAM 角色）或 AWS 资源来管理访问权限。策略是 AWS 中的对象；在与身份或资源相关联时，策略定义它们的权限。在主体使用 IAM 实体（IAM 用户或 IAM 角色）发出请求时，AWS 将评估这些策略。策略中的权限确定是允许还是拒绝请求。大多数策略在 AWS 中存储为 JSON 文档。有关策略类型和用法的更多信息，请参阅[AWS Identity and Access Management 中的策略和权限](access_policies.md)。

## 策略和账户
<a name="intro-access-accounts"></a>

如果您管理 AWS 中的单个账户，则使用策略定义该账户中的权限。如果您管理跨多个账户的权限，则管理 IAM 用户的权限会比较困难。您可以将 IAM 角色、基于资源的策略或访问控制列表 (ACL) 用于跨账户权限。但是，如果您拥有多个账户，那我们建议您改用该 AWS Organizations 服务来帮助您管理这些权限。有关更多信息，请参阅《AWS Organizations 用户指南》**中的[什么是 AWS Organizations？](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)。

## 策略和用户
<a name="intro-access-users"></a>

IAM 用户是AWS 账户中的身份。当您创建 IAM 用户时，他们无法访问您账户中的任何内容，直到您向他们授予权限。向 IAM 用户授予权限的方法是创建基于身份的策略，这是附加到 IAM 用户或 IAM 用户所属 IAM 组的策略。下面的示例演示一个 JSON 策略，该策略允许 IAM 用户对 `us-east-2` 区域内 `123456789012` 账户中的 `Books` 表执行所有 Amazon DynamoDB 操作（`dynamodb:*`）。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "dynamodb:*",
    "Resource": "arn:aws:dynamodb:us-east-2:123456789012:table/Books"
  }
}
```

------

 在将此策略附加到您的 IAM 用户后，该用户有权在 DynamoDB 实例的 `Books` 表中执行所有操作。大多数 IAM 用户都有多个策略，这些策略组合在一起代表其授予的总权限。

默认情况下会拒绝策略未显式允许的操作或资源。例如，如果上述策略是附加到用户的单个策略，则该用户可以对 `Books` 表执行 DynamoDB 操作，但不能对其他表执行这些操作。同样，不允许用户在 Amazon EC2、Amazon S3 或任何其他 AWS 服务中执行任何操作，因为策略中未包含使用这些服务的权限。

## 策略和 IAM 组
<a name="intro-access-groups"></a>

可以将 IAM 用户组织为 *IAM 组*，然后将策略附加到该 IAM 组。这种情况下，各 IAM 用户仍有自己的凭证，但是 IAM 组中的所有 IAM 用户都具有附加到该 IAM 组的权限。使用 IAM 组可更轻松地管理权限。

![\[此图显示如何将 IAM 用户组织为 IAM 组，以便更轻松地管理权限，因为每个 IAM 用户都具有分配到 IAM 组的权限。\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/images/iam-intro-users-and-groups.diagram.png)


IAM 用户或 IAM 组可以附加授予不同权限的多个策略。在这种情况下，策略的组合决定了主体的有效权限。如果主体对操作和资源没有显式 `Allow` 权限，则主体没有这些权限。

## 联合用户会话和角色
<a name="intro-access-roles"></a>

联合主体无法通过与 IAM 用户相同的方式在您的 AWS 账户中获得永久身份。要向联合主体分配权限，可以创建称为*角色*的实体，并为角色定义权限。当 SAML 或 OIDC 联合主体登录 AWS 时，该用户会与角色关联，被授予角色中定义的权限。有关更多信息，请参阅 [为第三方身份提供者创建角色](id_roles_create_for-idp.md)。

## 基于身份和基于资源的策略
<a name="intro-access-resource-based-policies"></a>

基于身份的策略是附加到 IAM 身份（如 IAM 用户、组或角色）的权限策略。基于资源的策略是附加到资源（如 Amazon S3 存储桶或 IAM 角色信任策略）的权限策略。

***基于身份的策略***控制身份可以在哪些条件下对哪些资源执行哪些操作。基于身份的策略可以进一步分类：
+ **托管策略** – 基于身份的独立策略，可附加到您的 AWS 账户 中的多个用户、组和角色。您可以使用两个类型的托管策略：
  + **AWS 托管策略**——由 AWS 创建和管理的托管策略。如果您刚开始使用策略，建议先使用 AWS 托管策略。
  + **客户管理型策略** – 您在 AWS 账户 中创建和管理的管理型策略。与 AWS 托管策略相比，客户托管策略可以更精确地控制策略。您可以在可视化编辑器中创建、编辑和验证 ，它是一项 IAM policy，也可以直接创建 JSON 策略文档以创建和编辑该策略。有关更多信息，请参阅 [使用客户管理型策略定义自定义 IAM 权限](access_policies_create.md) 和 [编辑 IAM 策略](access_policies_manage-edit.md)。
+ **内联策略**——由您创建和管理的策略，直接嵌入在单个用户、组或角色中。大多数情况下，我们不建议使用内联策略。

***基于资源的策略***控制指定的主体可以在何种条件下对该资源执行哪些操作。基于资源的策略是内联策略，没有基于资源的托管策略。要启用跨账户存取，您可以将整个账户或其他账户中的 IAM 实体指定为基于资源的策略中的主体。****

IAM 服务支持一种基于资源的策略（称为角色*信任策略*），您可将这种策略附加到 IAM 角色。由于 IAM 角色同时是支持基于资源的策略的身份和资源，因此，您必须同时将信任策略和基于身份的策略附加到 IAM 角色。信任策略定义哪些主体实体（账户、用户、角色和 AWS STS 联合用户主体）可以代入该角色。要了解 IAM 角色如何与其他基于资源的策略不同，请参阅 [IAM 中的跨账户资源访问](access_policies-cross-account-resource-access.md)。

要了解哪些服务支持基于资源的策略，请参阅[使用 IAM 的 AWS 服务](reference_aws-services-that-work-with-iam.md)。要了解基于资源的策略的更多信息，请参阅 [基于身份的策略和基于资源的策略](access_policies_identity-vs-resource.md)。