跨账号RAM用户授权服务端订阅

物联网平台服务端订阅功能支持通过RAM角色授权跨账号操作,即使用企业A的阿里云主账号创建RAM角色并为该角色授权,将该角色赋予企业B阿里云主账号,即可实现使用企业B的主账号或其RAM用户访问企业A的服务端订阅消息。

背景信息

STS(Security Token Service)是阿里云提供的一种临时访问权限管理服务。RAM提供RAM用户和RAM角色两种身份。

RAM角色是一种虚拟用户,可以被授予一组权限策略。与RAM用户不同,RAM角色没有确定的登录密码或访问密钥,它需要被一个可信的实体用户(RAM用户、阿里云服务或身份提供商)扮演。扮演成功后实体用户将获得RAM角色的临时身份凭证,即安全令牌(STS Token),使用安全令牌就能以RAM角色身份访问被授权的资源。

了解STS的功能特性和优势,请参见什么是STS

应用场景

企业A阿里云账号开通了阿里云物联网平台来开展业务,希望将服务端订阅的设备上报消息授权给企业B阿里云账号服务端消费,做进一步的业务处理。

解决方案

企业A需要授予企业B的员工对物联网平台服务端订阅资源进行操作。假设企业A和企业B分别有一个阿里云主账号A和阿里云主账号B,需要完成以下操作完成企业A和企业B的跨云账号授权及资源访问。

  1. 步骤一:创建RAM角色并授权

    阿里云主账号A创建一个RAM角色,并为RAM角色授予对应的服务端订阅权限,然后允许阿里云主账号B下的RAM用户扮演该角色。

  2. 步骤二:跨账号接收AMQP服务端订阅消息

    RAM角色授权完成后,阿里云主账号B下的RAM用户通过扮演阿里云主账号A的RAM角色可获取该角色对应的权限。

步骤一:创建RAM角色并授权

  1. 创建可信实体为阿里云账号的RAM角色:企业A使用阿里云主账号A登录RAM控制台,为企业B的阿里云主账号B创建RAM角色。

    角色可信实体的阿里云账号选择其他云账号,设置为企业B的阿里云主账号ID。

  2. 通过脚本编辑模式创建自定义权限策略:企业A使用阿里云主账号A创建自定义权限策略。

    服务端订阅授权操作Actioniot:sub,权限策略内容如下:

    {
      "Statement": [
        {
          "Action": "iot:sub",
          "Effect": "Allow",
          "Resource": "*"
        }
      ],
      "Version": "1"
    }
  3. 为RAM角色授权:企业A使用阿里云主账号A为刚创建的RAM角色添加上一步创建的自定义权限策略。

  4. 创建RAM用户:企业B使用阿里云主账号B登录RAM控制台,创建RAM用户。

  5. 为RAM用户授权:企业B使用阿里云主账号B为上一步创建的RAM用户,添加AliyunSTSAssumeRoleAccess权限,使阿里云主账号B的RAM用户可以扮演企业A阿里云主账号A的RAM角色。

步骤二:跨账号接收AMQP服务端订阅消息

  1. 配置AMQP服务端订阅:企业A使用阿里云账号登录物联网平台控制台,配置AMQP服务端订阅设备上报数据。

  2. 开发AMQP客户端接收服务端订阅消息:企业B开发AMQP客户端接入企业A阿里云账号的物联网平台,接收企业A物联网平台下服务端订阅的设备消息。