AWS Identity and Access Management
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

向用户授予许可以将角色传递给 AWS 服务

要配置许多 AWS 服务,您必须将 IAM 角色传递 给定义何种服务可由您代表执行的服务。例如,如要提供在具有 AWS 凭证的 Amazon EC2 实例上运行的应用程序,必须将角色与提供这些凭证的实例传递给 EC2 以供使用。您定义了哪些凭证允许实例上运行的应用程序可通过附加将必须的许可授予角色的 IAM 策略进行执行。

要将角色 (及其许可) 传递至 AWS 服务,用户必须具有传递角色 至服务的许可。这有助于管理员确保仅批准的用户可配置具有能够授予许可的角色的服务。要允许用户将角色传递至 AWS 服务,您必须向用户的 IAM 用户、角色或组授予PassRole许可。

当用户将角色 ARN 作为参数传递给任何使用角色向服务分配许可的 API 时,服务会检查用户是否具有 iam:PassRole 许可。要限制用户只传递批准的角色,您可以使用 IAM 策略语句的iam:PassRole元素筛选Resources 许可。

示例 1

假设您要授予用户在启动实例时能够将任意批准角色组传递至 Amazon EC2 服务的能力。您需要三个部分:

  • IAM 许可策略 附加到确定角色可执行哪些任务的角色。将许可限定为仅角色需要进行的操作,以及仅为进行这些操作角色需要的资源。您可以使用 AWS 管理的或客户创建的 IAM 权限策略。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "A list of the permissions the role is allowed to use" ], "Resource": [ "A list of the resources the role is allowed to access" ] } }
  • 允许服务代入角色的信任策略。例如,您可以将以下信任策略与具有 UpdateAssumeRolePolicy 操作的角色进行附加。该信任策略允许 Amazon EC2 使用角色和附加在角色上的许可。

    { "Version": "2012-10-17", "Statement": { "Sid": "TrustPolicyStatementThatAllowsEC2ServiceToAssumeTheAttachedRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  • IAM 许可策略 附加至允许用户仅授予这些被批准策略的 IAM 用户。iam:PassRole 通常与 iam:GetRole 共同使用,使用户能够获取准备进行传递的角色的详细信息。在此示例中,用户只能传递位于指定账户中并且名称以 EC2-roles-for-XYZ- 开头的角色:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws-cn:iam::<account-id>:role/EC2-roles-for-XYZ-*" }] }

现在用户可以启动具有所分配角色的 Amazon EC2实例。实例上运行的应用程序可以通过实例配置文件元数据访问角色的临时许可。附加到角色的许可策略确定实例可以执行的任务。

示例 2

Amazon Relational Database Service (Amazon RDS) 支持名为增强监控的功能。此功能使 Amazon RDS 能够使用代理监控数据库实例。它还允许 Amazon RDS 将指标记录到 Amazon CloudWatch Logs。要启用此功能,您必须创建一个服务角色,以便为 Amazon RDS 提供监控指标和将指标写入日志的权限。

如要为 Amazon RDS 强化监控创建角色

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

  2. 选择 Role,然后选择 Create role

  3. 选择 AWS Service 角色类型,然后选择 Amazon RDS Role for Enhanced Monitoring 服务。然后选择 Next: Permissions

  4. 选择 AmazonRDSEnhancedMonitoringRole 权限策略,然后选择 Next: Review

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

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

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

角色自动获得授予 monitoring.rds.amazonaws.com 服务代入角色许可的信任策略。在此之后,Amazon RDS 可执行 AmazonRDSEnhancedMonitoringRole 策略允许的所有操作。

您希望启用强化监控的用户需要包括允许用户传递角色语句的策略,如下。使用您的账户号码,然后使用您在步骤 3 中提供的名称替换角色名称:

{ "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws-cn:iam:::role/RDS-Monitoring-Role" }

您可以将该语句与另一策略中的语句进行合并,或将此语句放在其自身策略中。如要指定用户可传递以 RDS-开始的任何角色,您可以在资源 ARN 中使用通配符替换角色名称,例如:

"Resource": "arn:aws-cn:iam:::role/RDS-*"