全部產品
Search
文件中心

Resource Access Management:使用ExternalId防止混淆代理人問題

更新時間:Jun 19, 2024

本文為您介紹ExternalId的應用情境、使用流程和操作步驟。

應用情境

企業有時需要使用第三方供應商提供的服務來管理其雲環境,例如:日誌審計、成本管理、安全監控等情境。在這些情境下,企業會給予第三方供應商訪問其雲上資源的許可權,這裡就涉及到跨帳號訪問。阿里雲RAM提供了角色扮演(AssumeRole)的能力,用於解決跨帳號訪問的問題。

由於第三方供應商可能需要同時訪問多個客戶的多個阿里雲帳號,如果處理不當容易被攻擊者利用,騙過供應商偽裝成其他客戶,即發生混淆代理人問題。混淆代理人問題是一個安全問題,是指一個受信任的實體被惡意實體欺騙或誤導,執行了未經授權的操作。這個惡意實體就是一個“混淆代理”,通過欺騙受信任的實體來實施自己的目的。阿里雲RAM提供ExternalId防止混淆代理人問題。更多資訊,請參見AssumeRole

使用流程

  1. 第三方供應商應該為他的每個客戶產生唯一的ExternalId,並確保ExternalId是一個隨機字串,即不容易被猜測出來。

  2. 客戶擷取到第三方供應商提供的ExternalId後,將該ExternalId加入到提供給該供應商使用的角色的信任策略中。

  3. 第三方供應商通過調用AssumeRole介面扮演角色的時候,需要提供頒發給這個客戶的ExternalId,不提供或者提供錯誤都會失敗。

操作步驟

本樣本中,第三方供應商Deputy需要使用自己的阿里雲帳號Deputy_Account訪問客戶的阿里雲帳號Customer_Account的資源,為確保安全性,第三方供應商Deputy為客戶提供唯一的ExternalId為abcd1234。

  1. 客戶在阿里雲帳號Customer_Account中建立一個可信實體為阿里雲帳號Deputy_Account的RAM角色,並按需為RAM角色授予相應的權限原則。

    具體操作,請參見建立可信實體為阿里雲帳號的RAM角色為RAM角色授權

  2. 修改RAM角色信任策略,指定扮演角色的可信實體必須滿足ExternalIdabcd1234這個條件。

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "RAM": [
              "acs:ram::<deputy-accountId>:root"
            ]
          },
          "Condition": {
            "StringEquals": {
              "sts:ExternalId": "abcd1234"
            }
          }
        }
      ],
      "Version": "1"
    }

    具體操作,請參見修改RAM角色的信任策略

  3. 當第三方供應商需要扮演角色訪問客戶帳號時,需要提供匹配的ExternalId。

    本樣本中,調用AssumeRole介面的請求參數中必須指定ExternalIdabcd1234

  4. 第三方供應商Deputy通過產生的STS Token訪問客戶帳號Customer_Account中的資源。

相關文檔

跨阿里雲帳號的資源授權