阿里雲帳號(主帳號)可以通過建立並授權RAM角色的方式授權其他雲帳號一定的資源許可權,其他阿里雲帳號扮演該角色,並為其名下的RAM使用者授予AssumeRole許可權之後,其他阿里雲帳號或RAM使用者可以通過訪問STS介面擷取臨時AK和Token令牌,調用Log ServiceAPI介面。
方案概覽
假設企業A擁有阿里雲帳號A,企業B擁有阿里雲帳號B。出於業務隔離或專案外包等需求,企業A希望將部分Log Service業務授權給企業B維護。需求如下:
阿里雲帳號B擁有向阿里雲帳號A的Log Service中寫入資料和使用消費組的許可權。
阿里雲帳號B的指定RAM使用者也擁有Log Service的寫入和消費組許可權。
阿里雲帳號B可擷取STS臨時憑證,訪問Log ServiceAPI介面。具體操作,請參見什麼是STS。
基於以上需求,您可按照以下步驟配置。
步驟一:阿里雲帳號A為阿里雲帳號B建立RAM角色並授權
在阿里雲帳號A建立RAM角色,指定阿里雲帳號B扮演該角色並為角色賦予Log Service的指定許可權。
可以通過RAM控制台建立RAM角色。具體操作,請參見建立RAM使用者及授權。您也可以通過RAM的API CreateRole建立RAM角色。具體操作,請參見CreateRole。以下以控制台建立為例進行詳細步驟說明。
使用阿里雲帳號A登入RAM控制台。
建立RAM角色,並指定阿里雲帳號B扮演該角色。
在左側導覽列,選擇
。在角色頁面,單擊建立角色。
在建立角色面板,選擇可信實體類型為阿里雲帳號,單擊下一步。
輸入角色名稱和備忘,選擇信任的雲帳號為其他雲帳號,填寫
<阿里雲帳號B的帳號ID>
,單擊完成。說明將滑鼠移至上方在控制台右上方頭像的位置,即可查詢主帳號ID。
以上步驟中建立的RAM角色詳情如下。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<阿里雲帳號B的帳號ID>:root" ] } } ], "Version": "1" }
建立一個自訂權限原則,其中在指令碼編輯頁簽,請使用以下指令碼替換配置框中的原有內容。具體操作,請參見通過指令碼編輯模式建立自訂權限原則。
如果僅需要寫資料,授權指令碼如下所示:
{ "Version": "1", "Statement": [ { "Action": "log:PostLogStoreLogs", "Resource": "*", "Effect": "Allow" } ] }
如果需要通過協同消費庫擷取資料,授權指令碼如下所示:
{ "Version": "1", "Statement": [ { "Action": [ "log:GetCursorOrData", "log:CreateConsumerGroup", "log:ListConsumerGroup", "log:ConsumerGroupUpdateCheckPoint", "log:ConsumerGroupHeartBeat", "log:GetConsumerGroupCheckPoint", "log:UpdateConsumerGroup" ], "Resource": "*", "Effect": "Allow" } ] }
重要以上兩類資源都是授權指定使用者的所有Project和Logstore,如果您需要授權指定Project和Logstore,請參考如下內容:
授權指定Project:
acs:log::{projectOwnerAliUid}:project/
。授權指定Logstore:
acs:log::{projectOwnerAliUid}:project/{projectName}/logstore/{logstoreName}/
。
完整的資源說明請參見資源清單。
為RAM角色添加建立的自訂許可權。具體操作,請參見為RAM角色授權。
步驟二:阿里雲帳號B建立RAM使用者user-b
並授權
在阿里雲帳號B建立RAM使用者user-b
,並為其授予AliyunSTSAssumeRoleAccess
(調用STS AssumeRole介面)的系統策略。
使用阿里雲帳號B登入RAM控制台。
建立一個RAM使用者
user-b
,訪問方式選擇控制台訪問和使用永久AccessKey訪問。具體操作,請參見建立RAM使用者。重要RAM使用者的AccessKey Secret只在建立時顯示,不支援查看,請妥善保管。
存取金鑰(AccessKey)是一種長期有效程式訪問憑證。AccessKey泄露會威脅該帳號下所有資源的安全。建議優先採用STS Token臨時憑證方案,降低憑證泄露的風險。更多資訊,請參見使用訪問憑據訪問阿里雲OpenAPI最佳實務。
為RAM使用者添加AliyunSTSAssumeRoleAccess許可權,使其可以通過扮演RAM角色來擷取臨時身份憑證。具體操作,請參見為RAM使用者授權。
步驟三:RAM使用者user-b
擷取STS臨時憑證訪問Log Service
調用STS AssumeRole介面擷取臨時AK和Token。更多資訊,請參見AssumeRole。
您可以選擇以下方式調用該介面:
通過STS SDK調用。更多資訊,請參見STS SDK概覽。
調用Log Service介面,關於Log ServiceSDK請參見SDK參考。