服务关联角色

更新时间:
复制为 MD 格式

本文介绍服务关联角色的概念,以及如何创建、删除和监控服务关联角色。

什么是服务关联角色

服务关联角色(Service Linked Role,简称SLR)是阿里云为实现跨服务访问而预设的一种RAM角色,具有以下特点:

  • 与特定云服务绑定:SLR是一种特殊的RAM角色,与特定的阿里云服务绑定。

  • 仅限绑定服务扮演:SLR只能由其绑定的阿里云服务扮演,其他身份无法使用。

  • 阿里云预定义:角色本身、所包含的权限、角色信任策略(规定了可扮演该角色的云服务),均由阿里云产品预定义。

  • 免维护:用户无需手动配置和维护SLR。

为什么需要服务关联角色

如果没有服务关联角色,当某个云服务需要访问其他云服务时,用户需要手动创建RAM角色、配置复杂的权限策略和信任策略,不仅操作繁琐,还容易因配置不当导致服务异常或安全风险。服务关联角色有效解决了这些问题:

  • 解决阿里云上的跨服务授权访问问题。例如:配置审计(Config)服务要读取您的云资源信息(如资源列表和资源配置)以生成合规性报表,就需要获取ECS、RDS等其他云服务的访问权限。通过创建和扮演服务关联角色,配置审计服务可以获得完成自身功能所需的权限。

  • 降低了配置复杂度和误操作风险。服务关联角色的权限策略由阿里云服务预先定义,确保各云服务仅获得完成任务所需的最小权限,用户无需手动配置权限。这有助于提升账户安全性,保障云服务稳定运行。

工作原理

下面以配置审计(Config)服务为例,为您解释服务关联角色的工作原理:

image
  1. 阿里云预定义服务关联角色:阿里云为配置审计服务预定义了服务关联角色(如AliyunServiceRoleForConfig),该角色包含:

    • 信任策略:仅允许config.aliyuncs.com扮演该角色,确保只有配置审计服务可以使用。

    • 权限策略:授予读取 ECS、RDS等云服务资源信息的权限。

  2. 配置审计服务扮演角色:当配置审计服务需要读取您的云资源信息以生成合规性报表时,它会扮演其服务关联角色,获取临时安全凭证。

  3. 以角色身份访问其他云服务:配置审计服务使用服务关联角色的身份和权限,安全地访问 ECS、RDS等其他云服务,读取资源列表和资源配置等信息。

  4. 完成业务功能:配置审计服务获取到所需的云资源信息后,生成合规性报表,完成其核心业务功能。

通过这种方式,配置审计服务无需您手动配置复杂的权限策略,即可安全、便捷地实现跨服务访问。

SLR与普通服务角色的区别

服务关联角色与普通服务角色类似,都是由云服务所扮演,并赋予云服务完成自身功能所需要的权限。但两者在具体使用方式上有本质区别:

对比维度

服务关联角色(SLR)

普通服务角色

创建方式

一般由阿里云服务自动创建

一般由管理员手动创建

维护方式

一般由阿里云服务自动维护,用户无法修改SLR。

一般由管理员手动维护,用户可以修改服务角色。

删除条件

必须确保SLR未被云服务使用才能删除。

管理员可以随时删除角色。

权限策略

预定义,不可修改,也不可添加或移除权限策略

管理员自定义,可添加或移除权限。

信任策略

预定义,不可修改,仅信任其关联的特定阿里云服务

管理员自定义,可修改角色信任策略。

支持服务关联角色的云服务

支持服务关联角色的云服务列表,请参见支持服务关联角色的云服务。您可点击相关文档栏的链接具体查看对应云服务SLR的文档。

管理服务关联角色所需的权限

说明

对服务关联角色的管理,仅限于创建或删除SLR。无法修改SLR及其关联的权限策略和信任策略。

RAM 用户创建或删除服务关联角色时,必须具备相应权限。这些权限通常已包含在SLR对应云服务的管理员权限策略(例如AliyunResourceDirectoryFullAccess)中。RAM用户如果具有该云服务的管理员权限,通常也可以为该云服务创建SLR。

