在管理帳號建立自訂數字員工,讓其扮演業務帳號中的 RAM 角色,查詢、操作業務帳號下的Log Service(SLS)與CloudMonitor資源,實現多帳號之間的資源共用與許可權收斂。閱讀本文檔前,請先閱讀 許可權配置,瞭解許可權體系的基本概念、使用者操作許可權與數字員工存取權限的區別,以及各類權限原則的標準模板。
業務情境
企業通常統一在一個管理帳號使用 STAROps 平台,而生產資源分散在多個業務帳號。營運人員希望在管理帳號的對話入口直接排查業務帳號的日誌與監控資料,但管理帳號中的數字員工預設只能訪問本帳號資源,跨帳號查詢會因缺少目標帳號的訪問憑據而失敗。本文以管理帳號(帳號 A)和業務帳號(帳號 B)兩個帳號為例,給出端到端的跨帳號授權路徑。
原理說明
STAROps 支援建立自訂數字員工,自訂數字員工基於配置的 RoleArn 工作。自訂數字員工支援配置多個連接器,阿里雲相關的連接器支援配置跨帳號 RoleArn。
數字員工在工作時,通過自身配置的 RoleArn 角色扮演跨帳號的 Role,以此擷取訪問跨帳號雲資源的能力。
限制說明
為保證數字員工工作效果,建議一個數字員工配置的跨帳號連接器數量不超過 10。
目標帳號的角色必須配置數字員工 RoleArn 的信任策略,否則無法實現跨帳號訪問。
前提條件
已開通 STAROps。
已建立自訂數字員工並配置 RoleArn。
配置步驟
下述文檔中的變數說明可參考下述表格:
變數 | 說明 | 樣本 |
| 數字員工歸屬的主帳號 ID | 1234567890 |
| 數字員工配置的角色 ID。
|
|
| 目標訪問帳號的主帳號 ID | 1800000000 |
| 目標訪問帳號的角色 ID |
|
步驟 1: 帳號 B 建立跨帳號訪問角色(數字員工角色)
在業務帳號(帳號 B)中建立 RAM 角色,允許帳號 A 的角色扮演。
建立 RAM 角色
登入帳號 B 的 RAM 控制台。
選擇 身份管理 → 角色 → 建立角色。
選擇角色類型:雲帳號。
信任主體名稱:其他雲帳號,輸入帳號 A 的帳號 ID
{uid-a}。填寫角色名稱:
{role-b},例如starops-cross-account-for-a。
配置信任策略
在信任策略頁中編輯信任策略,參考如下樣本將信任策略改為只信任 {role-a}。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"RAM": "acs:ram::{uid-a}:role/{role-a}"
},
"Action": "sts:AssumeRole"
}
]
}
為角色授權許可權
阿里雲支援多種角色授權策略,具體操作可參考:管理RAM角色的許可權。請根據具體的任務類型,遵循最小化原則授予特定的許可權。例如可通過內建權限原則,授予Log Service、CloudMonitor等產品的唯讀許可權。
步驟 2: 帳號 A 數字員工建立 Connector
STAROps 內建的CloudMonitor、Log Service、阿里雲資源等均支援跨帳號訪問,下述以阿里雲資源連接器為例,詳細的數字員工 Connector 建立參考:系統連接器。
1. 點擊 設定 > 連接器 > 資源。
2. 點擊 添加資源串連,選擇 阿里雲資源。點擊 下一步。
3. 配置串連:
連接器 ID:用於唯一標識連接器,建立後不可修改。規則:長度 1–64,僅小寫字母、數字和虛線,以字母開頭,以字母或數字結尾。
名稱:用於在列表中區分串連,最多 128 個字元。
阿里雲角色:選擇跨帳號角色,填寫
Role ARN,格式為acs:ram::{uid-b}:role/{role-b}。然後點擊 檢查許可權。
檢查跨帳號串連正確性
在配置完畢後,您可以通過下述方式驗證跨帳號串連是否生效:
方式 1:點擊數字員工配置頁面中的 Connector 可查看串連狀態是否正常。
方式 2:直接在數字員工上發起會話,讓數字員工嘗試訪問 Connector。例如:
幫我訪問以下連接器 B,看看是否正常。
常見問題
跨帳號訪問沿數字員工 Role {role-a} 扮演目標 Role {role-b} 的策略工作。連接器上的 檢查許可權 走同一條鏈路。失敗時建議先開啟連接器詳情,查看檢查失敗後的錯誤碼和說明,再按下麵條目處理。
提示 Role ARN 格式無效,或錯誤碼 AUTH_ROLE_INVALID
建議在帳號 B 的 RAM 角色詳情頁複製 Role ARN,粘貼到連接器的 Role ARN。格式為 acs:ram::{uid-b}:role/{role-b}:帳號段是目標帳號 ID,角色段是角色名稱。
錯誤碼 AUTH_TOKEN_UNAVAILABLE
報錯原因通常為數字員工自身配置的 RoleArn 出現問題,排查路徑建議:
確認當前員工是自訂數字員工,並且已配置 RoleArn。
在帳號 A 確認
{role-a}存在。預設服務角色為acs:ram::{uid-a}:role/aliyunserviceroleforstarops。確認
{role-a}的信任策略允許 STAROps 相關服務扮演。當前 RAM 使用者對
{role-a}具備ram:PassRole。
錯誤碼 AUTH_ASSUME_ROLE_FAILED,或 sts:AssumeRole Forbidden
報錯原因通常為數字員工已拿到 {role-a},但無法扮演 {role-b}。排查路徑建議:
確認帳號 B 中存在該角色,Role ARN 與連接器填寫值完全一致。
{role-b}的信任策略 Principal 為acs:ram::{uid-a}:role/{role-a}。預設服務角色時{role-a}填aliyunserviceroleforstarops。數字員工當前 RoleArn 與信任策略中的
{role-a}一致。換 Role 後需要同步修改信任策略。{role-a}具備sts:AssumeRole。自訂角色可授予AliyunSTSAssumeRoleAccess。
連接器跨帳號由數字員工 Role 扮演目標 Role。{role-b} 的信任主體填寫為數字員工 Role ARN。
錯誤碼 WORKSPACE_NOT_FOUND 或 PROJECT_NOT_FOUND
角色扮演已成功,但讀不到所選 Workspace / Project。核對名稱和地區屬於帳號 B,並為 {role-b} 授予對應產品讀取許可權後,重新 檢查許可權。