物聯網平臺服務端訂閱功能支持通過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的跨云賬號授權及資源訪問。
阿里云主賬號A創建一個RAM角色,并為RAM角色授予對應的服務端訂閱權限,然后允許阿里云主賬號B下的RAM用戶扮演該角色。
RAM角色授權完成后,阿里云主賬號B下的RAM用戶通過扮演阿里云主賬號A的RAM角色可獲取該角色對應的權限。
步驟一:創建RAM角色并授權
創建可信實體為阿里云賬號的RAM角色:企業A使用阿里云主賬號A登錄RAM控制臺,為企業B的阿里云主賬號B創建RAM角色。
角色可信實體的阿里云賬號選擇其他云賬號,設置為企業B的阿里云主賬號ID。
通過腳本編輯模式創建自定義權限策略:企業A使用阿里云主賬號A創建自定義權限策略。
服務端訂閱授權操作Action為
iot:sub
,權限策略內容如下:{ "Statement": [ { "Action": "iot:sub", "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
為RAM角色授權:企業A使用阿里云主賬號A為剛創建的RAM角色添加上一步創建的自定義權限策略。
為RAM用戶授權:企業B使用阿里云主賬號B為上一步創建的RAM用戶,添加AliyunSTSAssumeRoleAccess權限,使阿里云主賬號B的RAM用戶可以扮演企業A阿里云主賬號A的RAM角色。
步驟二:跨賬號接收AMQP服務端訂閱消息
配置AMQP服務端訂閱:企業A使用阿里云賬號登錄物聯網平臺控制臺,配置AMQP服務端訂閱設備上報數據。
開發AMQP客戶端接收服務端訂閱消息:企業B開發AMQP客戶端接入企業A阿里云賬號的物聯網平臺,接收企業A物聯網平臺下服務端訂閱的設備消息。