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

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

许多 AWS 服务要求您利用角色控制该服务可以访问的内容。由一项服务担任、代表您执行操作的角色称为服务角色。如果按服务角色适用的特定目的进行分类,可分为 EC2 实例的服务角色 (举例),或服务相关角色。请参阅每种服务的 AWS 文档,以了解它是否使用角色以及如何分配角色以供服务使用。

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

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

您可使用 AWS 管理控制台创建用于服务的角色。由于某些服务支持多个服务角色,因此,请参阅您的服务的 AWS 文档以查看要选择的使用案例。您可以了解如何为角色分配必要的信任策略和权限策略,以便服务能够代表您代入角色。

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

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

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

  3. 选择 AWS Service 角色类型,然后选择要允许代入此角色的服务。

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

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

    • 定义角色使用的权限

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

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

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

    选中用于分配您希望用户拥有的权限的策略旁的框,然后选择 Next: Review

    注意

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

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

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

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

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

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

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

要从 AWS CLI 创建用于 AWS 服务的角色,请使用以下命令:

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

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

    或者

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

如果要将角色与 Amazon EC2 或使用 Amazon EC2 的其他 AWS 服务结合使用,则必须将角色存储在实例配置文件中。实例配置文件是一个角色容器,可在启动时附加到 Amazon EC2 实例。一个实例配置文件只能包含一个角色,不能提高该限制。如果使用 AWS 管理控制台创建角色,则会为您创建具有与角色相同的名称的实例配置文件。有关实例配置文件的更多信息,请参阅使用实例配置文件。有关如何通过角色启动 EC2 实例的信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的控制对 Amazon EC2 资源的访问

要创建实例配置文件并从 AWS CLI 向其添加角色,请使用以下命令:

以下示例说明所有四个步骤。该示例假定您在运行 Windows 的客户端计算机上工作,并且已经使用您的账户凭证和区域配置了命令行界面。有关更多信息,请参阅配置 AWS 命令行界面

第一个命令中引用的示例信任策略包含以下 JSON 代码,以使 Amazon EC2 服务能够担任该角色。

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

第二个命令中引用的示例权限策略仅允许该角色对名为 example_bucket 的 S3 存储桶执行 ListBucket 操作。要了解如何使用该示例 JSON 策略文档创建 IAM 策略,请参阅在 JSON 选项卡上创建策略

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

要为此示例运行的 AWS CLI 命令如下所示:

# Create the role and attach the trust policy that enables EC2 to assume this role. $ aws iam create-role --role-name Test-Role-for-EC2 --assume-role-policy-document file://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

启动 EC2 实例时,如果您使用 AWS 控制台,请在 Configure Instance Details 页面上指定实例配置文件名称。如果使用 aws ec2 run-instances CLI 命令,请指定 --iam-instance-profile 参数。

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

您可以使用 AWS API 创建服务角色。

在代码中创建服务角色 (API)

使用以下命令:

  • 创建角色:CreateRole

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

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

    或者

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

如果要将角色与 Amazon EC2 或使用 Amazon EC2 的其他 AWS 服务结合使用,则必须将角色存储在实例配置文件中。实例配置文件是角色的容器。每个实例配置文件只能包含一个角色,不能提高该限制。如果在 AWS 管理控制台中创建角色,则为您创建具有与角色相同的名称的实例配置文件。有关实例配置文件的更多信息,请参阅使用实例配置文件。有关如何通过角色启动 Amazon EC2 实例的信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的控制对 Amazon EC2 资源的访问