托管策略与内联策略 - AWS Identity and Access Management

托管策略与内联策略

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

AWS托管策略

AWS 托管策略 是由 AWS 创建和管理的独立策略。Standalone policy(独立策略)意味着策略有自己的 Amazon Resource Name (ARN),其中包含策略名称。例如,arn:aws:iam::aws:policy/IAMReadOnlyAccess 是一个 AWS 托管策略。有关 ARN 的更多信息,请参阅 IAM ARN。有关适用于 AWS 服务 的 AWS 托管式策略的列表,请参阅 AWS 托管式策略

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

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

完全访问 AWS 托管式策略通过授予对服务的完全访问权限来定义服务管理员的权限。

高级用户 AWS 托管式策略提供对 AWS 服务和资源的完全访问权限,但不允许管理用户和组。

部分访问 AWS 托管式策略提供对 AWS 服务的特定访问级别,但不允许权限管理访问级别权限。

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

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

AWS 托管策略示意图

客户托管策略

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

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

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

有关更多信息,请参阅 创建 IAM policy

客户托管策略示意图

内联策略

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

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

内联策略示意图