权限和策略如何提供访问管理 - AWS Identity and Access Management

权限和策略如何提供访问管理

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

策略和账户

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

策略和用户

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

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

在将此策略附加到您的 IAM 用户后,该用户有权在 DynamoDB 实例的 Books 表中执行所有操作。大多数 IAM 用户都有多个策略,这些策略组合在一起代表其授予的总权限。

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

策略和 IAM 组

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

此图显示如何将 IAM 用户组织为 IAM 组,以便更轻松地管理权限,因为每个 IAM 用户都具有分配到 IAM 组的权限。

IAM 用户或 IAM 组可以附加授予不同权限的多个策略。在这种情况下,策略的组合决定了主体的有效权限。如果主体对操作和资源没有显式 Allow 权限,则主体没有这些权限。

联合用户和角色

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

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

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

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

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

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

    • 客户管理型策略 – 您在 AWS 账户 中创建和管理的管理型策略。与 AWS 托管策略相比,客户托管策略可以更精确地控制策略。您可以在可视化编辑器中创建、编辑和验证 ,它是一项 IAM policy,也可以直接创建 JSON 策略文档以创建和编辑该策略。有关更多信息,请参阅 使用客户管理型策略定义自定义 IAM 权限编辑 IAM 策略

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

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

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

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