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

创建向 AWS 服务委派权限的角色

许多 AWS 服务要求您使用角色来允许该服务代表您访问其他服务中的资源。由一项服务担任、代表您执行操作的角色称为服务角色。如果按服务角色适用的特定目的进行分类,可分为 EC2 实例的服务角色 (举例),或服务相关角色。要查看哪些服务支持使用服务相关角色,或服务是否支持任何形式的临时凭证,请参阅 使用 IAM 的 AWS 服务。要了解单个服务如何使用角色,请选择表格中的服务名称以查看该服务对应的文档。

有关如何通过角色委派权限的信息,请参阅角色术语和概念

注意

服务相关角色的 ARN 包括服务委托人,它在以下策略中显示为 SERVICE-NAME.amazonaws.com。请勿尝试猜测服务委托人,因为它区分大小写,并且格式会因 AWS 服务而异。要查看服务的服务委托人,请参阅其服务相关角色文档。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateSpecificRoleForSpecificService", "Effect": "Allow", "Action": "iam:CreateRole", "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME", "Condition": {"StringLike": {"iam:AWSServiceName": "SERVICE-NAME.amazonaws.com"}} }, { "Sid": "AddPoliciesToSpecificRole", "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" } ] }
{ "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:CreateRole", "iam:PutRolePolicy" ], "Resource": "*" }
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EditSpecificServiceRole", "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies", "iam:PutRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" }, { "Sid": "ViewRolesAndPolicies", "Effect": "Allow", "Action": [ "iam:GetPolicy", "iam:ListRoles" ], "Resource": "" } ] }
{ "Effect": "Allow", "Action": "iam:DeleteRole", "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" }
{ "Effect": "Allow", "Action": "iam:DeleteRole", "Resource": "*" }

创建用于 AWS 服务的角色(控制台)

您可使用 AWS 管理控制台创建用于服务的角色。您可以了解如何为角色分配必要的信任策略和权限策略,以便服务能够代表您代入角色。可用于控制您的角色的权限的步骤可能会有所不同,具体取决于服务如何定义使用案例,以及您是否创建了服务相关角色。

创建用于 AWS 服务的角色(控制台)

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

  2. 在 IAM 控制台的导航窗格中,选择 Roles (角色),然后选择 Create role (创建角色)

  3. 对于 Select type of trusted entity (选择受信任实体的类型),选择 AWS service (AWS 服务)

  4. 选择您希望允许其承担此角色的服务。

  5. 选择用于您的服务的使用案例。如果指定的服务只有一个使用案例,则系统会为您选择此使用案例。使用案例由服务定义以包含服务要求的信任策略。然后选择 Next: Permissions

  6. 选择一个或多个要附加到角色的权限策略。根据您选择的使用案例,服务可能执行以下任意操作:

    • 定义角色使用的权限

    • 允许您从一组有限的权限中进行选择

    • 允许您从任意权限中进行选择

    • 允许您此时不选择策略,稍后创建策略,然后将这些策略附加到角色

    如果可能,选择要用作权限策略的策略,或选择创建策略以打开新的浏览器选项卡并从头开始创建新策略。有关更多信息,请参阅过程创建 IAM 策略(控制台)中的步骤 4。在您创建策略后,关闭该选项卡并返回到您的原始选项卡。选中您希望服务具有的权限策略旁边的复选框。

  7. 如果可能,选中分配您希望用户具有的权限的策略旁边的复选框。

  8. (可选)设置权限边界。这是一项高级功能,可用于服务角色,但不可用于服务相关角色。

    选择要用于权限边界的策略,或选择创建策略以打开新的浏览器选项卡并从头开始创建新策略。有关更多信息,请参阅过程创建 IAM 策略(控制台)中的步骤 4。在您创建策略后,关闭该选项卡并返回到您的原始选项卡,以选择要用于权限边界的策略。

  9. 选择 Next: Review

  10. 对于 Role name,角色名称自定义的程度由服务定义。如果服务定义角色的名称,则此选项不可编辑。在其他情况下,服务可能定义角色的前缀并允许您键入可选的后缀。某些服务允许您指定角色的整个名称。

    如果可能,键入角色名称或角色名称后缀。角色名称在您的 AWS 账户内必须是唯一的。名称不区分大小写。例如,您无法同时创建名为 PRODROLEprodrole 的角色。由于其他 AWS 资源可能引用该角色,角色创建完毕后无法编辑角色名称。

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

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

