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

创建向 IAM 用户委派权限的角色

您可以使用 IAM 角色委派对 AWS 资源的访问权限。利用 IAM 角色,您可以在您的信任 账户和其他 AWS 可信 账户之间建立信任关系。信任账户拥有要访问的资源,可信账户包含需要资源访问权限的用户。

创建信任关系后,来自受信任账户的 IAM 用户或应用程序可以使用 AWS Security Token Service (AWS STS) AssumeRole API 操作。此操作提供临时安全凭证,可用于访问您账户中的 AWS 资源。

账户可由您进行控制,或者具有用户的账户可由第三方进行控制。如果另一个具有用户的账户位于您无法控制的 AWS 账户中,您可以使用 externalID 属性和第三方账户提供的唯一标识符。这有助于确保仅在正确的上下文中进行访问。有关更多信息,请参阅 如何在向第三方授予对 AWS 资源的访问权时使用外部 ID

有关如何使用角色委派权限的信息,请参阅角色术语和概念。有关使用服务角色以允许服务访问账户中的资源的信息,请参阅创建向 AWS 服务委托权限的角色

创建 IAM 角色 (控制台)

您可以使用 AWS 管理控制台创建 IAM 用户可代入的角色。例如,假设贵组织拥有多个 AWS 账户以便将开发环境与生产环境隔离。要查看设置和使用角色 (该角色允许开发账户中的用户访问生产账户中的资源) 的必要步骤的概述,请参阅 使用不同的开发和生产账户的示例方案

创建角色 (控制台)

  1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/

  2. 在控制台的导航窗格中,选择 Roles,然后选择 Create role

  3. 选择 Another AWS account 角色类型。

  4. 对于 Account ID,键入您希望向其授予对资源的访问权限的 AWS 账户 ID。

    指定账户的管理员可向该账户中的任何 IAM 用户授予代入该角色的权限。为此,管理员需要将策略附加到用户或组来授予 sts:AssumeRole 操作的权限。该策略必须指定角色的 ARN 作为 Resource

  5. 如果您正在从您无法控制的账户向用户授予权限,请选择 Require external ID。外部 ID 可以是您和第三方账户管理员之间达成一致的任何字词或数字。此选项会在信任策略中自动添加一个条件,即仅当请求包括正确的 sts:ExternalID 时,该用户才代入该角色。有关更多信息,请参阅 如何在向第三方授予对 AWS 资源的访问权时使用外部 ID

    重要

    选择此选项将仅允许通过 AWS CLI、Windows PowerShell 工具 或 AWS API 访问该角色。这是因为,您不能使用 AWS 控制台切换到其信任策略中有 externalID 条件的角色。但您可以通过使用相关软件开发工具包编写脚本或应用程序,以编程方式创建此类访问。有关更多信息和示例脚本,请参阅 AWS 安全博客中的 How to Enable Cross-Account Access to the AWS 管理控制台

  6. 如果需要将该角色限制为使用 Multi-Factor Authentication (MFA) 进行登录的用户,请选择 Require MFA。这将向角色的信任策略中添加用于检查 MFA 登录的条件。需要代入角色的用户必须使用配置的 MFA 设备中的临时一次性密码进行登录。没有经过 MFA 身份验证的用户无法担任该角色。有关 MFA 的更多信息,请参阅在 AWS 中使用多重验证 (MFA)

  7. 选择 Next: Permissions

  8. 选择一个或多个要附加到角色的权限策略。选择规定可以对特定资源执行哪些操作的策略 (类似于为 IAM 组设置权限)。有关使用策略来管理权限的信息,请参阅IAM 策略

    使用角色的任何实体都可以使用您指定的权限。默认情况下,角色没有权限。

    选中用于分配您希望用户拥有的权限的策略旁的框。然后选择 Next: Review。如果您愿意,可以选择此时不选择策略,稍后创建策略,然后将这些策略附加到角色。

  9. 对于 Role name,为您的角色键入一个名称。该名称可帮助您确定角色的用途。角色名称在您的 AWS 账户内必须是唯一的。名称不区分大小写。例如,您无法同时创建名为 PRODROLEprodrole 的角色。由于多个单位可能引用该角色,角色创建完毕后无法编辑角色名称。

  10. (可选) 对于 Role description,键入新角色的描述。

  11. 检查角色,然后选择 Create role

    重要

    请注意,这只是所需配置的前半部分。您还必须对可信账户中的各个用户授予切换角色的权限。有关这一步骤的更多信息,请参阅向用户授予切换角色的权限

