创建向 Amazon 服务委派权限的角色
许多 Amazon 服务要求您使用角色来允许该服务代表您访问其他服务中的资源。由一项服务担任、代表您执行操作的角色称为服务角色。当某角色为某项服务提供专门用途时,它会被归类为服务相关角色。要查看哪些服务支持使用服务相关角色,或服务是否支持任何形式的临时凭证,请参阅 使用 IAM 的 Amazon 服务。要了解单个服务如何使用角色,请选择表格中的服务名称以查看该服务对应的文档。
设置 PassRole 权限时,应确保用户所传递角色的权限不会超过您希望该用户拥有的权限。例如,可能不允许 Alice 执行任何 Amazon S3 操作。如果 Alice 可以将角色传递给允许 Amazon S3 操作的服务,则该服务可以在执行作业时代表 Alice 执行 Amazon S3 操作。
有关如何通过角色委派权限的信息,请参阅角色术语和概念。
服务角色权限
您必须配置权限以允许 IAM 实体(用户或角色)创建或编辑服务角色。
注意
服务相关角色的 ARN 包括服务主体,它在以下策略中显示为 SERVICE-NAME.amazonaws.com
允许 IAM 实体创建特定服务角色
将以下策略添加到需要创建服务角色的 IAM 实体中。此策略允许您为指定服务创建具有特定名称的服务角色。然后,可将托管或内联策略附加到该角色。
允许 IAM 实体创建任何服务角色
Amazon 建议您只允许管理用户创建任何服务角色。拥有创建角色和附加任何策略权限的人员可以升级自己的权限。相反,应创建一个策略,允许他们仅创建他们所需的角色,或者让管理员代表他们创建服务角色。
要附加允许管理员访问您整个 Amazon Web Services 账户 的策略,请使用 AdministratorAccess
允许 IAM 实体编辑服务角色
将以下策略添加到需要编辑服务角色的 IAM 实体中。
允许 IAM 实体删除特定服务角色
将以下语句添加到需要删除指定服务角色的 IAM 实体的权限策略。
{ "Effect": "Allow", "Action": "iam:DeleteRole", "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" }
允许 IAM 实体删除任何服务相关角色
Amazon 建议您只允许管理用户删除任何服务角色。相反,应创建一个策略,允许他们仅删除他们所需的角色,或者让管理员代表他们删除服务角色。
要附加到允许管理员访问您整个 Amazon Web Services 账户 的策略,请使用 AdministratorAccess
创建用于 Amazon 服务的角色(控制台)
您可使用 Amazon Web Services Management Console创建用于服务的角色。由于某些服务支持多个服务角色,请参阅您的服务的 Amazon 文档以查看要选择的使用案例。您可以了解如何为角色分配必要的信任策略和权限策略,以便服务能够代表您担任角色。可用于控制您的角色的权限的步骤可能会有所不同,具体取决于服务如何定义使用案例,以及您是否创建了服务相关角色。
创建用于服务的角色 (Amazon CLI)
从 Amazon CLI 创建角色涉及几个步骤。当您使用控制台创建角色时,很多步骤会自动完成,但是使用 Amazon CLI 时,您必须自行完成每一个步骤。您必须创建角色,然后为角色分配权限策略。如果您使用的服务是 Amazon EC2,则还必须创建实例配置文件并向其添加角色。(可选)您还可以为您的角色设置权限边界。
从 Amazon 为 Amazon CLI 服务创建角色
- 
        以下 create-role命令创建了一个名为 Test-Role 的角色并向其附加了信任策略:aws iam create-role --role-name Test-Role --assume-role-policy-document file://Test-Role-Trust-Policy.json
- 
        将托管权限策略附加到角色:aws iam attach-role-policy。 例如,以下内容 attach-role-policy命令将名为ReadOnlyAccess的附加 Amazon 托管策略附加到了名为ReadOnlyRole的 IAM 角色:aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess --role-name ReadOnlyRole或 为角色创建内联权限策略:aws iam put-role-policy 要添加内联权限策略,请参阅以下示例: aws iam put-role-policy --role-name Test-Role --policy-name ExamplePolicy --policy-document file://AdminPolicy.json