您也可以配置自定义策略来为RAM用户授予仅针对特定服务的SLR管理权限。如以下自定义权限策略示例,允许RAM用户为资源管理(Resource Management)服务创建和删除服务关联角色。其中,ram:ServiceName的取值可以从支持服务关联角色的云服务云服务标识列获取。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ram:CreateServiceLinkedRole",
        "ram:DeleteServiceLinkedRole"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ram:ServiceName": "resourcemanager.aliyuncs.com"
        }
      }
    }
  ]
}

创建服务关联角色

  • 云服务创建:多数情况下,云服务将在您执行某些特定操作(例如:创建一个云资源或开启一个功能)时自动创建服务关联角色,或在提示管理员并获得授权后以管理员身份创建。关于自动创建服务关联角色的详情,请参见对应云服务的文档说明:支持服务关联角色的云服务

  • 手动创建:您也可以手动创建服务关联角色,具体操作,请参见创建服务关联角色

说明

服务关联角色会占用您的RAM角色配额。当RAM角色数量超限时,您仍然可以成功创建服务关联角色,但无法创建其他类型的角色。具体配额请参见使用限制

删除服务关联角色

  • 云服务删除:云服务将在您执行某些特定操作(例如:删除所有资源或关闭一个功能)时自动删除已创建的服务关联角色。

  • 手动删除:您也可以手动删除服务关联角色,具体操作,请参见删除RAM角色。手动删除前RAM会先检查这个角色是否仍被云资源使用:

    • 如果该角色未被使用,删除操作将成功完成。

    • 如果该角色仍在使用中,删除操作将失败。您可以根据提示信息查看哪些云资源正在使用该角色,手动清理这些资源后再执行删除操作。不同云服务对服务关联角色的删除条件有所差异,具体请参见支持服务关联角色的云服务中对应云服务的文档说明。

重要

错误地删除服务关联角色可能导致依赖该角色的阿里云服务功能异常,删除前请确认相关功能已不再使用,或已完成资源清理。

扮演服务关联角色

服务关联角色仅可被关联的云服务扮演,其他身份(例如:RAM用户、其他RAM角色)都无法扮演该角色。

查看可扮演服务关联角色的云服务

您可以在已创建的服务关联角色的信任策略页签中,通过Service字段查看可以扮演该角色的云服务。例如,配置审计的服务关联角色AliyunServiceRoleForConfig信任策略仅允许被云服务config.aliyuncs.com扮演:

image

监控服务关联角色的创建与使用

您可以通过操作审计(ActionTrail)对服务关联角色的生命周期和使用情况进行审计。

  • 使用事件名称进行查询:

    • CreateServiceLinkedRole:查询创建服务关联角色相关事件。

    • DeleteServiceLinkedRole:查询删除服务关联角色相关事件。

    • AssumeRole:查询云服务扮演服务关联角色相关事件。事件详情中的userIdentity部分将包含云服务名称,requestParameters部分将包含所扮演的服务关联角色Arn。例如:

      {
        ...
        "requestParameters": {
          ...
          "RoleArn": "acs:ram::ACCOUNT_ID:role/aliyunservicerolefortag",
          "RoleSessionName": "tag_operate",
        },
        ...
        "userIdentity": {
          ...
          "principalId": "tag.aliyuncs.com",
          "userName": "tag.aliyuncs.com"
        },
        "eventName": "AssumeRole"
      }
      
  • 使用事件类型进行查询:

    将事件类型设置为云服务事件(AliyunServiceEvent),并筛选操作者名称为具体的服务关联角色名称,可查询该服务关联角色所执行的操作。

常见问题

服务关联角色的权限策略看起来权限很大,有安全风险吗? 

  1. 服务关联角色的权限策略由阿里云官方预定义并遵循最小权限原则,旨在确保关联服务能够完整、稳定地运行。

  2. 服务关联角色的信任策略严格限制了只有对应的阿里云服务才能扮演该角色,其他任何身份都无法使用,从而保证了安全性。

  3. 如果您对某个服务关联角色的权限有疑虑,可以通过以下方式进一步了解:

    • 查阅对应云服务的服务关联角色文档说明。

    • 联系对应云产品服务支持。

为什么我无法删除某个服务关联角色? 

因为该角色仍被一个或多个云资源使用。您必须先清理这些依赖资源,才能成功删除角色。具体请参见本文的删除服务关联角色章节。