AWS Identity and Access Management
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

托管策略与内联策略

如果您需要在 IAM 中为身份设置权限,您必须决定是使用 AWS 托管策略、客户托管策略还是内联策略。以下几节提供了有关每个类型的基于身份的策略以及何时使用它们的更多信息。

AWS 托管策略

AWS 托管策略 是由 AWS 创建和管理的独立策略。独立策略 意味着策略有自己的 Amazon 资源名称 (ARN),其中包含策略名称。

AWS 托管策略可用于为许多常用案例提供权限。存在 AWS 托管策略,定义了服务管理员的典型权限并授予对服务的完整访问权限,例如 AmazonDynamoDBFullAccessIAMFullAccess。一些 AWS 托管策略面向高级用户设计,例如 AWSCodeCommitPowerUserAWSKeyManagementServicePowerUser,这也依赖于 IAM 权限。其他 AWS 托管策略提供了对 AWS 服务各种级别的访问,例如 AmazonMobileAnalyticsWriteOnlyAccess AmazonEC2ReadOnlyAccess,这提供对其他相关服务的访问。与必须自己编写策略相比,通过 AWS 托管策略可以更轻松地将适当的权限分配给用户、组和角色。

那些专为工作职能设计的策略是一个特别有用的 AWS 托管策略类别。这些策略与 IT 行业的常用工作职能紧密贴合。目的是让为这些常见工作职能授予权限变得简单。使用工作职能策略的一个重要优势是,在推出新的服务和 API 操作时,AWS 对这些策略进行维护和更新。例如,AdministratorAccess 工作职能提供对 AWS 中的每个服务和资源的完整访问权限和权限委派。我们建议此策略仅用于账户管理员。对于需要对 IAM 和 组织 的有限访问权限以及对其他每个服务的完全访问权限的高级用户,请使用 PowerUserAccess 工作功能。有关工作功能策略的列表和说明,请参阅工作职能的 AWS 托管策略

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

下面的示意图对 AWS 托管策略进行说明。该图显示三个 AWS 托管策略:AdministratorAccessPowerUserAccessAWSCloudTrailReadOnlyAccess。请注意,单个 AWS 托管策略可以附加到不同 AWS 账户中的委托人实体,可以附加到单个 AWS 账户中的不同委托人实体。

 AWS 托管策略示意图

客户托管策略

您可以创建在自己的 AWS 账户中管理的独立策略,我们称之为客户托管策略。随后可以将这些策略附加到您 AWS 账户中的多个委托人实体。将策略附加到委托人实体时,便向实体授予了策略中定义的权限。

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

下面的示意图对客户托管策略进行说明。每个策略都是 IAM 中的一个实体,有自己的 Amazon 资源名称 (ARN),其中包含策略名称。请注意,同一策略可以附加到多个委托人实体,例如,同一 DynamoDB-books-app 策略附加到两个不同的 IAM 角色。

 客户托管策略示意图

内联策略

内联策略是嵌入在委托人实体 (用户、组或角色) 中的策略 – 即,策略是委托人实体的固有部分。在创建委托人实体时或在创建之后,您可以创建策略并将它嵌入在委托人实体中。

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

 内联策略示意图

在托管策略与内联策略之间进行选择

不同类型的策略适用于不同的使用案例。在大多数情况下,我们建议使用托管策略而不是内联策略。

托管策略具备以下功能:

可重复使用性

单个托管策略可以附加到多个委托人实体 (用户、组和角色)。实际上,您可以创建策略库,在库中定义对您 AWS 账户有用的权限,然后根据需要将这些策略附加到委托人实体。

集中变更管理

更改托管策略时,更改会应用于策略附加到的所有委托人实体。例如,如果要针对新 AWS API 添加权限,则可以更新托管策略以添加权限。(如果使用 AWS 托管策略,AWS 会更新为该策略。)更新策略时,更改会应用于策略附加到的所有委托人实体。相反,要更改内联策略,您必须分别编辑包含该策略的每个委托人实体,例如,如果一个组和一个角色都包含同一内联策略,则您必须分别编辑这两个委托人实体以便更改该策略。

版本控制和回滚

在更改客户托管策略时,更改的策略不会覆盖现有的策略。而是由 IAM 创建新的托管策略版本。IAM 最多可以存储五个版本的客户托管策略。如果需要,可以使用策略版本将策略还原为较早版本。

策略版本与 Version 策略元素不同。Version 策略元素用在策略之中,用于定义策略语言的版本。要了解有关策略版本的更多信息,请参阅IAM 策略版本控制。要了解有关 Version 策略元素的更多信息,请参阅IAM JSON 策略元素: Version

委派权限管理

您可以允许您 AWS 账户中的用户附加和分离策略,同时保持对这些策略中定义的权限的控制。实际上,您可以将一些用户指定为完全管理员,即可以创建、更新和删除策略的管理员。然后,您可以将其他用户指定为受限管理员。即,可以将策略(限于您允许附加的策略)附加到其他委托人实体的管理员。

有关委派权限管理的更多信息,请参阅控制对策略的访问

AWS 托管策略的自动更新

AWS 维护 AWS 托管策略并在需要时更新它们 (例如,针对新 AWS 服务添加权限),您不必进行更改。更新会自动应用于已附加了 AWS 托管策略的委托人实体。

使用内联策略

如果您要在策略与应用它的委托人实体之间维持严格的一对一关系,则内联策略十分有用。例如,您要确保策略中的权限不会无意中分配给预期委托人实体之外的委托人实体。使用内联策略时,策略中的权限不可能意外分配给错误的委托人实体。此外,使用 AWS 管理控制台删除委托人实体时,也会删除嵌入在委托人实体中的策略。因为它们是委托人实体的一部分。