物聯網平台服務端訂閱功能支援通過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物聯網平台下服務端訂閱的裝置訊息。