全部產品
Search
文件中心

Resource Access Management:對雲上應用進行動態身份管理與授權

更新時間:Feb 05, 2024

當企業購買阿里雲服務後,應用程式通過存取控制(RAM)可以擷取RAM角色的臨時安全性權杖,從而訪問阿里雲。

背景資訊

企業A購買了ECS執行個體,並計劃在ECS執行個體中部署企業的應用程式。這些應用程式需要使用存取金鑰(AccessKey)訪問其它雲端服務API。

有兩種做法:

  • 將存取金鑰直接嵌入在代碼裡。
  • 將存取金鑰儲存在應用程式的設定檔中。

這樣會帶來兩個問題:

  • 保密性問題:如果存取金鑰以明文形式存在於ECS執行個體中,可能會隨著快照、鏡像及鏡像建立出來的執行個體泄露。
  • 難營運問題:由於存取金鑰存在於執行個體中,如果要更換存取金鑰(例如:周期性輪轉或切換使用者身份),那麼需要對每個執行個體和鏡像進行更新並重新部署,這會增加對執行個體和鏡像管理的複雜性。

解決方案

ECS結合RAM提供的存取控制能力,允許給每一個ECS執行個體配置一個擁有合適許可權的RAM角色身份。應用程式通過擷取該RAM角色的臨時安全性權杖來訪問Cloud API。

操作流程

  1. 使用阿里雲帳號建立一個RAM角色(MyApplicationRole)。
    說明 建立RAM角色時受信實體選擇阿里雲服務,受信服務選擇雲端服務器,即允許ECS扮演該RAM角色來訪問阿里雲資源。

    具體操作,請參見建立可信實體為阿里雲服務的RAM角色

  2. 為RAM角色授權。

    具體操作,請參見為RAM角色授權

    說明 如果臨時安全性權杖許可權不足時,您可以根據需要為RAM角色添加相應的許可權。許可權更新後立即生效,無需重新啟動ECS執行個體。
  3. 使用阿里雲帳號建立一個RAM使用者。

    具體操作,請參見建立RAM使用者

  4. 為RAM使用者授權。
    • 若管理員和操作員是同一人,需要授權RAM使用者管理員權限:AdministratorAccess
    • 若管理員與操作員職責分離,需要建立以下自訂策略,將其授權給RAM使用者。
      {
         "Statement": [
          {
            "Effect": "Allow",
            "Action": "ram:PassRole",
            "Resource": "acs:ram:*:*:role/MyApplicationRole" //替換MyApplicationRole為自己的RAM角色名稱
          }
        ],
        "Version": "1"
      }                
      說明
      • 只有被授權的RAM使用者才能為ECS執行個體配置RAM角色,避免RAM角色許可權被濫用。
      • 如果RAM使用者沒有管理員權限,僅有管理ECS的許可權。在建立ECS執行個體並配置RAM角色時,ECS會強制檢查當前RAM使用者是否擁有指定RAM角色的ram:PassRole 許可權,否則將無法成功建立ECS執行個體。

    具體操作,請參見為RAM使用者授權

  5. 使用步驟3建立的RAM使用者,為目標ECS執行個體配置步驟1建立的RAM角色。
    具體操作,請參見配置ECS執行個體RAM角色
  6. ECS將通過執行個體中繼資料將臨時安全性權杖傳遞給ECS執行個體中的應用程式。
    • 若在Linux系統中,通過執行個體中繼資料可以擷取臨時安全性權杖及到期時間等資訊。請參見使用執行個體RAM角色訪問其他雲產品

      請求樣本

      curl http://100.100.100.200/latest/meta-data/ram/security-credentials/MyApplicationRole

      返回樣本

      {
          "AccessKeyId": "STS.J8XXXXXXXXXX4",
          "AccessKeySecret": "9PjfXXXXXXXXXBf2XAW",
          "Expiration": "2017-06-09T09:17:19Z",
          "SecurityToken": "CAIXXXXXXXXXXXwmBkleCTkyI+",
          "LastUpdated": "2017-06-09T08:17:19Z",
          "Code": "Success"
      }
    • 若應用程式使用了阿里雲SDK,無需在SDK中配置任何存取金鑰相關的資訊,阿里雲SDK將會自動從ECS執行個體中繼資料中擷取臨時安全性權杖。
      說明 臨時安全性權杖到期時間通常為1小時,有效期間內應用程式都能正常訪問阿里雲API,到期之前ECS會自動重新整理臨時安全性權杖。
  7. 應用程式使用臨時安全性權杖訪問阿里雲API。
說明 除ECS外,阿里雲其它計算類服務(例如:Function Compute、MaxCompute)也提供了類似的RAM角色訪問能力,以協助使用者解決雲上應用的動態身份管理與授權的問題。