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

使用服务相关角色

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

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

只有在首先删除角色的相关资源后,才能删除角色。这将保护您的资源,因为您无法无意中删除对资源的访问权限。

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

服务相关角色权限

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

允许 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: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/*" }

或者,您可以使用 AWS 托管策略提供对服务的完全访问权限。

创建服务相关角色

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

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

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

重要

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

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

在 IAM 中创建服务相关角色之前,请查明链接服务是否已自动创建服务相关角色,以及您是否无法从该服务的控制台、API 或 CLI 创建角色。

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

  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 账户内必须是唯一的。名称不区分大小写。例如,您无法创建名为 <service-linked-role-name>_SAMPLE<service-linked-role-name>_sample 的角色。由于多个单位可能引用该角色,角色创建完毕后无法编辑角色名称。

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

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

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

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

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

使用下面的命令:

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

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

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

创建服务相关角色 (API)

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

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

编辑服务相关角色

您用来编辑服务相关角色的方法取决于服务。某些服务可能允许您从服务控制台、API 或 CLI 编辑服务相关角色的权限。但是,创建服务相关角色后,您将无法更改角色的名称,因为可能有多种实体引用该角色。您可以从 IAM 控制台、API 或 CLI 编辑任何角色的描述。

有关哪些服务支持使用服务相关角色的信息,请参阅使用 IAM 的 AWS 服务并查找其在 Service-Linked Role 列中为 Yes 的服务。要了解服务是否支持编辑服务相关角色,请选择 Yes 链接以查看该服务的服务相关角色文档。

编辑服务相关角色描述 (IAM 控制台)

您可以使用 IAM 控制台编辑服务相关角色的描述。

编辑服务相关角色的描述 (控制台)

  1. 在 IAM 控制台的导航窗格中,选择 Roles

  2. 选择要修改的角色的名称。

  3. Role description 的最右侧,选择 Edit

  4. 在框中键入新描述,然后选择 Save

编辑服务相关角色描述 (IAM CLI)

您可以从 AWS Command Line Interface使用 IAM 命令编辑服务相关角色的描述。

更改服务相关角色的描述 (IAM CLI)

  1. (可选) 要查看角色的当前描述,请使用以下命令:

    $ aws iam get-role --role-name ROLE-NAME

    通过 CLI 命令使用角色名称(并非 ARN)指向角色。例如,如果一个角色的 ARN 为:arn:aws-cn:iam::123456789012:role/myrole,则应将角色称为 myrole

  2. 要更新服务相关角色的描述,请使用以下命令:

    $ aws iam update-role --role-name ROLE-NAME --description OPTIONAL-DESCRIPTION

编辑服务相关角色描述 (IAM API)

您可以使用 IAM API 编辑服务相关角色的描述。

更改服务相关角色的描述 (API)

  1. (可选) 要查看角色的当前描述,请使用以下命令,并指定角色的名称:

    IAM API:GetRole

  2. 要更新角色的描述,请使用以下命令,并指定角色的名称 (和可选描述):

    IAM API:UpdateRole

删除服务相关角色

您用来创建服务相关角色的方法取决于服务。在某些情况下,无需手动删除服务相关角色。例如,在服务中完成特定操作 (如删除资源) 时,服务可能为您删除服务相关角色。

在其他情况下,服务可能支持从服务控制台、API 或 CLI 中手动删除服务相关角色。

有关哪些服务支持使用服务相关角色的信息,请参阅使用 IAM 的 AWS 服务并查找其在 Service-Linked Role 列中为 Yes 的服务。要了解服务是否支持删除服务相关角色,请选择 Yes 链接以查看该服务的服务相关角色文档。

如果服务不支持删除角色,则可以从 IAM 控制台、API 或 CLI 中删除服务相关角色。如果您不再需要使用某个需要服务相关角色的功能或服务,我们建议您删除该角色。这样您就没有未被主动监控或维护的未使用实体。但是,您必须先清除您的服务相关角色,然后才能将其删除。

清除服务相关角色

在您可以使用 IAM 删除服务相关角色之前,必须先确认该角色没有活动会话并删除该角色使用的任何资源。

检查服务相关角色是否在 IAM 控制台中有活动会话

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

  2. 在 IAM 控制台的导航窗格中,选择角色。然后选择服务相关角色的名称 (而不是复选框)。

  3. 在所选角色的 Summary 页面上,选择 Access Advisor 选项卡。

  4. Access Advisor 选项卡上,查看服务相关角色的近期活动。

    注意

    如果您不确定服务是否使用服务相关角色,您可以尝试删除该角色。如果服务正在使用该角色,则删除操作会失败,并且您可以查看正在使用该角色的区域。如果该角色已被使用,则您必须等待会话结束,然后才能删除该角色。您无法撤销服务相关角色对会话的权限。

删除服务相关角色所使用的资源

有关哪些服务支持使用服务相关角色的信息,请参阅使用 IAM 的 AWS 服务并查找其在 Service-Linked Role 列中为 Yes 的服务。要了解服务是否支持删除服务相关角色,请选择 Yes 链接以查看该服务的服务相关角色文档。请参阅该服务的文档,以了解如何删除服务相关角色所使用的资源。

删除服务相关角色 (IAM 控制台)

您可以使用 IAM 控制台删除服务相关角色。

删除服务相关角色 (控制台)

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

  2. 在 IAM 控制台的导航窗格中,选择角色。然后选择要删除的角色名称旁的复选框,而不是名称或行本身。

  3. 对于页面顶部的 Role actions,选择 Delete role

  4. 在确认对话框中,查看上次访问服务数据,该数据显示每个选定角色上次访问 AWS 服务的时间。这样可帮助您确认角色当前是否处于活动状态。如果要继续,请选择 Yes, Delete 以提交服务相关角色进行删除。

  5. 监视 IAM 控制台通知,以监控服务相关角色的删除进度。由于 IAM 服务相关角色删除是异步的,因此,在您提交角色进行删除后,删除任务可能成功,也可能失败。

    • 如果任务成功,则角色将从列表中删除,并会在页面顶部显示成功通知。

    • 如果任务失败,您可以从通知中选择 View detailsView Resources 以了解删除失败的原因。如果因为角色正在使用服务的资源而使删除失败,则通知包含一个资源列表 (如果服务返回该信息)。然后您可以清除资源并再次提交删除。

      注意

      您可能需要多次重复执行此过程,这取决于服务返回的信息。例如,您的服务相关角色可能使用六个资源,而您的服务可能返回有关其中五个资源的信息。如果您清除这五个资源并再次提交该角色以进行删除,则删除会失败,并且服务会报告一个剩余资源。服务可能会返回所有资源、其中一些资源,也可能不报告任何资源。

    • 如果任务失败,并且通知不包含资源列表,则服务可能不会返回该信息。要了解如何清除该服务的资源,请参阅使用 IAM 的 AWS 服务。在表中查找您的服务,然后选择 Yes 链接以查看该服务的服务相关角色文档。

删除服务相关角色 (IAM CLI)

您可以从 AWS Command Line Interface使用 IAM 命令删除服务相关角色。

删除服务相关角色 (IAM CLI)

  1. 如果不知道要删除的服务相关角色的名称,请键入以下命令列出账户中的角色及其 Amazon 资源名称 (ARN):

    $ aws iam get-role --role-name role-name

    通过 CLI 命令使用角色名称(并非 ARN)指向角色。例如,如果一个角色的 ARN 为:arn:aws-cn:iam::123456789012:role/myrole,则应将角色称为 myrole

  2. 如果服务相关角色正被使用或具有关联的资源,则无法删除它,因此您必须提交删除请求。如果不满足这些条件,该请求可能会被拒绝。您必须从响应中捕获 deletion-task-id 以检查删除任务的状态。键入以下命令以提交服务相关角色的删除请求:

    $ aws iam delete-service-linked-role --role-name role-name
  3. 键入以下命令以检查删除任务的状态:

    $ aws iam get-service-linked-role-deletion-status --deletion-task-id deletion-task-id

    删除任务的状态可能是 NOT_STARTEDIN_PROGRESSSUCCEEDEDFAILED。如果删除失败,则调用会返回失败的原因,以便您进行问题排查。如果因为角色正在使用服务的资源而使删除失败,则通知包含一个资源列表 (如果服务返回该信息)。然后您可以清除资源并再次提交删除。

    注意

    您可能需要多次重复执行此过程,这取决于服务返回的信息。例如,您的服务相关角色可能使用六个资源,而您的服务可能返回有关其中五个资源的信息。如果您清除这五个资源并再次提交该角色以进行删除,则删除会失败,并且服务会报告一个剩余资源。服务可能会返回所有资源、其中一些资源,也可能不报告任何资源。要了解如何为不报告任何资源的服务清除资源,请参阅使用 IAM 的 AWS 服务。在表中查找您的服务,然后选择 Yes 链接以查看该服务的服务相关角色文档。

删除服务相关角色 (IAM API)

您可以使用 IAM API 删除服务相关角色。

删除服务相关角色 (API)

  1. 要提交服务相关角色的删除请求,请调用 DeleteServiceLinkedRole。在请求中,指定角色名称。

    如果服务相关角色正被使用或具有关联的资源,则无法删除它,因此您必须提交删除请求。如果不满足这些条件,该请求可能会被拒绝。您必须从响应中捕获 DeletionTaskId 以检查删除任务的状态。

  2. 要检查删除的状态,请调用 GetServiceLinkedRoleDeletionStatus。在请求中,指定 DeletionTaskId

    删除任务的状态可能是 NOT_STARTEDIN_PROGRESSSUCCEEDEDFAILED。如果删除失败,则调用会返回失败的原因,以便您进行问题排查。如果因为角色正在使用服务的资源而使删除失败,则通知包含一个资源列表 (如果服务返回该信息)。然后您可以清除资源并再次提交删除。

    注意

    您可能需要多次重复执行此过程,这取决于服务返回的信息。例如,您的服务相关角色可能使用六个资源,而您的服务可能返回有关其中五个资源的信息。如果您清除这五个资源并再次提交该角色以进行删除,则删除会失败,并且服务会报告一个剩余资源。服务可能会返回所有资源、其中一些资源,也可能不报告任何资源。要了解如何为不报告任何资源的服务清除资源,请参阅使用 IAM 的 AWS 服务。在表中查找您的服务,然后选择 Yes 链接以查看该服务的服务相关角色文档。