- 
        (可选)通过附加标签来向角色添加自定义属性:aws iam tag-role 有关更多信息,请参阅 管理 IAM 角色(Amazon CLI 或 Amazon API)的标签。 
- 
        (可选)为角色设置权限边界:aws iam put-role-permissions-boundary 权限边界控制角色可以具有的最大权限。权限边界是一项高级 Amazon 功能。 
如果要将角色与 Amazon EC2 或使用 Amazon EC2 的其他 Amazon 服务结合使用,则必须将角色存储在实例配置文件中。实例配置文件是一个角色容器,可在启动时附加到 Amazon EC2 实例。一个实例配置文件只能包含一个角色,不能提高该限制。如果使用 Amazon Web Services Management Console创建角色,则会为您创建具有与角色相同的名称的实例配置文件。有关实例配置文件的更多信息,请参阅使用实例配置文件。有关如何通过角色启动 EC2 实例的信息,请参阅《Amazon EC2 用户指南》中的控制对 Amazon EC2 资源的访问。
创建实例配置文件并在其中存储角色 (Amazon CLI)
- 
        创建实例配置文件:aws iam create-instance-profile 
- 
        向实例配置文件添加角色:aws iam add-role-to-instance-profile 
以下 Amazon CLI 示例命令集演示了创建角色并附加权限的前两个步骤。它还演示了创建实例配置文件并将角色添加到该配置文件中的两个步骤。此示例信任策略允许 Amazon EC2 服务担任角色并查看 example_bucket Amazon S3 存储桶。该示例还假设您使用运行 Windows 的客户端计算机,并且已使用您的账户凭证和区域配置了命令行界面。有关更多信息,请参阅配置 Amazon 命令行界面。
在此示例中,在您创建角色时,在第一个命令中包括以下信任策略。此信任策略允许 Amazon EC2 服务代入角色。
当您使用第二个命令时,您必须将权限策略附加到角色。下面的示例权限策略仅允许角色对 example_bucket Amazon S3 存储桶执行 ListBucket 操作。
要创建此 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://C:\policies\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 实例时,如果您使用 Amazon 控制台,请在 Configure Instance Details (配置实例详细信息) 页面中指定实例配置文件名称。如果使用 aws ec2 run-instances CLI 命令,请指定 --iam-instance-profile 参数。
创建用于服务的角色 (Amazon API)
从 Amazon API 创建角色涉及几个步骤。当您使用控制台创建角色时,很多步骤会自动完成,但是使用 API 时,您必须自行完成每一个步骤。您必须创建角色,然后为角色分配权限策略。如果您使用的服务是 Amazon EC2,则还必须创建实例配置文件并向其添加角色。(可选)您还可以为您的角色设置权限边界。
为 Amazon 服务创建角色 (Amazon API)
- 
          创建角色:CreateRole 您可以指定一个文件位置作为角色的信任策略。 
- 
          将托管权限策略附加到角色:AttachRolePolicy 或 为角色创建内联权限策略:PutRolePolicy 
- 
          (可选)通过附加标签来向用户添加自定义属性:TagRole 有关更多信息,请参阅 管理 IAM 用户(Amazon CLI 或 Amazon API)的标签。 
- 
          (可选)为角色设置权限边界:PutRolePermissionsBoundary 权限边界控制角色可以具有的最大权限。权限边界是一项高级 Amazon 功能。 
如果要将角色与 Amazon EC2 或使用 Amazon EC2 的其他 Amazon 服务结合使用,则必须将角色存储在实例配置文件中。实例配置文件是角色的容器。每个实例配置文件只能包含一个角色,不能提高该限制。如果在 Amazon Web Services Management Console中创建角色,则为您创建具有与角色相同的名称的实例配置文件。有关实例配置文件的更多信息,请参阅使用实例配置文件。有关如何通过角色启动 Amazon EC2 实例的信息,请参阅《Amazon EC2 用户指南》中的控制对 Amazon EC2 资源的访问。
创建实例配置文件并在其中存储角色 (Amazon API)
- 
          创建实例配置文件:CreateInstanceProfile 
- 
          向实例配置文件添加角色:AddRoleToInstanceProfile