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

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

要配置多项 AWS 服务,您必须将 IAM 角色传递给相应服务。这样可允许服务稍后代入此角色并代表您执行操作。您只需要在设置期间 (而不是服务每次代入角色时) 将角色传递给服务。例如,假定您的一款应用程序在 Amazon EC2 实例上运行。该应用程序需要临时凭证来进行身份验证,以及授权应用程序在 AWS 中执行操作的权限。在设置该应用程序时,您必须将角色传递给 EC2,以便与提供这些凭证的实例一起使用。通过向角色附加 IAM 策略,您为在实例上运行的应用程序定义权限。该应用程序每次需要执行角色允许的操作时都会代入该角色。

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

在创建服务相关角色时,您还必须拥有将该角色传递给服务的权限。在某些服务中执行操作时,该服务自动在您的账户中创建一个服务相关角色。例如,在首次创建 Auto Scaling 组时,Amazon EC2 Auto Scaling 为您创建 AWSServiceRoleForAutoScaling 服务相关角色。如果您在不具备 PassRole 权限的情况下尝试创建 Auto Scaling 组,则会收到错误。要了解哪些服务支持服务相关角色,请参阅使用 IAM 的 AWS 服务。要了解在哪些服务中执行操作时自动创建服务相关角色,请选择链接并查看该服务的服务相关角色文档。

在任何使用角色分配服务权限的 API 操作中,用户都可以将角色 ARN 作为参数进行传递。该服务随后检查该用户是否拥有 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.cn" }, "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.cn 服务代入角色许可的信任策略。在此之后,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-*"