创建用于服务的角色 (AWS CLI)

从 AWS CLI 创建角色涉及几个步骤。当您使用控制台创建角色时,很多步骤会自动完成,但是使用 AWS CLI 时,您必须自行完成每一个步骤。您必须创建角色,然后为角色分配权限策略。如果您使用的服务是 Amazon EC2,则还必须创建实例配置文件并向其添加角色。(可选)您还可以为您的角色设置权限边界

  1. 创建角色:aws iam create-role

  2. 将托管权限策略附加到角色:aws iam attach-role-policy

    或者

    为角色创建内联权限策略:aws iam put-role-policy

  3. (可选)为角色设置权限边界aws iam put-role-permissions-boundary

    权限边界控制角色可以具有的最大权限。权限边界是一项高级 AWS 功能。

实例配置文件是一个角色容器,可在启动时附加到 Amazon EC2 实例。一个实例配置文件只能包含一个角色,不能提高该限制。如果使用 AWS 管理控制台创建角色,则会为您创建具有与角色相同的名称的实例配置文件。有关实例配置文件的更多信息,请参阅使用实例配置文件

创建实例配置文件并在其中存储角色 (AWS CLI)

  1. 创建实例配置文件:aws iam create-instance-profile

  2. 向实例配置文件添加角色:aws iam add-role-to-instance-profile

以下示例演示了创建角色并附加权限的前两个步骤。它还演示了创建实例配置文件并将角色添加到该配置文件中的两个步骤。此示例还假定您在运行 Windows 的客户端计算机上工作,并且已经用您的账户凭证和区域配置了命令行界面。有关更多信息,请参阅配置 AWS 命令行界面

在此示例中,在您创建角色时,在第一个命令中包括以下信任策略。此信任策略允许 Amazon EC2 服务代入角色。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"Service": "ec2.amazonaws.com.cn"}, "Action": "sts:AssumeRole" } }

当您使用第二个命令时,您必须将权限策略附加到角色。

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

要创建此 Test-Role-for-EC2 角色,您必须首先将上述名为 trustpolicyforec2.json 的信任策略和上述名为 permissionspolicyforec2.json 的权限策略保存到您的本地 policies 驱动器中的 C: 目录。然后,您可以使用以下命令来创建角色,附加策略,创建实例配置文件,并将角色添加到实例配置文件中。

# Create the role and attach the trust policy that allows EC2 to assume this role. $ aws iam create-role --role-name Test-Role-for-EC2 --assume-role-policy-document file://C:\policies\trustpolicyforec2.json # Embed the permissions policy (in this example an inline policy) to the role to specify what it is allowed to do. $ aws iam put-role-policy --role-name Test-Role-for-EC2 --policy-name Permissions-Policy-For-Ec2 --policy-document file://permissionspolicyforec2.json # Create the instance profile required by EC2 to contain the role $ aws iam create-instance-profile --instance-profile-name EC2-ListBucket-S3 # Finally, add the role to the instance profile $ aws iam add-role-to-instance-profile --instance-profile-name EC2-ListBucket-S3 --role-name Test-Role-for-EC2

如果使用 aws ec2 run-instances CLI 命令,请指定 --iam-instance-profile 参数。

创建用于服务的角色 (AWS API)

从 AWS API 创建角色涉及几个步骤。当您使用控制台创建角色时,很多步骤会自动完成,但是使用 API 时,您必须自行完成每一个步骤。您必须创建角色,然后为角色分配权限策略。如果您使用的服务是 Amazon EC2,则还必须创建实例配置文件并向其添加角色。(可选)您还可以为您的角色设置权限边界

  1. 创建角色:CreateRole

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

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

    或者

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

  3. (可选)为角色设置权限边界PutRolePermissionsBoundary

    权限边界控制角色可以具有的最大权限。权限边界是一项高级 AWS 功能。

实例配置文件是角色的容器。每个实例配置文件只能包含一个角色,不能提高该限制。如果在 AWS 管理控制台中创建角色,则为您创建具有与角色相同的名称的实例配置文件。有关实例配置文件的更多信息,请参阅使用实例配置文件

创建实例配置文件并在其中存储角色 (AWS API)

  1. 创建实例配置文件:CreateInstanceProfile

  2. 向实例配置文件添加角色:AddRoleToInstanceProfile