在创建角色并向该角色授予执行 AWS 任务或访问 AWS 资源的权限后,用户可以代入该角色。有关更多信息,请参阅 切换到角色 (AWS 管理控制台)

创建 IAM 角色 (AWS CLI)

从 AWS CLI 创建角色涉及几个步骤。当您使用控制台创建角色时,很多步骤会自动完成,但是使用 AWS CLI 时,您必须自行完成每一个步骤。您必须创建策略并向角色分配权限策略。

创建用于跨账户访问的角色 (AWS CLI)

以下示例在一个简单环境中演示了全部两个步骤。该示例假定您正在使用运行 Windows 的客户端计算机,并且已使用您的账户凭证和区域配置命令行界面。有关更多信息,请参阅配置 AWS 命令行界面

第一个命令中引用的示例信任策略包含以下 JSON 代码。它使账户 123456789012 中的用户能够担任角色,前提是用户要提供 MFA 身份验证。有关 MFA 的更多信息,请参阅 在 AWS 中使用多重验证 (MFA)

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "AWS": "arn:aws-cn:iam::123456789012:root" }, "Action": "sts:AssumeRole", "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } } } }

重要

如果 Principal 元素中包含指向特定 IAM 角色或用户的 ARN,在保存策略时该 ARN 将转换为唯一的委托人 ID。如果有人希望通过删除并重新创建角色或用户来提升特权,这样有助于减轻此类风险。您通常不会在控制台中看到这个 ID,因为显示信任策略时它还会反向转换为 ARN。但是,如果您删除角色或用户,这种关系即被打破。即使您重新创建用户或角色,策略也不再适用。因为与信任策略中存储的 ID 不匹配。在这种情况下,委托人 ID 会显示在控制台中,因为 AWS 无法将其映射回 ARN。结果是,如果您删除并重新创建了信任策略的 Principal 元素所引用的用户或角色,您必须编辑角色,替换 ARN。当您保存策略时,用户或角色会转换为新的委托人 ID。

假设第二个命令中引用的托管策略已经存在于 IAM 中。此策略允许承担该角色的用户仅对名为 example_bucket 的 S3 存储桶执行 ListBucket 操作。该策略类似于以下内容:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws-cn:s3:::example_bucket" } }

要运行的命令如下:

# Create the role and attach the trust policy that allows users in an account to switch to the role. $ aws iam create-role --role-name Test-UserAccess-Role --assume-role-policy-document file://C:\policies\trustpolicyforacct123456789012.json # Attach the permissions policy (in this example a managed policy) to the role to specify what it is allowed to do. $ aws iam attach-role-policy --role-name Test-UserAccess-Role --policy-arn arn:aws-cn:iam::123456789012:role/PolicyForRole

重要

请注意,这只是所需配置的前半部分。您还必须对可信账户中的各个用户授予切换角色的权限。有关这一步骤的更多信息,请参阅向用户授予切换角色的权限

在创建角色并向该角色授予执行 AWS 任务或访问 AWS 资源的权限后,用户可以切换到该角色。有关更多信息,请参阅 切换到 IAM 角色 (AWS Command Line Interface)

创建 IAM 角色 (AWS API)

您可以使用 API 调用创建 IAM 用户可切换到的角色。

在代码中创建角色 (API)

  • 创建角色:CreateRole

    您可以指定一个文件位置作为角色的信任策略。

  • 将托管权限策略附加到角色:AttachRolePolicy

    -或者-

    为角色创建内联权限策略:PutRolePolicy

重要

请注意,这只是所需配置的前半部分。您还必须对可信账户中的各个用户授予切换角色的权限。有关这一步骤的更多信息,请参阅向用户授予切换角色的权限

在创建角色并向该角色授予执行 AWS 任务或访问 AWS 资源的权限后,用户可以切换到该角色。有关更多信息,请参阅 切换到 IAM 角色 (API)

有关 MFA 的更多信息,请参阅 在 AWS 中使用多重验证 (MFA)