

# 托管策略与内联策略
<a name="access_policies_managed-vs-inline"></a>

如果在 IAM 中为身份设置权限，您必须决定是使用 AWS 托管式策略、客户管理型策略还是内联策略。以下主题更详细说明了每种基于身份的策略以及何时使用这些策略。

下表概述了这些策略：


| 策略类型 | 说明 | 谁管理策略？ | 修改权限？ | 应用于策略的主体数量？ | 
| --- | --- | --- | --- | --- | 
| [AWS托管策略](#aws-managed-policies) | 由 AWS 创建和管理的独立策略。 | AWS | 否 | 很多 | 
| [客户托管策略](#customer-managed-policies) | 为特定使用案例创建的策略，并且可以根据需要随时更改或更新它们。 | You | 是 | 很多 | 
| [内联策略](#inline-policies) | 为单个 IAM 身份（用户、组或角色）创建的策略，该策略在策略和身份之间保持严格的一对一关系。 | You | 是 | One | 

**Topics**
+ [AWS托管策略](#aws-managed-policies)
+ [客户托管策略](#customer-managed-policies)
+ [内联策略](#inline-policies)
+ [在托管策略与内联策略之间进行选择](access_policies-choosing-managed-or-inline.md)
+ [将内联策略转换为托管式策略](access_policies-convert-inline-to-managed.md)
+ [已弃用的 AWS 托管策略](access_policies_managed-deprecated.md)

## AWS托管策略
<a name="aws-managed-policies"></a>

*AWS 托管策略* 是由 AWS 创建和管理的独立策略。*独立策略*意味着策略有自身的 Amazon 资源名称（ARN），其中包含策略名称。例如，`arn:aws:iam::aws:policy/IAMReadOnlyAccess` 是一个 AWS 托管策略。有关 ARN 的更多信息，请参阅 [IAM ARN](reference_identifiers.md#identifiers-arns)。有关适用于 AWS 服务 的 AWS 托管式策略的列表，请参阅 [AWS 托管式策略](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/policy-list.html)。

借助 AWS 托管式策略，您可以方便地为用户、IAM 组和角色分配适当的权限。它比自己编写策略更快，并且包括许多常见使用案例的权限。

您不能更改 AWS 托管策略中定义的权限。AWS 有时会更新 AWS 托管策略中定义的权限。在 AWS 执行此操作时，更新会影响策略附加到的所有主体实体（IAM 用户、IAM 组和 IAM 角色）。在推出新的 AWS 服务或为现有服务提供新的 API 调用时，AWS 很可能会更新 AWS 托管式策略。例如，名为 **ReadOnlyAccess** 的 AWS 托管策略提供针对所有 AWS 服务 和资源的只读访问权限。在 AWS 推出新的服务时，AWS 将更新 **ReadOnlyAccess** 策略，以便为新服务添加只读权限。更新的权限会应用于策略附加到的所有主体实体。

*完全访问 AWS 托管策略*：这些策略通过授予对服务的完全访问权限来定义服务管理员的权限。示例包括：
+ [AmazonDynamoDBFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess.html)
+ [IAMFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/IAMFullAccess.html)

*高级用户 AWS 托管策略*：这些策略提供对 AWS 服务 和资源的完全访问权限，但不允许管理用户和 IAM 组。示例包括：
+ [AWSCodeCommitPowerUser](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeCommitPowerUser.html) 
+ [AWSKeyManagementServicePowerUser](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSKeyManagementServicePowerUser.html)

*部分访问 AWS 托管策略*：这些策略提供对 AWS 服务 的特定访问级别，但不允许[权限管理](access_policies_understand-policy-summary-access-level-summaries.md#access_policies_access-level)访问级别权限。示例包括：
+ [AmazonMobileAnalyticsWriteOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonMobileAnalyticsWriteOnlyAccess.html)
+ [AmazonEC2ReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ReadOnlyAccess.html) 

*工作职能 AWS 托管策略*：这些策略与 IT 行业中常用的工作职能密切相关，便于为这些工作职能授予权限。使用工作职能策略的一个重要优势是，在推出新的服务和 API 操作时，AWS 对这些策略进行维护和更新。例如，[AdministratorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html) 工作职能提供对 AWS 中的每个服务和资源的完全访问权限和权限委派。我们建议您仅对账户管理员使用此策略。对于需要对 IAM 和 AWS Organizations 的有限访问权限以及此外所有服务的完全访问权限的高级用户，请使用 [PowerUserAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/PowerUserAccess.html) 工作职能。有关工作职能策略的列表和说明，请参阅[工作职能的 AWS 托管策略](access_policies_job-functions.md)。

下图对 AWS 托管策略进行说明。该图显示三个 AWS 托管式策略：**AdministratorAccess**、**PowerUserAccess** 和 **AWSCloudTrail\$1ReadOnlyAccess**。请注意，单个 AWS 托管策略可以附加到不同 AWS 账户 中的主体实体，并且可以附加到单个 AWS 账户 中的不同主体实体。

![\[AWS 托管策略示意图\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/images/policies-aws-managed-policies.diagram.png)


## 客户托管策略
<a name="customer-managed-policies"></a>

您可以在自己的 AWS 账户 中创建可附加到主体实体（IAM 用户、IAM 组和 IAM 角色）的独立策略。您可以为特定使用案例创建这些*客户管理型策略*，并且可以根据需要随时更改和更新它们。与 AWS 托管式策略一样，当您将策略附加到主体实体时，会向实体授予策略中定义的权限。当您更新策略中的权限时，这些更改将应用于策略所附加的所有主体实体。

创建客户托管策略的理想方式是：首先复制一个现有 AWS 托管策略。这样从一开始您就可以确信策略是正确的，只需根据您的环境进行自定义即可。

下面的示意图对客户托管策略进行说明。每个策略都是 IAM 中的一个实体，有自己的 [Amazon Resource Name (ARN)](reference_identifiers.md#identifiers-arns)，其中包含策略名称。请注意，同一策略可以附加到多个主体实体；例如，同一 **DynamoDB-books-app** 策略附加到两个不同的 IAM 角色。

有关更多信息，请参阅 [使用客户管理型策略定义自定义 IAM 权限](access_policies_create.md)。

![\[客户托管策略示意图\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/images/policies-customer-managed-policies.diagram.png)


## 内联策略
<a name="inline-policies"></a>

内联策略是为单个 IAM 身份（用户、用户组或角色）创建的策略。内联策略维持策略与身份之间严格的一对一关系。当您删除身份时，它们将会被删除。您可以创建策略并将其嵌入到身份中，无论是在创建身份时还是之后。如果一个策略可以应用于多个实体，则最好使用托管式策略。

下面的示意图对内联策略进行说明。每个策略都是用户、组或角色的固有部分。请注意，两个角色包含同一策略（**DynamoDB-books-app** 策略），但是它们不共享单个策略。每个角色都有自己的策略副本。

![\[内联策略示意图\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/images/policies-inline-policies.diagram.png)
