创建服务相关角色 - AWS Identity and Access Management

创建服务相关角色

服务相关角色是一种独特类型的 IAM 角色,它与AWS服务直接相关。服务相关角色由服务预定义,具有服务代表您调用其他 AWS 服务所需的所有权限。相关的服务还定义了创建、修改和删除服务相关角色的方式。服务可以自动创建或删除角色。它可能允许您在服务的向导或流程中创建、修改或删除角色。或者,它可能需要您使用 IAM 创建或删除角色。无论使用哪种方法,服务相关角色都可让您简化 服务的设置流程,因为您不必手动添加服务代表您完成操作所需的权限。

注意

请记住,服务角色不同于服务相关角色。服务角色是由一项服务担任、代表您执行操作的 IAM 角色。IAM 管理员可以在 IAM 中创建、修改和删除服务角色。有关更多信息,请参阅《IAM 用户指南》中的 创建向 AWS 服务 委派权限的角色。服务相关角色是一种与 AWS 服务 相关的服务角色。服务可以代入代表您执行操作的角色。服务相关角色显示在您的 AWS 账户 中,并由该服务拥有。IAM 管理员可以查看但不能编辑服务相关角色的权限。

链接服务会定义其服务相关角色的权限,除非另外定义,否则仅该服务可以担任角色。定义的权限包括信任策略和权限策略,而且权限策略不能附加到任何其它 IAM 实体。

您必须先删除角色的相关资源,之后才能删除角色。这可以保护您的资源,因为您不会无意中删除对资源的访问权限。

提示

有关哪些服务支持使用服务相关角色的信息,请参阅 使用 IAM 的AWS服务 并查找其在服务相关角色列中为的服务。选择和链接,查看该服务的服务相关角色文档。

服务相关角色权限

您必须为 IAM 实体(用户、组或角色)配置权限,以允许用户或角色创建或编辑服务相关角色。

注意

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

允许 IAM 实体创建特定服务相关角色

将以下策略添加到需要创建服务相关角色的 IAM 实体中。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*", "Condition": {"StringLike": {"iam:AWSServiceName": "SERVICE-NAME.amazonaws.com"}} }, { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*" } ] }

允许 IAM 实体创建任何服务相关角色

将以下语句添加到 IAM 实体的权限策略,该实体需要创建服务相关角色或任何包含所需策略的服务角色。此策略语句不允许 IAM 实体将策略附加到该角色。

