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

访问管理概述:权限和策略

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

策略和账户

如果您管理 AWS 中的单个账户,则使用策略定义该账户中的权限。如果您管理跨多个账户的权限,则管理用户的权限会比较困难。您可以将 IAM 角色、基于资源的策略或访问控制列表 (ACL) 用于跨账户权限。但是,如果您拥有多个账户,那我们建议您改用该 AWS Organizations 服务来帮助您管理这些权限。有关更多信息,请参阅 组织 用户指南 中的什么是 AWS Organizations?

策略和用户

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

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

在将此策略附加到您的 IAM 用户后,该用户将仅具有这些 DynamoDB 权限。大多数用户有多个策略共同代表该用户的权限。

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

IAM 控制台中提供了策略摘要 表,这些表总结了策略中对每个服务允许或拒绝的访问级别、资源和条件。策略在三个表中概括:策略摘要服务摘要操作摘要策略摘要表包含服务列表。选择其中的服务可查看服务摘要。该摘要表包含所选服务的操作和关联权限的列表。您可以选择该表中的操作以查看操作摘要。该表包含所选操作的资源和条件列表。


        阐释这 3 个表以及它们之间关系的策略摘要图

您可以在 Users 页面上查看附加到该用户的所有策略 (托管和内联) 的策略摘要。可在 Policies 页面上查看所有托管策略的摘要。

例如,在 AWS 管理控制台中汇总的上一个策略如下所示:


        DynamoDB 示例摘要

您还可以查看策略的 JSON 文档。有关查看摘要或 JSON 文档的信息,请参阅了解策略授予的权限

策略和组

可以将 IAM 用户组织为 IAM 组,然后将策略附加到组。这种情况下,各用户仍有自己的凭证,但是组中的所有用户都具有附加到组的权限。使用组可更轻松地管理权限,并遵循我们的 IAM 最佳实践


        用户可以组织为组,以便更轻松地管理权限,因为用户具有分配到组的权限。

用户或组可以附加授予不同权限的多个策略。这种情况下,用户的权限基于策略组合进行计算。不过基本原则仍然适用:如果未向用户授予针对操作和资源的显式权限,则用户没有这些权限。

联合身份用户和角色

联合身份用户无法通过与 IAM 用户相同的方式在您的 AWS 账户中获得永久身份。要向联合身份用户分配权限,可以创建称为角色 的实体,并为角色定义权限。当联合用户登录 AWS 时,该用户会与角色关联,被授予角色中定义的权限。有关更多信息,请参阅 针对第三方身份提供商创建角色 (联合)

基于身份和基于资源的策略

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

基于身份的策略控制身份可以在哪些条件下对哪些资源执行哪些操作。基于身份的策略可以进一步分类:

  • 托管策略 – 基于身份的独立策略,可附加到您的 AWS 账户中的多个用户、组和角色。您可以使用两个类型的托管策略:

    • AWS 托管策略 – 由 AWS 创建和管理的托管策略。如果您刚开始使用策略,建议先使用 AWS 托管策略。

    • 客户托管策略 – 您在 AWS 账户中创建和管理的托管策略。与 AWS 托管策略相比,客户托管策略可以更精确地控制策略。您可以在可视化编辑器中创建和编辑 IAM 策略,也可以直接创建 JSON 策略文档以创建和编辑该策略。有关更多信息,请参阅 创建 IAM 策略编辑 IAM 策略

  • 内联策略 – 由您创建和管理的策略,直接嵌入在单个用户、组或角色中。大多数情况下,我们不建议使用内联策略。

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

IAM 服务仅支持一种类型的基于资源的策略(称为角色信任策略),这种策略附加到 IAM 角色。由于 IAM 角色同时是支持基于资源的策略的身份和资源,因此,您必须同时将信任策略和基于身份的策略附加到 IAM 角色。信任策略定义哪些委托人实体(账户、用户、角色和联合身份用户)可以代入该角色。要了解 IAM 角色如何与其他基于资源的策略不同,请参阅IAM 角色与基于资源的策略有何不同

要了解哪些服务支持基于资源的策略,请参阅使用 IAM 的 AWS 服务。要了解基于资源的策略的更多信息,请参阅基于身份的策略和基于资源的策略