全部產品
Search
文件中心

Alibaba Cloud SDK:憑據的安全使用方式情節

更新時間:Jul 01, 2024

憑據一旦發生泄露,會給雲上資源和使用者業務帶來很大的安全隱患。本文為您介紹常見的憑據安全使用方式情節。

常見的憑據類型有AccessKey(簡稱:AK)、臨時安全性權杖STS Token,更多資訊請參見憑據

常見的憑據泄露案例

  • 很多開發人員直接將AccessKey(簡稱AK)寫入程式碼在業務代碼中,有代碼倉庫閱讀許可權的開發人員均能擷取到AK資訊。開發人員直接將業務代碼上傳到開源社區或代碼託管服務,導致AK的進一步泄露。

  • 有些使用者為了能夠讓自己的用戶端直接調用到OpenAPI,將AK寫到用戶端代碼中。攻擊者通過反編譯用戶端代碼,擷取到AK資訊。

  • 開發人員的技術文檔或者分享材料中包含AK資訊。

  • 產品說明文檔中包含的範例代碼,包含AK資訊。

  • 使用者無許可權控制的介面中返回了憑據資訊。

安全使用方式情節

實現憑據安全使用方式情節的主要思路:避免研發階段不必要的憑據傳遞與寫入程式碼。

避免使用阿里雲帳號AK

由於阿里雲帳號(主帳號)擁有資源的所有許可權,其AK一旦泄露風險巨大,強烈不建議使用阿里雲帳號AK。

避免在代碼中寫入程式碼憑據

盡量避免在代碼中直接編寫憑據資訊,可以將憑據資訊寫入到系統內容變數中,代碼讀入環境變數。以在環境變數中設定AK為例,您需要配置系統內容變數ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET,具體操作步驟,請參見在Linux、macOS和Windows系統配置環境變數

範例程式碼如下:

public static com.aliyun.ecs20140526.Client createClient() throws Exception {
  com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
  config.endpoint = "ecs.cn-shanghai.aliyuncs.com";
  return new com.aliyun.ecs20140526.Client(config);
}

使用Key Management Service託管憑據

Key Management Service (KMS)支援託管憑據,更多資訊請參見憑據管理概述。如果您的憑據是RAM使用者的AK,您可以使用憑據管家功能對已託管的RAM憑據進行定期輪換或立即輪轉。您可通過在應用程式中安裝RAM憑據外掛程式的方式接入憑據管家,在應用程式執行過程中動態擷取到有效憑據,從而避免在代碼中寫入程式碼AK資訊。更多資訊請參見管理及使用RAM憑據

使用執行個體RAM角色

ECS執行個體、ECI執行個體、ACK的Worker節點均支援執行個體RAM角色。通過調用ECS的中繼資料服務(Meta Data Server)換取臨時安全身份憑證STS Token,避免AK寫入程式碼,降低AK泄露的風險。更多資訊,請參見通過ECS執行個體RAM角色授權ECS訪問其他雲資源ECI通過API使用執行個體RAM角色為ECI Pod綁定RAM角色

使用RRSA功能

Container Service Kubernetes 版中,一個叢集可以部署多個服務,同一個容器節點可能包含多個不同服務的Pod,在多租戶情境下,若部署不受信任的服務,該服務可直接存取ECS的中繼資料服務(Meta Data Server),擷取Worker節點關聯執行個體RAM角色的臨時令牌STS Token,會造成身份許可權的泄露。RRSA實現Pod層級的許可權隔離,該功能可自動將OIDC相關的資訊注入到環境變數中,您可使用Credentials工具換取臨時訪問憑據STS Token,詳情請參見通過RRSA配置ServiceAccount的RAM許可權實現Pod許可權隔離

使用Credentials工具包

Credentials工具包封裝了擷取和管理認證的功能邏輯,同時其預設憑據鏈功能更是能夠有效避免寫入程式碼憑據資訊,更多資訊參見管理訪問憑據

Security CenterAK泄露檢測

Security Center即時檢測GitHub平台公開原始碼中阿里雲帳號或RAM使用者的存取金鑰AK資訊,可識別出AK是否泄露,並提供相應的警示,建議您及時查看並處理外泄的AK事件。更多資訊,請參見AK泄露檢測

憑據泄露處理

AK泄露

  1. 禁用或刪除AK

    如果您的AK發生泄露,首先要對相關的AK進行禁用和刪除,並輪換使用新的AK。詳情請參見禁用RAM使用者的AccessKey刪除RAM使用者的AccessKey

  2. 查詢AK相關事件

    您可使用ActionTrail的AK審計功能,查詢AK基本資料、訪問的雲端服務及相關IP地址和資源,該功能可協助您追溯AK使用資訊,以便快速應對AK泄露等例外狀況事件。

STS Token泄露

雖然STS Token是臨時的身份令牌,但其有效期間的區間為15分鐘~12小時。如果STS Token發生泄露,依舊存在非常大的安全風險,您可以按以下步驟回收所有已經頒發的STS Token。

  1. 使用阿里雲帳號登入RAM控制台
  2. 移除RAM角色的所有權限原則。

    具體操作,請參見為RAM角色移除許可權

  3. 刪除RAM角色。

    具體操作,請參見刪除RAM角色

    刪除RAM角色後,所有通過扮演該RAM角色擷取的且未到期的STS Token都將立即失效。

如果您還需要使用該角色,您可以重新建立同名角色並授權相同的權限原則,使用新建立的角色繼續完成您的任務。

相關文檔

更多雲上安全實踐,請參閱以下文檔。