{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/*" }

允许 IAM 实体编辑任何服务角色的描述

将以下语句添加到 IAM 实体的权限策略,该实体需要编辑服务相关角色或任何服务角色的描述。

{ "Effect": "Allow", "Action": "iam:UpdateRoleDescription", "Resource": "arn:aws:iam::*:role/aws-service-role/*" }

允许 IAM 实体删除特定服务相关角色

将以下语句添加到需要删除服务相关角色的 IAM 实体的权限策略。

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*" }

允许 IAM 实体删除任何服务相关角色

将以下语句添加到 IAM 实体的权限策略,该实体需要删除服务相关角色,而不需要删除服务角色。

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/*" }

允许 IAM 实体将现有角色传递给服务

有些 AWS 服务允许您将现有角色传递给服务,而不是创建新的服务相关角色。为此,用户必须具有将角色传递给服务的权限。将以下语句添加到需要传递角色的 IAM 实体的权限策略。此策略语句还允许实体查看可从中选择要传递的角色的角色列表。有关更多信息,请参阅 向用户授予权限以将角色传递给 AWS 服务

{ "Sid": "PolicyStatementToAllowUserToListRoles", "Effect": "Allow", "Action": ["iam:ListRoles"], "Resource": "*" }, { "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/my-role-for-XYZ" }

使用服务相关角色的间接权限

服务相关角色授予的权限可以间接转让给其他用户和角色。AWS 服务使用某个服务相关角色时,该服务相关角色可以使用自己的权限调用其他 AWS 服务。这意味着,如果用户和角色有权调用使用某个服务相关角色的服务,将能够间接访问该服务相关角色可以访问的服务。

例如,在创建 Amazon RDS 数据库实例时,RDS 的服务相关角色如果尚不存在,则会自动创建。借助该服务相关角色,RDS 将可以代表您调用 Amazon EC2、Amazon SNS、Amazon CloudWatch Logs 和 Amazon Kinesis 等服务。如果您允许账户中的用户和角色修改或创建 RDS 数据库,则这些用户和角色将可以通过调用 RDS,从而与 Amazon EC2、Amazon SNS、Amazon CloudWatch Logs 日志和 Amazon Kinesis 资源进行间接交互,因为 RDS 会使用其服务相关角色来访问这些资源。

创建服务相关角色

您用来创建服务相关角色的方法取决于服务。在某些情况下,无需手动创建服务相关角色。例如,在服务中完成特定操作 (如创建资源) 时,服务可能为您创建服务相关角色。或者,如果您在某项服务开始支持服务相关角色之前已在使用该服务,则该服务可能自动在您的账户中创建角色。要了解更多信息,请参阅 我的 AWS 账户中出现新角色

在其他情况下,服务可能支持使用服务控制台、API 或 CLI 手动创建服务相关角色。有关哪些服务支持使用服务相关角色的信息,请参阅 使用 IAM 的AWS服务 并查找其在服务相关角色列中为的服务。要了解服务是否支持创建服务相关角色,请选择 Yes 链接以查看该服务的服务相关角色文档。

如果服务不支持创建角色,则可以使用 IAM 创建服务相关角色。

重要

服务相关角色将计入您的 AWS 账户 中的 IAM 角色限制,但如果您已达到限制,仍可以在账户中创建服务相关角色。只有服务相关角色可以超过此限制。

创建服务相关角色(控制台)

在 IAM 中创建服务相关角色之前,请查明链接服务是否已自动创建服务相关角色。此外,需了解您是否能从该服务的控制台、API 或 CLI 创建角色。

创建服务相关角色(控制台)
  1. 登录 AWS Management Console,打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在 IAM 控制台的导航窗格中,选择角色。然后,选择创建角色

  3. 选择AWS 服务角色类型。

  4. 选择用于您的服务的用例。使用案例由服务定义以包含服务所需的信任策略。然后选择下一步

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

    • 定义角色所使用的权限。

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

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

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

    选中分配您希望角色具有的权限的策略旁边的复选框,然后选择 Next(下一步)。

    注意

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

  6. 对于角色名称,角色名称自定义的程度由服务定义。如果服务定义角色的名称,则此选项不可编辑。在其他情况下,服务可能定义角色的前缀并让您输入可选的后缀。

    如果可能,请输入要添加到默认名称的角色名称后缀。该后缀可帮助您确定角色的用途。角色名称在您的 AWS 账户内必须是唯一的。名称不区分大小写。例如,您无法同时创建名为 <service-linked-role-name>_SAMPLE<service-linked-role-name>_sample 的角色。由于多个单位可能引用该角色,角色创建完毕后无法编辑角色名称。

  7. (可选)对于 Description(描述),编辑新服务相关角色的描述。

  8. 您无法在创建过程中将标签附加到服务相关角色。有关在 IAM 中使用标签的更多信息,请参阅 AWS Identity and Access Management 资源的标签

  9. 检查角色,然后选择创建角色

创建服务相关角色(AWS CLI)

在 IAM 中创建服务相关角色之前,请查明链接服务是否已自动创建服务相关角色,以及您是否能从该服务的 CLI 创建角色。如果服务 CLI 不受支持,您可以使用 IAM 命令创建具有服务担任角色时所需的信任策略和内联策略的服务相关角色。

创建服务相关角色 (AWS CLI)

运行以下命令:

aws iam create-service-linked-role --aws-service-name SERVICE-NAME.amazonaws.com

创建服务相关角色 (AWS API)

在 IAM 中创建服务相关角色之前,请查明链接服务是否已自动创建服务相关角色,以及您是否能从该服务的 API 创建角色。如果服务 API 不受支持,您可以使用 AWS API 创建具有服务代入角色时所需的信任策略和内联策略的服务相关角色。

创建服务相关角色 (AWS API)

使用 CreateServiceLinkedRole API 调用。在请求中,指定 SERVICE_NAME_URL.amazonaws.com 的服务名称。

例如,要创建 Lex Bots 服务相关角色,请使用 lex.amazonaws.com