托管策略与内联策略
如果在 IAM 中为身份设置权限,您必须决定是使用 Amazon 托管式策略、客户管理型策略还是内联策略。以下主题更详细说明了每种基于身份的策略以及何时使用这些策略。
Amazon托管策略
Amazon 托管策略 是由 Amazon 创建和管理的独立策略。独立策略意味着策略有自身的 Amazon 资源名称(ARN),其中包含策略名称。例如,arn:aws:iam::aws:policy/IAMReadOnlyAccess
是一个 Amazon 托管策略。有关 ARN 的更多信息,请参阅 IAM ARN。有关适用于 Amazon Web Services 服务 的 Amazon 托管式策略的列表,请参阅 Amazon 托管式策略。
借助 Amazon 托管式策略,您可以方便地为用户、IAM 组和角色分配适当的权限。它比自己编写策略更快,并且包括许多常见使用案例的权限。
您不能更改 Amazon 托管策略中定义的权限。Amazon 有时会更新 Amazon 托管策略中定义的权限。在 Amazon 执行此操作时,更新会影响策略附加到的所有主体实体(IAM 用户、IAM 组和 IAM 角色)。在推出新的 Amazon 服务或为现有服务提供新的 API 调用时,Amazon 很可能会更新 Amazon 托管式策略。例如,名为 ReadOnlyAccess 的 Amazon 托管策略提供针对所有 Amazon Web Services 服务 和资源的只读访问权限。在 Amazon 推出新的服务时,Amazon 将更新 ReadOnlyAccess 策略,以便为新服务添加只读权限。更新的权限会应用于策略附加到的所有主体实体。
完全访问 Amazon 托管策略:这些策略通过授予对服务的完全访问权限来定义服务管理员的权限。示例包括:
高级用户 Amazon 托管策略:这些策略提供对 Amazon Web Services 服务 和资源的完全访问权限,但不允许管理用户和 IAM 组。示例包括:
部分访问 Amazon 托管策略:这些策略提供对 Amazon Web Services 服务 的特定访问级别,但不允许权限管理访问级别权限。示例包括:
工作职能 Amazon 托管策略:这些策略与 IT 行业中常用的工作职能密切相关,便于为这些工作职能授予权限。使用工作职能策略的一个重要优势是,在推出新的服务和 API 操作时,Amazon 对这些策略进行维护和更新。例如,AdministratorAccess 工作职能提供对 Amazon 中的每个服务和资源的完全访问权限和权限委派。我们建议您仅对账户管理员使用此策略。对于需要对 IAM 和 Organizations 的有限访问权限以及对其他每个服务的完全访问权限的高级用户,请使用 PowerUserAccess 工作职能。有关工作职能策略的列表和说明,请参阅工作职能的 Amazon 托管策略。
下图对 Amazon 托管策略进行说明。该图显示三个 Amazon 托管式策略:AdministratorAccess、PowerUserAccess 和 AmazonCloudTrail_ReadOnlyAccess。请注意,单个 Amazon 托管策略可以附加到不同 Amazon Web Services 账户 中的主体实体,并且可以附加到单个 Amazon Web Services 账户 中的不同主体实体。
客户托管策略
您可以在自己的 Amazon Web Services 账户 中创建可附加到主体实体(IAM 用户、IAM 组和 IAM 角色)的独立策略。您可以为特定使用案例创建这些客户管理型策略,并且可以根据需要随时更改和更新它们。与 Amazon 托管式策略一样,当您将策略附加到主体实体时,会向实体授予策略中定义的权限。当您更新策略中的权限时,这些更改将应用于策略所附加的所有主体实体。
创建客户托管策略的理想方式是:首先复制一个现有 Amazon 托管策略。这样从一开始您就可以确信策略是正确的,只需根据您的环境进行自定义即可。
下面的示意图对客户托管策略进行说明。每个策略都是 IAM 中的一个实体,有自己的 Amazon Resource Name (ARN),其中包含策略名称。请注意,同一策略可以附加到多个主体实体;例如,同一 DynamoDB-books-app 策略附加到两个不同的 IAM 角色。
有关更多信息,请参阅 使用客户管理型策略定义自定义 IAM 权限
内联策略
内联策略是为单个 IAM 身份(用户、用户组或角色)创建的策略。内联策略维持策略与身份之间严格的一对一关系。当您删除身份时,它们将会被删除。您可以创建策略并将其嵌入到身份中,无论是在创建身份时还是之后。如果一个策略可以应用于多个实体,则最好使用托管式策略。
下面的示意图对内联策略进行说明。每个策略都是用户、组或角色的固有部分。请注意,两个角色包含同一策略(DynamoDB-books-app 策略),但是它们不共享单个策略。每个角色都有自己的策略副本。