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

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

AWS Identity and Access Management (IAM) 的访问管理部分帮助定义用户或其他实体可在账户内执行的操作,通常称为授权。权限是通过策略授予的。策略是 AWS 中的一个实体;在附加到身份或资源时,策略定义了它们的权限。在委托人 (如用户) 发出请求时,AWS 将评估这些策略。策略中的权限确定是允许还是拒绝请求。策略作为 JSON 文档存储在 AWS 中,它们作为基于身份的策略 附加到委托人或作为基于资源的策略 附加到资源。

策略和用户

默认情况下,IAM 用户无法访问您账户中的任何内容。您可以创建基于身份的策略以便为用户授予权限,这是一个附加到用户的策略。以下示例说明了一个策略,它授予权限以在 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 用户、角色或组)。基于资源的策略是附加到资源 (如 Amazon S3 存储桶) 的 JSON 策略文档。

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

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

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

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

  • 内联策略 – 由您创建和管理并直接嵌入 到单个用户、组或角色的策略。

基于资源的策略控制指定的委托人可以在何种条件下对该资源执行哪些操作。基于资源的策略是内联策略,没有基于资源的托管策略。

虽然 IAM 身份从技术上是 AWS 资源,但无法将基于资源的策略附加到 IAM 身份。您必须在 IAM 中使用基于身份的策略。要了解哪些服务支持基于资源的策略,请参阅使用 IAM 的 AWS 服务。要了解基于资源的策略的更多信息,请参阅基于身份的策略和基于资源的策略

信任策略 是附加到角色的基于资源的策略,这些策略定义了可担任该角色的委托人。在 IAM 中创建角色时,该角色必须具有以下两项内容:第一个是指示哪个用户可担任该角色的信任策略。第二个是指示他们可使用该角色执行哪些操作的权限策略。请记住,将账户添加到角色的信任策略只是建立信任关系工作的一半而已。默认情况下,可信账户中的任何用户均无法代入角色,直至该账户的管理员向用户授予代入角色的权限。有关更多信息,请参阅 向用户授予切换角色的权限

重要

在整个 AWS 文档中,在提及 IAM 策略而未提到上面的任何特定类别时,我们指的是基于身份的客户托管策略。

当用户尝试在 AWS 中执行操作时,IAM 检查用户、其组或受影响的资源具有的所有策略。如果将基于身份的策略和基于资源的策略应用于同一操作,则这两个策略都必须允许执行该操作。这意味着,基于身份的策略必须允许对资源执行该操作。这意味着,基于资源的策略还必须允许进行调用的委托人执行该操作。

例如,在 Amazon S3 中,您可以将基于资源的策略附加到存储桶。这称为存储桶策略。以下示例说明了一个 S3 存储桶策略,它允许 AWS 账户 777788889999 中名为 bob 的 IAM 用户将对象放入附加了该策略的存储桶中。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": "arn:aws-cn:iam::777788889999:user/bob"}, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ] } }

基于资源的策略包括 Principal 元素,它指定授予了权限的用户。在前面的示例中,Principal 元素被设置为 AWS 账户 777788889999 中名为 bob 的 IAM 用户的 Amazon 资源名称 (ARN)。这表示该资源 (在此示例中为 S3 存储桶) 可供 IAM 用户访问,但不能供任何其他人访问。