本文為您介紹ExternalId的應用場景、使用流程和操作步驟。
應用場景
企業有時需要使用第三方供應商提供的服務來管理其云環境,例如:日志審計、成本管理、安全監控等場景。在這些場景下,企業會給予第三方供應商訪問其云上資源的權限,這里就涉及到跨賬號訪問。阿里云RAM提供了角色扮演(AssumeRole)的能力,用于解決跨賬號訪問的問題。
由于第三方供應商可能需要同時訪問多個客戶的多個阿里云賬號,如果處理不當容易被攻擊者利用,騙過供應商偽裝成其他客戶,即發生混淆代理人問題。混淆代理人問題是一個安全問題,是指一個受信任的實體被惡意實體欺騙或誤導,執行了未經授權的操作。這個惡意實體就是一個“混淆代理”,通過欺騙受信任的實體來實施自己的目的。阿里云RAM提供ExternalId防止混淆代理人問題。更多信息,請參見AssumeRole。
使用流程
第三方供應商應該為他的每個客戶生成唯一的ExternalId,并確保ExternalId是一個隨機字符串,即不容易被猜測出來。
客戶獲取到第三方供應商提供的ExternalId后,將該ExternalId加入到提供給該供應商使用的角色的信任策略中。
第三方供應商通過調用AssumeRole接口扮演角色的時候,需要提供頒發給這個客戶的ExternalId,不提供或者提供錯誤都會失敗。
操作步驟
本示例中,第三方供應商Deputy需要使用自己的阿里云賬號Deputy_Account訪問客戶的阿里云賬號Customer_Account的資源,為確保安全性,第三方供應商Deputy為客戶提供唯一的ExternalId為abcd1234。
客戶在阿里云賬號Customer_Account中創建一個可信實體為阿里云賬號Deputy_Account的RAM角色,并按需為RAM角色授予相應的權限策略。
具體操作,請參見創建可信實體為阿里云賬號的RAM角色和為RAM角色授權。
修改RAM角色信任策略,指定扮演角色的可信實體必須滿足
ExternalId
為abcd1234
這個條件。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<deputy-accountId>:root" ] }, "Condition": { "StringEquals": { "sts:ExternalId": "abcd1234" } } } ], "Version": "1" }
具體操作,請參見修改RAM角色的信任策略。
當第三方供應商需要扮演角色訪問客戶賬號時,需要提供匹配的ExternalId。
本示例中,調用AssumeRole接口的請求參數中必須指定
ExternalId
為abcd1234
。第三方供應商Deputy通過生成的STS Token訪問客戶賬號Customer_Account中的資源。