全部產品
Search
文件中心

Key Management Service:憑據用戶端

更新時間:Dec 05, 2025

憑據用戶端是基於KMS OpenAPI和KMS執行個體API的自訂封裝,封裝了在應用中緩衝和重新整理憑據的功能,業務穩定性更高且更易於開發人員在業務應用中整合。憑據用戶端支援擷取所有憑據類型的憑據值。本文介紹如何安裝及使用憑據用戶端。

SDK介紹

憑據用戶端基於KMS執行個體API,封裝了憑據緩衝、最佳實務和設計模式,更易於開發人員在業務系統中整合。此外KMS還提供了KMS執行個體SDK和阿里雲SDK,也可以用於擷取憑據值。詳細資料,請參見SDK參考

說明

如果您需要對憑據進行管控類操作,僅支援使用阿里雲SDK。

憑據用戶端具有以下功能特性:

  • 支援開發人員在應用中快速整合憑據能力,一行代碼讀取憑據資訊。

  • 封裝憑據在應用中緩衝和重新整理的功能。

  • 封裝API錯誤的重試機制,智能處理服務端錯誤。

  • 開放外掛程式式設計模式,支援開發人員自訂擴充緩衝、錯誤重試等功能模組。

注意事項

  • 支援的憑據類型:通用憑據、RAM憑據、ECS憑據、資料庫憑據。

  • 支援的開發語言:Java(Java 8及以上版本)、Python、Go。

通過共用網關擷取憑據值

網路類型為公網或VPC網路。

步驟一:建立訪問憑證

支援ECS執行個體RAM角色、RamRoleArn、STS Token、AccessKey等基於RAM的身份認證方式。詳細內容,請參見管理訪問憑據

ECS執行個體RAM角色

ECS RAM角色是指為ECS執行個體授予的RAM角色,該RAM角色是一個受信服務為雲端服務器的普通服務角色。使用執行個體RAM角色可以實現在ECS執行個體內部無需配置AccessKey即可擷取臨時訪問憑證(STS Token),從而調用KMS的OpenAPI。

具體操作,請參見執行個體RAM角色

  1. 登入RAM控制台,建立可信實體為阿里雲服務的RAM角色。

    • 信任主體類型:選擇雲端服務

    • 信任主體名稱:選擇Elastic Compute Service

  2. 授予RAM角色訪問KMS的許可權。

    • 方式一:設定基於身份的策略

      KMS內建了系統權限原則,可以直接綁定到RAM角色,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。image

    • 方式二:設定基於資源的策略

      KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略憑據策略

  3. 登入ECS管理主控台,將RAM角色授予ECS執行個體。image

RamRoleArn

RAM使用者或雲產品可以通過扮演角色的方式擷取臨時許可權,而不是直接使用長期密鑰,降低了密鑰泄露的風險。例如,在臨時的資料處理任務中,RAM使用者或雲產品臨時扮演一個具有特定RamRoleArn的角色,完成任務后角色許可權被收回,減少泄露風險。

  1. 登入RAM控制台,建立RAM角色。具體操作,請參見建立RAM角色image

  2. 授予RAM角色訪問KMS的許可權。

    • 方式一:設定基於身份的策略

      KMS內建了系統權限原則,可以直接綁定到RAM角色,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。image

    • 方式二:設定基於資源的策略

      KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略憑據策略

  3. 擷取目標RAM角色的RamRoleArn。具體操作,請參見查看RAM角色

    說明

    RamRoleArn是RAM角色的ARN資訊,即需要扮演的角色ID。格式為acs:ram::$accountID:role/$roleName。$accountID為阿里雲帳號ID。$roleName為RAM角色名稱。

    image

STS Token

通過STS服務為RAM使用者或RAM角色頒發一個臨時訪問憑證,可以在限定的有效期間內,以符合策略規定的許可權訪問KMS,超過有效期間後,該憑證自動失效。

  1. 登入RAM控制台,建立RAM使用者或RAM角色。具體操作,請參見建立RAM使用者建立RAM角色image

  2. 為RAM使用者或RAM角色授予AliyunSTSAssumeRoleAccess許可權。具體操作,請參見為RAM使用者授權為RAM角色授權image

  3. 授予RAM使用者或RAM角色訪問KMS的許可權。

    • 方式一:設定基於身份的策略

      KMS內建了系統權限原則,可以直接綁定到RAM使用者或RAM角色,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。image

    • 方式二:設定基於資源的策略

      KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略憑據策略

  4. 使用RAM使用者或RAM角色調用STS服務的AssumeRole介面擷取STS臨時訪問憑證。具體操作,請參見AssumeRole - 擷取扮演角色的臨時身份憑證

AccessKey

以使用RAM使用者的AccessKey為例。

阿里雲帳號預設有所有資源的Administrator許可權且不可修改,其AccessKey泄露會危及資源安全,因此強烈建議不要為主帳號建立AccessKey,請建立專用於API訪問的RAM使用者並建立對應的AccessKey,並完成最小化授權。具體操作,請參見建立AccessKey

  1. 登入RAM控制台,在使用者頁面,單擊目標RAM使用者名稱稱。

  2. 認證管理頁簽下的AccessKey地區,單擊建立AccessKey,並按照指引完成建立。image

  3. 授予RAM使用者訪問KMS的許可權。

    • 方式一:設定基於身份的策略

      KMS內建了系統權限原則,可以直接綁定到RAM使用者,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。image

    • 方式二:設定基於資源的策略

      KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略憑據策略

ClientKey(不推薦)

請參考建立應用存取點中的標準建立方式,建立用於訪問共用網關的ClientKey。

重要
  • 配置網路規則時,網路類型選擇PublicVPC

  • 配置許可權規則範圍時,請選擇KMS共享网关

步驟二:安裝憑據用戶端

Java

通過Maven的方式在專案中安裝憑據用戶端。

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibabacloud-secretsmanager-client</artifactId>
    <version>1.4.x</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.5.x</version>
</dependency>
重要

建議您使用最新版本,訪問alibabacloud-secretsmanager-client-java瞭解更多版本和原始碼資訊。

Python

訪問aliyun-secretsmanager-client-python瞭解更多安裝資訊和原始碼。

執行pip命令安裝憑據用戶端。

# 如果下述命令報錯,請將pip替換為pip3
pip install aliyun-secret-manager-client

Go

訪問aliyun-secretsmanager-client-go瞭解更多安裝資訊和原始碼。

使用go get命令安裝憑據用戶端。

重要

Go語言下憑據用戶端依賴的alibaba-cloud-sdk-go 版本需小於v1.63.0,請在外掛程式的 go.mod 檔案中檢查並確認版本,以避免潛在的相容性問題。

go get -u github.com/aliyun/aliyun-secretsmanager-client-go

步驟三:初始化用戶端並擷取憑據值

Java

根據初始化用戶端方式不同,擷取憑據值範例程式碼不同。請選擇以下一種方式即可。

  • 方式一:通過環境變數或secretsmanager.properties設定檔初始化用戶端

    環境變數或secretsmanager.properties設定檔選其中一種即可。

    環境變數

    不同作業系統的環境變數配置方法不同,具體操作,請參見在Linux、macOS和Windows系統配置環境變數

    ECS執行個體RAM角色

    參數

    參數值

    credentials_type

    固定取值ecs_ram_role。

    credentials_role_name

    RAM角色名稱。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    RamRoleArn

    參數

    參數值

    credentials_type

    固定取值ram_role。

    credentials_role_session_name

    RAM角色的名稱。

    credentials_role_arn

    RAM角色的資源ARN。

    credentials_access_key_id

    AccessKey ID。

    credentials_access_secret

    AccessKey Secret。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    STS Token

    參數

    參數值

    credentials_type

    固定取值sts。

    credentials_role_session_name

    RAM角色名稱。

    credentials_role_arn

    RAM角色的資源ARN。

    credentials_access_key_id

    AccessKey ID。

    credentials_access_secret

    AccessKey Secret。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    AccessKey

    參數

    參數值

    credentials_type

    固定取值ak。

    credentials_access_key_id

    AccessKey ID。

    credentials_access_secret

    AccessKey Secret。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    ClientKey

    參數

    參數值

    credentials_type

    固定取值client_key。

    client_key_password_from_env_variable

    表示從系統內容變數擷取ClientKey的憑證口令(password)。取值為password的系統內容變數名稱。

    配置本參數時,您需要將password配置到系統內容變數中,變數名稱由您自訂。

    client_key_password_from_file_path

    表示從檔案中擷取ClientKey的憑證口令(password)。取值為password的檔案絕對路徑或相對路徑。

    配置本參數時,您需要將password配置到檔案中,檔案名稱由您自訂。

    說明

    client_key_password_from_env_variable與client_key_password_from_file_path為二選一。

    client_key_private_key_path

    ClientKey檔案的絕對路徑或相對路徑。

    配置本參數時,您需要將ClientKey檔案儲存到合適位置,檔案名稱由您自訂。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    secretsmanager.properties設定檔

    設定檔名稱固定為secretsmanager.properties

    不同的認證方式,需要設定的設定檔內容不同。

    ECS執行個體RAM角色

    # 訪問憑據類型
    credentials_type=ecs_ram_role
    # ECS RAM Role名稱
    credentials_role_name=#credentials_role_name#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]

    RAMRoleArn

    # 訪問憑據類型
    credentials_type=ram_role
    # 角色名稱
    credentials_role_session_name=#role name#
    # 資源簡短名稱
    credentials_role_arn=#role arn#
    # AK
    credentials_access_key_id=#access key id#
    # SK
    credentials_access_secret=#access key secret#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]

    STS Token

    # 訪問憑據類型
    credentials_type=sts
    # 角色名稱
    credentials_role_session_name=#role name#
    # 資源簡短名稱
    credentials_role_arn=#role arn#
    # AK
    credentials_access_key_id=#access key id#
    # SK
    credentials_access_secret=#access key secret#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]

    AccessKey

    # 訪問憑據類型
    credentials_type=ak
    # AK
    credentials_access_key_id=#access key id#
    # SK
    credentials_access_secret=#access key secret#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]

    ClientKey

    # 訪問憑據類型
    credentials_type=client_key
    
    # 讀取client key的解密密碼:支援從環境變數或者檔案讀取
    client_key_password_from_env_variable=#your client key private key password environment variable name#
    client_key_password_from_file_path=#your client key private key password file path#
    
    # Client Key私密金鑰檔案路徑
    client_key_private_key_path=#your client key private key file path#
    
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]

    擷取憑據值範例程式碼如下,請將範例程式碼中的#secretName#替換為您的憑據名稱。

    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
    import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
    import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
    
    public class CacheClientEnvironmentSample {
    
        public static void main(String[] args) {
            try {
                //構建憑據用戶端
                SecretCacheClient client = SecretCacheClientBuilder.newClient();
                //使用構建好的用戶端擷取憑據資訊
                SecretInfo secretInfo = client.getSecretInfo("#secretName#");
                System.out.println(secretInfo);
            } catch (CacheSecretException e) {
                e.printStackTrace();
            }
        }
    }
  • 方式二:通過自訂設定檔初始化用戶端

    需要注意設定檔名稱和檔案路徑由您自行定義。

    設定檔

    不同的認證方式,需要設定的設定檔內容不同。

    ECS執行個體RAM角色
    # 訪問憑據類型
    credentials_type=ecs_ram_role
    # ECS RAM Role名稱
    credentials_role_name=#credentials_role_name#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]
    RAMRoleArn
    # 訪問憑據類型
    credentials_type=ram_role
    # 角色名稱
    credentials_role_session_name=#role name#
    # 資源簡短名稱
    credentials_role_arn=#role arn#
    # AK
    credentials_access_key_id=#access key id#
    # SK
    credentials_access_secret=#access key secret#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]
    STS Token
    # 訪問憑據類型
    credentials_type=sts
    # 角色名稱
    credentials_role_session_name=#role name#
    # 資源簡短名稱
    credentials_role_arn=#role arn#
    # AK
    credentials_access_key_id=#access key id#
    # SK
    credentials_access_secret=#access key secret#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]
    AccessKey
    # 訪問憑據類型
    credentials_type=ak
    # AK
    credentials_access_key_id=#access key id#
    # SK
    credentials_access_secret=#access key secret#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]
    ClientKey
    # 訪問憑據類型
    credentials_type=client_key
    
    # 讀取client key的解密密碼:支援從環境變數或者檔案讀取
    client_key_password_from_env_variable=#your client key private key password environment variable name#
    client_key_password_from_file_path=#your client key private key password file path#
    
    # Client Key私密金鑰檔案路徑
    client_key_private_key_path=#your client key private key file path#
    
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]

    擷取憑據值範例程式碼如下,請將範例程式碼中的#customConfigFileName#替換為您自訂的設定檔名稱,#secretName#替換為您的憑據名稱。

    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
    import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
    import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
    import com.aliyuncs.kms.secretsmanager.client.service.BaseSecretManagerClientBuilder;
    
    public class CacheClientCustomConfigFileSample {
    
        public static void main(String[] args) {
            try {
                SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                        BaseSecretManagerClientBuilder.standard().withCustomConfigFile("#customConfigFileName#").build()).build();
                SecretInfo secretInfo = client.getSecretInfo("#secretName#");
                System.out.println(secretInfo);
            } catch (CacheSecretException e) {
                System.out.println("CacheSecretException:" + e.getMessage());
            }
        }
    }
  • 方式三:通過指定參數(accessKey、accessSecret、regionId)初始化用戶端

    僅適用於認證方式為AccessKey的情境。

    說明

    阿里雲帳號AccessKey擁有所有OpenAPI的存取權限,建議您使用RAM使用者進行API訪問或日常營運。強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。

    本樣本以將AccessKey配置在環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式來實現身分識別驗證為例。

    擷取憑據值範例程式碼如下,請將範例程式碼中的#regionId#替換為實際地區ID,#secretName#替換為您的憑據名稱。

    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
    import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
    import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
    import com.aliyuncs.kms.secretsmanager.client.service.BaseSecretManagerClientBuilder;
    import com.aliyuncs.kms.secretsmanager.client.utils.CredentialsProviderUtils;
    
    public class CacheClientSimpleParametersSample {
    
        public static void main(String[] args) {
            try {
                SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                        BaseSecretManagerClientBuilder.standard().withCredentialsProvider(CredentialsProviderUtils
                                .withAccessKey(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))).withRegion("#regionId#").build()).build();
                SecretInfo secretInfo = client.getSecretInfo("#secretName#");
                System.out.println(secretInfo);
            } catch (CacheSecretException e) {
                e.printStackTrace();
            }
        }
    }

Python

根據初始化用戶端方式不同,擷取憑據值範例程式碼不同。請選擇以下一種方式即可。

  • 方式一:通過環境變數或secretsmanager.properties設定檔初始化用戶端

    環境變數或secretsmanager.properties設定檔選其中一種即可。

    環境變數

    不同作業系統的環境變數配置方法不同,具體操作,請參見在Linux、macOS和Windows系統配置環境變數

    ECS執行個體RAM角色

    參數

    參數值

    credentials_type

    固定取值ecs_ram_role。

    credentials_role_name

    RAM角色名稱。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    RamRoleArn

    參數

    參數值

    credentials_type

    固定取值ram_role。

    credentials_role_session_name

    RAM角色的名稱。

    credentials_role_arn

    RAM角色的資源ARN。

    credentials_access_key_id

    AccessKey ID。

    credentials_access_secret

    AccessKey Secret。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    STS Token

    參數

    參數值

    credentials_type

    固定取值sts。

    credentials_role_session_name

    RAM角色名稱。

    credentials_role_arn

    RAM角色的資源ARN。

    credentials_access_key_id

    AccessKey ID。

    credentials_access_secret

    AccessKey Secret。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    AccessKey

    參數

    參數值

    credentials_type

    固定取值ak。

    credentials_access_key_id

    AccessKey ID。

    credentials_access_secret

    AccessKey Secret。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    ClientKey

    參數

    參數值

    credentials_type

    固定取值client_key。

    client_key_password_from_env_variable

    表示從系統內容變數擷取ClientKey的憑證口令(password)。取值為password的系統內容變數名稱。

    配置本參數時,您需要將password配置到系統內容變數中,變數名稱由您自訂。

    client_key_password_from_file_path

    表示從檔案中擷取ClientKey的憑證口令(password)。取值為password的檔案絕對路徑或相對路徑。

    配置本參數時,您需要將password配置到檔案中,檔案名稱由您自訂。

    說明

    client_key_password_from_env_variable與client_key_password_from_file_path為二選一。

    client_key_private_key_path

    ClientKey檔案的絕對路徑或相對路徑。

    配置本參數時,您需要將ClientKey檔案儲存到合適位置,檔案名稱由您自訂。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    secretsmanager.properties設定檔

    設定檔名稱固定為secretsmanager.properties

    不同的認證方式,需要設定的設定檔內容不同。

    ECS執行個體RAM角色
    # 訪問憑據類型
    credentials_type=ecs_ram_role
    # ECS RAM Role名稱
    credentials_role_name=#credentials_role_name#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]
    RAMRoleArn
    # 訪問憑據類型
    credentials_type=ram_role
    # 角色名稱
    credentials_role_session_name=#role name#
    # 資源簡短名稱
    credentials_role_arn=#role arn#
    # AK
    credentials_access_key_id=#access key id#
    # SK
    credentials_access_secret=#access key secret#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]
    STS Token
    # 訪問憑據類型
    credentials_type=sts
    # 角色名稱
    credentials_role_session_name=#role name#
    # 資源簡短名稱
    credentials_role_arn=#role arn#
    # AK
    credentials_access_key_id=#access key id#
    # SK
    credentials_access_secret=#access key secret#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]
    AccessKey
    # 訪問憑據類型
    credentials_type=ak
    # AK
    credentials_access_key_id=#access key id#
    # SK
    credentials_access_secret=#access key secret#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]
    ClientKey
    # 訪問憑據類型
    credentials_type=client_key
    
    # 讀取client key的解密密碼:支援從環境變數或者檔案讀取
    client_key_password_from_env_variable=#your client key private key password environment variable name#
    client_key_password_from_file_path=#your client key private key password file path#
    
    # Client Key私密金鑰檔案路徑
    client_key_private_key_path=#your client key private key file path#
    
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]

    擷取憑據值範例程式碼如下,請將範例程式碼中的#secretName#替換為您的憑據名稱。

    from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
    
    if __name__ == '__main__':
        #構建憑據用戶端
        secret_cache_client = SecretManagerCacheClientBuilder.new_client()
        #使用構建好的用戶端擷取憑據資訊
        secret_info = secret_cache_client.get_secret_info("#secretName#")
        print(secret_info.__dict__)
  • 方式二:通過指定參數(accessKey、accessSecret、regionId)初始化用戶端

    僅適用於認證方式為AccessKey的情境。

    說明

    阿里雲帳號AccessKey擁有所有OpenAPI的存取權限,建議您使用RAM使用者進行API訪問或日常營運。強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。

    本樣本以將AccessKey配置在環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式來實現身分識別驗證為例。

    擷取憑據值範例程式碼如下,請將範例程式碼中的#regionId#替換為實際地區ID,#secretName#替換為您的憑據名稱。

    import os
    
    from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
    from alibaba_cloud_secretsmanager_client.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder
    
    if __name__ == '__main__':
        secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(DefaultSecretManagerClientBuilder.standard() \
            .with_access_key(os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")) \
            .with_region("#regionId#").build()) \
        .build();
        secret_info = secret_cache_client.get_secret_info("#secretName#")
        print(secret_info.__dict__)

Go

根據初始化用戶端方式不同,擷取憑據值範例程式碼不同。請選擇以下一種方式即可。

  • 方式一:通過環境變數或secretsmanager.properties設定檔初始化用戶端

    環境變數或secretsmanager.properties設定檔選其中一種即可。

    環境變數

    不同作業系統的環境變數配置方法不同,具體操作,請參見在Linux、macOS和Windows系統配置環境變數

    ECS執行個體RAM角色

    參數

    參數值

    credentials_type

    固定取值ecs_ram_role。

    credentials_role_name

    RAM角色名稱。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    RamRoleArn

    參數

    參數值

    credentials_type

    固定取值ram_role。

    credentials_role_session_name

    RAM角色的名稱。

    credentials_role_arn

    RAM角色的資源ARN。

    credentials_access_key_id

    AccessKey ID。

    credentials_access_secret

    AccessKey Secret。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    STS Token

    參數

    參數值

    credentials_type

    固定取值sts。

    credentials_role_session_name

    RAM角色名稱。

    credentials_role_arn

    RAM角色的資源ARN。

    credentials_access_key_id

    AccessKey ID。

    credentials_access_secret

    AccessKey Secret。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    AccessKey

    參數

    參數值

    credentials_type

    固定取值ak。

    credentials_access_key_id

    AccessKey ID。

    credentials_access_secret

    AccessKey Secret。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    ClientKey

    參數

    參數值

    credentials_type

    固定取值client_key。

    client_key_password_from_env_variable

    表示從系統內容變數擷取ClientKey的憑證口令(password)。取值為password的系統內容變數名稱。

    配置本參數時,您需要將password配置到系統內容變數中,變數名稱由您自訂。

    client_key_password_from_file_path

    表示從檔案中擷取ClientKey的憑證口令(password)。取值為password的檔案絕對路徑或相對路徑。

    配置本參數時,您需要將password配置到檔案中,檔案名稱由您自訂。

    說明

    client_key_password_from_env_variable與client_key_password_from_file_path為二選一。

    client_key_private_key_path

    ClientKey檔案的絕對路徑或相對路徑。

    配置本參數時,您需要將ClientKey檔案儲存到合適位置,檔案名稱由您自訂。

    cache_client_region_id

    格式為[{"regionId":"<your region id>"}],請將<your region id>替換為您真實的地區ID。

    重要

    Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即[{\"regionId\":\"<your region id>\"}]

    secretsmanager.properties設定檔

    設定檔名稱固定為secretsmanager.properties

    不同的認證方式,需要設定的設定檔內容不同。

    ECS執行個體RAM角色
    # 訪問憑據類型
    credentials_type=ecs_ram_role
    # ECS RAM Role名稱
    credentials_role_name=#credentials_role_name#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]
    RAMRoleArn
    # 訪問憑據類型
    credentials_type=ram_role
    # 角色名稱
    credentials_role_session_name=#role name#
    # 資源簡短名稱
    credentials_role_arn=#role arn#
    # AK
    credentials_access_key_id=#access key id#
    # SK
    credentials_access_secret=#access key secret#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]
    STS Token
    # 訪問憑據類型
    credentials_type=sts
    # 角色名稱
    credentials_role_session_name=#role name#
    # 資源簡短名稱
    credentials_role_arn=#role arn#
    # AK
    credentials_access_key_id=#access key id#
    # SK
    credentials_access_secret=#access key secret#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]
    AccessKey
    # 訪問憑據類型
    credentials_type=ak
    # AK
    credentials_access_key_id=#access key id#
    # SK
    credentials_access_secret=#access key secret#
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]
    ClientKey
    # 訪問憑據類型
    credentials_type=client_key
    
    # 讀取client key的解密密碼:支援從環境變數或者檔案讀取
    client_key_password_from_env_variable=#your client key private key password environment variable name#
    client_key_password_from_file_path=#your client key private key password file path#
    
    # Client Key私密金鑰檔案路徑
    client_key_private_key_path=#your client key private key file path#
    
    # 關聯的KMS服務地區
    cache_client_region_id=[{"regionId":"#regionId#"}]

    擷取憑據值範例程式碼如下,請將範例程式碼中的#secretName#替換為您的憑據名稱。

    package main
    
    import (
        "fmt"
        "github.com/aliyun/aliyun-secretsmanager-client-go/sdk"
    )
    func main() { 
       //構建憑據用戶端
        client, err := sdk.NewClient()
        if err != nil {
            // Handle exceptions
            panic(err)
        }
       //使用構建好的用戶端擷取憑據資訊
        secretInfo, err := client.GetSecretInfo("#secretName#")
        if err != nil {
            // Handle exceptions
            panic(err)
        }
        fmt.Printf("SecretValue:%s\n",secretInfo.SecretValue)
    }
  • 通過指定參數(accessKey、accessSecret、regionId)初始化用戶端

    僅適用於認證方式為AccessKey的情境。

    說明

    阿里雲帳號AccessKey擁有所有OpenAPI的存取權限,建議您使用RAM使用者進行API訪問或日常營運。強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。

    本樣本以將AccessKey配置在環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式來實現身分識別驗證為例。

    擷取憑據值範例程式碼如下,請將範例程式碼中的#regionId#替換為實際地區ID,#secretName#替換為您的憑據名稱。

    package main
    
    import (
    	"github.com/aliyun/aliyun-secretsmanager-client-go/sdk/service"
    	"github.com/aliyun/aliyun-secretsmanager-client-go/sdk"
    	"os"
    )
    
    func main() {
    	client, err := sdk.NewSecretCacheClientBuilder(service.NewDefaultSecretManagerClientBuilder().Standard().WithAccessKey(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")).WithRegion("#regionId#").Build()).Build()
    	if err != nil {
    		// Handle exceptions
    		panic(err)
    	}
    	secretInfo, err := client.GetSecretInfo("#secretName#")
    	if err != nil {
    		// Handle exceptions
    		panic(err)
    	}
    }

通過專屬網關擷取憑據值(不推薦)

網路類型為KMS私人網路。

步驟一:建立訪問憑證

訪問憑證僅支援ClientKey。

ClientKey支援快速建立和標準建立兩種方式。關於ClientKey的詳細介紹,請參見應用存取點概述建立應用存取點

  • 方式一:快速建立

    便捷高效適合於快速測試和開發情境,該方式建立的訪問憑證可以訪問KMS執行個體的全部資源。

    1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊应用接入 > 接入点

    2. 应用接入頁簽,單擊创建应用接入点,在创建应用接入点面板完成各項配置。

      配置項

      說明

      创建模式

      選擇快速创建

      作用域(KMS实例)

      選擇應用要訪問的KMS執行個體。

      应用接入点名称

      自訂應用存取點的名稱。

      认证方式

      預設為ClientKey,不支援修改。

      默认权限策略

      預設為key/*secret/*,不支援修改。即應用可以訪問指定KMS執行個體中的所有密鑰和憑據。

    3. 單擊確定,瀏覽器會自動下載ClientKey。

      ClientKey包含應用身份憑證內容(ClientKeyContent)憑證口令(ClientKeyPassword)應用身份憑證內容(ClientKeyContent)檔案名稱預設為clientKey_****.json憑證口令(ClientKeyPassword)檔案名稱預設為clientKey_****_Password.txt

  • 方式二:標準建立

    若您希望對資源設定更精細化的存取權限,建議您使用標準建立。具體操作,請參考建立應用存取點

    重要

    建立應用存取點時如果選擇標準建立,需要注意以下兩點:

    • 配置網路規則時,網路類型選擇Private

    • 配置許可權規則範圍時,請選擇對應的KMS執行個體ID

步驟二:安裝憑據用戶端

Java

通過Maven的方式在專案中安裝憑據用戶端。

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibabacloud-secretsmanager-client</artifactId>
    <version>1.4.x</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.5.x</version>
</dependency>
重要

建議您使用最新版本,訪問alibabacloud-secretsmanager-client-java瞭解更多版本和原始碼資訊。

Python

訪問aliyun-secretsmanager-client-python瞭解更多安裝資訊和原始碼。

執行pip命令安裝憑據用戶端。

# 如果下述命令報錯,請將pip替換為pip3
pip install aliyun-secret-manager-client

Go

訪問aliyun-secretsmanager-client-go瞭解更多安裝資訊和原始碼。

使用go get命令安裝憑據用戶端。

go get -u github.com/aliyun/aliyun-secretsmanager-client-go

步驟三:初始化憑據用戶端並擷取憑據值

Java

根據初始化用戶端方式不同,擷取憑據值範例程式碼不同。請選擇以下一種方式即可。

  • 方式一:通過環境變數或secretsmanager.properties設定檔初始化用戶端

    環境變數或secretsmanager.properties設定檔選其中一種即可。

    環境變數

    • 方式一:通過環境變數擷取ClientKey憑證口令

      參數

      參數值

      cache_client_dkms_config_info

      參數值格式為[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      該方式您還需要將ClientKey的憑證口令(ClientKeyPassword)的內容配置到環境變數中,變數名稱由您自訂,配置完成後將<YOUR_PASSWORD_ENV_VARIABLE>替換為變數名稱。

      以Linux作業系統為例,樣本如下:

      export cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
    • 方式二:通過檔案擷取ClientKey憑證口令

      ClientKey的憑證口令(ClientKeyPassword)下載後檔案名稱預設為clientKey_****_Password.txt,您也可以修改檔案名稱,但需要將cache_client_dkms_config_info取值中<your Client Key file path>替換為修改後的檔案路徑。

      參數

      參數值

      cache_client_dkms_config_info

      參數值格式為:[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      以Linux作業系統為例,樣本為:

      export cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]

    各配置項說明:

    配置項

    配置項含義

    說明

    regionId

    KMS執行個體所在地區ID。

    具體的地區ID,請參見地區和可用性區域

    endpoint

    KMS執行個體的網域名稱地址,格式為{執行個體ID}.kms.aliyuncs.com

    訪問实例管理頁面,在執行個體詳情頁面查看实例VPC地址,即endpoint。

    clientKeyFile

    ClientKey檔案(JSON格式)的絕對路徑或相對路徑。

    • ClientKey檔案:在應用存取點AAP中建立ClientKey時下載的应用身份凭证内容(ClientKeyContent),下載後檔案名稱預設為ClientKey_******.json。

    • 憑證口令:在應用存取點AAP中建立ClientKey時下載的憑證口令(ClientKeyPassword),下載後檔案名稱預設為ClientKey_******_password.txt。

    重要

    ClientKey檔案和憑證口令是一一對應的,僅支援您在建立ClientKey時擷取。如果您在建立時未儲存,則需要在應用存取點AAP中重新建立ClientKey。更多詳細內容,請參見建立應用存取點

    passwordFromFilePathpasswordFromEnvVariable

    • passwordFromFilePath:從檔案中擷取憑證口令,取值為檔案的絕對路徑或相對路徑。您需要將憑證口令儲存到檔案中。

    • passwordFromEnvVariable:從環境變數擷取憑證口令,取值為環境變數名稱。您需要將憑證口令配置到環境變數中。

    ignoreSslCerts

    是否忽略KMS執行個體SSL認證的有效性檢查。KMS執行個體內建SSL認證,使用SSL/TLS協議用於身分識別驗證和加密通訊。取值:

    • true:表示忽略,不檢查KMS執行個體SSL認證的有效性。

      說明

      取值為true時,無需配置caFilePath

    • false:表示驗證,檢查KMS執行個體SSL認證的有效性。

    正式生產環境中,請將該值設定為false。

    caFilePath

    KMS執行個體CA認證檔案的絕對路徑或相對路徑。

    KMS執行個體CA認證,用於檢查KMS執行個體SSL認證的有效性。例如:檢查KMS執行個體SSL認證是否由對應的CA中心簽發、是否在有效期間內、以及對應的網域名稱是否為KMS執行個體的網域名稱地址(endpoint)。

    訪問实例管理頁面,在執行個體詳情頁面,單擊实例CA证书地區的下载

    secretsmanager.properties設定檔

    設定檔名稱固定為secretsmanager.properties

    參數配置項為cache_client_dkms_config_infocache_client_dkms_config_info採用JSON數組格式,您可配置多個KMS執行個體,以支援業務獲得更高標準的服務可用性保障和容災能力。

    • 方式一:通過環境變數擷取ClientKey憑證口令

      設定檔內容為:

      cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      該方式您還需要將ClientKey的憑證口令(ClientKeyPassword)的內容配置到環境變數中,變數名稱由您自訂,配置完成後將<YOUR_PASSWORD_ENV_VARIABLE>替換為變數名稱。樣本如下:

      cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
    • 方式二:通過檔案擷取ClientKey憑證口令

      ClientKey的憑證口令(ClientKeyPassword)下載後檔案名稱預設為clientKey_****_Password.txt,您也可以修改檔案名稱,但需要將cache_client_dkms_config_info取值中<your Client Key file path>替換為修改後的檔案路徑。

      設定檔內容為:

      cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      樣本如下:

      cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]

    各配置項說明:

    配置項

    配置項含義

    說明

    regionId

    KMS執行個體所在地區ID。

    具體的地區ID,請參見地區和可用性區域

    endpoint

    KMS執行個體的網域名稱地址,格式為{執行個體ID}.kms.aliyuncs.com

    訪問实例管理頁面,在執行個體詳情頁面查看实例VPC地址,即endpoint。

    clientKeyFile

    ClientKey檔案(JSON格式)的絕對路徑或相對路徑。

    • ClientKey檔案:在應用存取點AAP中建立ClientKey時下載的应用身份凭证内容(ClientKeyContent),下載後檔案名稱預設為ClientKey_******.json。

    • 憑證口令:在應用存取點AAP中建立ClientKey時下載的憑證口令(ClientKeyPassword),下載後檔案名稱預設為ClientKey_******_password.txt。

    重要

    ClientKey檔案和憑證口令是一一對應的,僅支援您在建立ClientKey時擷取。如果您在建立時未儲存,則需要在應用存取點AAP中重新建立ClientKey。更多詳細內容,請參見建立應用存取點

    passwordFromFilePathpasswordFromEnvVariable

    • passwordFromFilePath:從檔案中擷取憑證口令,取值為檔案的絕對路徑或相對路徑。您需要將憑證口令儲存到檔案中。

    • passwordFromEnvVariable:從環境變數擷取憑證口令,取值為環境變數名稱。您需要將憑證口令配置到環境變數中。

    ignoreSslCerts

    是否忽略KMS執行個體SSL認證的有效性檢查。KMS執行個體內建SSL認證,使用SSL/TLS協議用於身分識別驗證和加密通訊。取值:

    • true:表示忽略,不檢查KMS執行個體SSL認證的有效性。

      說明

      取值為true時,無需配置caFilePath

    • false:表示驗證,檢查KMS執行個體SSL認證的有效性。

    正式生產環境中,請將該值設定為false。

    caFilePath

    KMS執行個體CA認證檔案的絕對路徑或相對路徑。

    KMS執行個體CA認證,用於檢查KMS執行個體SSL認證的有效性。例如:檢查KMS執行個體SSL認證是否由對應的CA中心簽發、是否在有效期間內、以及對應的網域名稱是否為KMS執行個體的網域名稱地址(endpoint)。

    訪問实例管理頁面,在執行個體詳情頁面,單擊实例CA证书地區的下载

    擷取憑據值範例程式碼如下,請將範例程式碼中的#secretName#替換為您的憑據名稱。

    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
    import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
    import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
    
    public class CacheClientEnvironmentSample {
    
        public static void main(String[] args) {
            try {
                //構建憑據用戶端
                SecretCacheClient client = SecretCacheClientBuilder.newClient();
                //使用構建好的用戶端擷取憑據資訊
                SecretInfo secretInfo = client.getSecretInfo("#secretName#");
                System.out.println(secretInfo);
            } catch (CacheSecretException e) {
                e.printStackTrace();
            }
        }
    }
  • 方式二:通過自訂設定檔初始化用戶端

    設定檔名稱和檔案路徑由您自行定義。

    設定檔

    參數配置項為cache_client_dkms_config_infocache_client_dkms_config_info採用JSON數組格式,您可配置多個KMS執行個體,以支援業務獲得更高標準的服務可用性保障和容災能力。

    • 方式一:通過環境變數擷取ClientKey憑證口令

      設定檔內容為:

      cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      該方式您還需要將ClientKey的憑證口令(ClientKeyPassword)的內容配置到環境變數中,變數名稱由您自訂,配置完成後將<YOUR_PASSWORD_ENV_VARIABLE>替換為變數名稱。樣本如下:

      cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
    • 方式二:通過檔案擷取ClientKey憑證口令

      ClientKey的憑證口令(ClientKeyPassword)下載後檔案名稱預設為clientKey_****_Password.txt,您也可以修改檔案名稱,但需要將cache_client_dkms_config_info取值中<your Client Key file path>替換為修改後的檔案路徑。

      設定檔內容為:

      cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      樣本如下:

      cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]

    各配置項說明:

    配置項

    配置項含義

    說明

    regionId

    KMS執行個體所在地區ID。

    具體的地區ID,請參見地區和可用性區域

    endpoint

    KMS執行個體的網域名稱地址,格式為{執行個體ID}.kms.aliyuncs.com

    訪問实例管理頁面,在執行個體詳情頁面查看实例VPC地址,即endpoint。

    clientKeyFile

    ClientKey檔案(JSON格式)的絕對路徑或相對路徑。

    • ClientKey檔案:在應用存取點AAP中建立ClientKey時下載的应用身份凭证内容(ClientKeyContent),下載後檔案名稱預設為ClientKey_******.json。

    • 憑證口令:在應用存取點AAP中建立ClientKey時下載的憑證口令(ClientKeyPassword),下載後檔案名稱預設為ClientKey_******_password.txt。

    重要

    ClientKey檔案和憑證口令是一一對應的,僅支援您在建立ClientKey時擷取。如果您在建立時未儲存,則需要在應用存取點AAP中重新建立ClientKey。更多詳細內容,請參見建立應用存取點

    passwordFromFilePathpasswordFromEnvVariable

    • passwordFromFilePath:從檔案中擷取憑證口令,取值為檔案的絕對路徑或相對路徑。您需要將憑證口令儲存到檔案中。

    • passwordFromEnvVariable:從環境變數擷取憑證口令,取值為環境變數名稱。您需要將憑證口令配置到環境變數中。

    ignoreSslCerts

    是否忽略KMS執行個體SSL認證的有效性檢查。KMS執行個體內建SSL認證,使用SSL/TLS協議用於身分識別驗證和加密通訊。取值:

    • true:表示忽略,不檢查KMS執行個體SSL認證的有效性。

      說明

      取值為true時,無需配置caFilePath

    • false:表示驗證,檢查KMS執行個體SSL認證的有效性。

    正式生產環境中,請將該值設定為false。

    caFilePath

    KMS執行個體CA認證檔案的絕對路徑或相對路徑。

    KMS執行個體CA認證,用於檢查KMS執行個體SSL認證的有效性。例如:檢查KMS執行個體SSL認證是否由對應的CA中心簽發、是否在有效期間內、以及對應的網域名稱是否為KMS執行個體的網域名稱地址(endpoint)。

    訪問实例管理頁面,在執行個體詳情頁面,單擊实例CA证书地區的下载

    擷取憑據值範例程式碼如下,請將範例程式碼中的#customConfigFileName#替換為您自訂的設定檔名稱,#secretName#替換為您的憑據名稱。

    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
    import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
    import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
    import com.aliyuncs.kms.secretsmanager.client.service.BaseSecretManagerClientBuilder;
    
    public class CacheClientCustomConfigFileSample {
    
        public static void main(String[] args) {
            try {
                SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                        BaseSecretManagerClientBuilder.standard().withCustomConfigFile("#customConfigFileName#").build()).build();
                SecretInfo secretInfo = client.getSecretInfo("#secretName#");
                System.out.println(secretInfo);
            } catch (CacheSecretException e) {
                System.out.println("CacheSecretException:" + e.getMessage());
            }
        }
    }
  • 方式三:通過指定參數(accessKey、accessSecret、regionId)初始化用戶端

    僅適用於認證方式為AccessKey的情境。

    說明

    阿里雲帳號AccessKey擁有所有OpenAPI的存取權限,建議您使用RAM使用者進行API訪問或日常營運。強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。

    本樣本以將AccessKey配置在環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式來實現身分識別驗證為例。

    擷取憑據值範例程式碼如下,請將範例程式碼中的#regionId#替換為實際地區ID,#secretName#替換為您的憑據名稱。

    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
    import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
    import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
    import com.aliyuncs.kms.secretsmanager.client.service.BaseSecretManagerClientBuilder;
    import com.aliyuncs.kms.secretsmanager.client.utils.CredentialsProviderUtils;
    
    public class CacheClientSimpleParametersSample {
    
        public static void main(String[] args) {
            try {
                SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                        BaseSecretManagerClientBuilder.standard().withCredentialsProvider(CredentialsProviderUtils
                                .withAccessKey(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))).withRegion("#regionId#").build()).build();
                SecretInfo secretInfo = client.getSecretInfo("#secretName#");
                System.out.println(secretInfo);
            } catch (CacheSecretException e) {
                e.printStackTrace();
            }
        }
    }

Python

根據初始化用戶端方式不同,擷取憑據值範例程式碼不同。請選擇以下一種方式即可。

  • 方式一:通過系統內容變數或secretsmanager.properties設定檔初始化用戶端

    環境變數或secretsmanager.properties設定檔選其中一種即可。

    環境變數

    • 方式一:通過環境變數擷取ClientKey憑證口令

      參數

      參數值

      cache_client_dkms_config_info

      參數值格式為[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      該方式您還需要將ClientKey的憑證口令(ClientKeyPassword)的內容配置到環境變數中,變數名稱由您自訂,配置完成後將<YOUR_PASSWORD_ENV_VARIABLE>替換為變數名稱。

      以Linux作業系統為例,樣本如下:

      export cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
    • 方式二:通過檔案擷取ClientKey憑證口令

      ClientKey的憑證口令(ClientKeyPassword)下載後檔案名稱預設為clientKey_****_Password.txt,您也可以修改檔案名稱,但需要將cache_client_dkms_config_info取值中<your Client Key file path>替換為修改後的檔案路徑。

      參數

      參數值

      cache_client_dkms_config_info

      參數值格式為:[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      以Linux作業系統為例,樣本為:

      export cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]

    各配置項說明:

    配置項

    配置項含義

    說明

    regionId

    KMS執行個體所在地區ID。

    具體的地區ID,請參見地區和可用性區域

    endpoint

    KMS執行個體的網域名稱地址,格式為{執行個體ID}.kms.aliyuncs.com

    訪問实例管理頁面,在執行個體詳情頁面查看实例VPC地址,即endpoint。

    clientKeyFile

    ClientKey檔案(JSON格式)的絕對路徑或相對路徑。

    • ClientKey檔案:在應用存取點AAP中建立ClientKey時下載的应用身份凭证内容(ClientKeyContent),下載後檔案名稱預設為ClientKey_******.json。

    • 憑證口令:在應用存取點AAP中建立ClientKey時下載的憑證口令(ClientKeyPassword),下載後檔案名稱預設為ClientKey_******_password.txt。

    重要

    ClientKey檔案和憑證口令是一一對應的,僅支援您在建立ClientKey時擷取。如果您在建立時未儲存,則需要在應用存取點AAP中重新建立ClientKey。更多詳細內容,請參見建立應用存取點

    passwordFromFilePathpasswordFromEnvVariable

    • passwordFromFilePath:從檔案中擷取憑證口令,取值為檔案的絕對路徑或相對路徑。您需要將憑證口令儲存到檔案中。

    • passwordFromEnvVariable:從環境變數擷取憑證口令,取值為環境變數名稱。您需要將憑證口令配置到環境變數中。

    ignoreSslCerts

    是否忽略KMS執行個體SSL認證的有效性檢查。KMS執行個體內建SSL認證,使用SSL/TLS協議用於身分識別驗證和加密通訊。取值:

    • true:表示忽略,不檢查KMS執行個體SSL認證的有效性。

      說明

      取值為true時,無需配置caFilePath

    • false:表示驗證,檢查KMS執行個體SSL認證的有效性。

    正式生產環境中,請將該值設定為false。

    caFilePath

    KMS執行個體CA認證檔案的絕對路徑或相對路徑。

    KMS執行個體CA認證,用於檢查KMS執行個體SSL認證的有效性。例如:檢查KMS執行個體SSL認證是否由對應的CA中心簽發、是否在有效期間內、以及對應的網域名稱是否為KMS執行個體的網域名稱地址(endpoint)。

    訪問实例管理頁面,在執行個體詳情頁面,單擊实例CA证书地區的下载

    secretsmanager.properties設定檔

    設定檔名稱固定為secretsmanager.properties

    參數配置項為cache_client_dkms_config_infocache_client_dkms_config_info採用JSON數組格式,您可配置多個KMS執行個體,以支援業務獲得更高標準的服務可用性保障和容災能力。

    • 方式一:通過環境變數擷取ClientKey憑證口令

      設定檔內容為:

      cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      該方式您還需要將ClientKey的憑證口令(ClientKeyPassword)的內容配置到環境變數中,變數名稱由您自訂,配置完成後將<YOUR_PASSWORD_ENV_VARIABLE>替換為變數名稱。樣本如下:

      cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
    • 方式二:通過檔案擷取ClientKey憑證口令

      ClientKey的憑證口令(ClientKeyPassword)下載後檔案名稱預設為clientKey_****_Password.txt,您也可以修改檔案名稱,但需要將cache_client_dkms_config_info取值中<your Client Key file path>替換為修改後的檔案路徑。

      設定檔內容為:

      cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      樣本如下:

      cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]

    各配置項說明:

    配置項

    配置項含義

    說明

    regionId

    KMS執行個體所在地區ID。

    具體的地區ID,請參見地區和可用性區域

    endpoint

    KMS執行個體的網域名稱地址,格式為{執行個體ID}.kms.aliyuncs.com

    訪問实例管理頁面,在執行個體詳情頁面查看实例VPC地址,即endpoint。

    clientKeyFile

    ClientKey檔案(JSON格式)的絕對路徑或相對路徑。

    • ClientKey檔案:在應用存取點AAP中建立ClientKey時下載的应用身份凭证内容(ClientKeyContent),下載後檔案名稱預設為ClientKey_******.json。

    • 憑證口令:在應用存取點AAP中建立ClientKey時下載的憑證口令(ClientKeyPassword),下載後檔案名稱預設為ClientKey_******_password.txt。

    重要

    ClientKey檔案和憑證口令是一一對應的,僅支援您在建立ClientKey時擷取。如果您在建立時未儲存,則需要在應用存取點AAP中重新建立ClientKey。更多詳細內容,請參見建立應用存取點

    passwordFromFilePathpasswordFromEnvVariable

    • passwordFromFilePath:從檔案中擷取憑證口令,取值為檔案的絕對路徑或相對路徑。您需要將憑證口令儲存到檔案中。

    • passwordFromEnvVariable:從環境變數擷取憑證口令,取值為環境變數名稱。您需要將憑證口令配置到環境變數中。

    ignoreSslCerts

    是否忽略KMS執行個體SSL認證的有效性檢查。KMS執行個體內建SSL認證,使用SSL/TLS協議用於身分識別驗證和加密通訊。取值:

    • true:表示忽略,不檢查KMS執行個體SSL認證的有效性。

      說明

      取值為true時,無需配置caFilePath

    • false:表示驗證,檢查KMS執行個體SSL認證的有效性。

    正式生產環境中,請將該值設定為false。

    caFilePath

    KMS執行個體CA認證檔案的絕對路徑或相對路徑。

    KMS執行個體CA認證,用於檢查KMS執行個體SSL認證的有效性。例如:檢查KMS執行個體SSL認證是否由對應的CA中心簽發、是否在有效期間內、以及對應的網域名稱是否為KMS執行個體的網域名稱地址(endpoint)。

    訪問实例管理頁面,在執行個體詳情頁面,單擊实例CA证书地區的下载

    擷取憑據值範例程式碼如下,請將範例程式碼中的#secretName#替換為您的憑據名稱。

    from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
    
    if __name__ == '__main__':
        #構建憑據用戶端
        secret_cache_client = SecretManagerCacheClientBuilder.new_client()
        #使用構建好的用戶端擷取憑據資訊
        secret_info = secret_cache_client.get_secret_info("#secretName#")
        print(secret_info.__dict__)
  • 方式二:通過指定參數(accessKey、accessSecret、regionId)初始化用戶端

    僅適用於認證方式為AccessKey的情境。

    說明

    阿里雲帳號AccessKey擁有所有OpenAPI的存取權限,建議您使用RAM使用者進行API訪問或日常營運。強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。

    本樣本以將AccessKey配置在環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式來實現身分識別驗證為例。

    擷取憑據值範例程式碼如下,請將範例程式碼中的#regionId#替換為實際地區ID,#secretName#替換為您的憑據名稱。

    import os
    
    from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
    from alibaba_cloud_secretsmanager_client.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder
    
    if __name__ == '__main__':
        secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(DefaultSecretManagerClientBuilder.standard() \
            .with_access_key(os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")) \
            .with_region("#regionId#").build()) \
        .build();
        secret_info = secret_cache_client.get_secret_info("#secretName#")
        print(secret_info.__dict__)

Go

根據初始化用戶端方式不同,擷取憑據值範例程式碼不同。請選擇以下一種方式即可。

  • 方式一:通過系統內容變數或secretsmanager.properties設定檔初始化用戶端

    環境變數或secretsmanager.properties設定檔選其中一種即可。

    環境變數

    • 方式一:通過環境變數擷取ClientKey憑證口令

      參數

      參數值

      cache_client_dkms_config_info

      參數值格式為[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      該方式您還需要將ClientKey的憑證口令(ClientKeyPassword)的內容配置到環境變數中,變數名稱由您自訂,配置完成後將<YOUR_PASSWORD_ENV_VARIABLE>替換為變數名稱。

      以Linux作業系統為例,樣本如下:

      export cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
    • 方式二:通過檔案擷取ClientKey憑證口令

      ClientKey的憑證口令(ClientKeyPassword)下載後檔案名稱預設為clientKey_****_Password.txt,您也可以修改檔案名稱,但需要將cache_client_dkms_config_info取值中<your Client Key file path>替換為修改後的檔案路徑。

      參數

      參數值

      cache_client_dkms_config_info

      參數值格式為:[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      以Linux作業系統為例,樣本為:

      export cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]

    各配置項說明:

    配置項

    配置項含義

    說明

    regionId

    KMS執行個體所在地區ID。

    具體的地區ID,請參見地區和可用性區域

    endpoint

    KMS執行個體的網域名稱地址,格式為{執行個體ID}.kms.aliyuncs.com

    訪問实例管理頁面,在執行個體詳情頁面查看实例VPC地址,即endpoint。

    clientKeyFile

    ClientKey檔案(JSON格式)的絕對路徑或相對路徑。

    • ClientKey檔案:在應用存取點AAP中建立ClientKey時下載的应用身份凭证内容(ClientKeyContent),下載後檔案名稱預設為ClientKey_******.json。

    • 憑證口令:在應用存取點AAP中建立ClientKey時下載的憑證口令(ClientKeyPassword),下載後檔案名稱預設為ClientKey_******_password.txt。

    重要

    ClientKey檔案和憑證口令是一一對應的,僅支援您在建立ClientKey時擷取。如果您在建立時未儲存,則需要在應用存取點AAP中重新建立ClientKey。更多詳細內容,請參見建立應用存取點

    passwordFromFilePathpasswordFromEnvVariable

    • passwordFromFilePath:從檔案中擷取憑證口令,取值為檔案的絕對路徑或相對路徑。您需要將憑證口令儲存到檔案中。

    • passwordFromEnvVariable:從環境變數擷取憑證口令,取值為環境變數名稱。您需要將憑證口令配置到環境變數中。

    ignoreSslCerts

    是否忽略KMS執行個體SSL認證的有效性檢查。KMS執行個體內建SSL認證,使用SSL/TLS協議用於身分識別驗證和加密通訊。取值:

    • true:表示忽略,不檢查KMS執行個體SSL認證的有效性。

      說明

      取值為true時,無需配置caFilePath

    • false:表示驗證,檢查KMS執行個體SSL認證的有效性。

    正式生產環境中,請將該值設定為false。

    caFilePath

    KMS執行個體CA認證檔案的絕對路徑或相對路徑。

    KMS執行個體CA認證,用於檢查KMS執行個體SSL認證的有效性。例如:檢查KMS執行個體SSL認證是否由對應的CA中心簽發、是否在有效期間內、以及對應的網域名稱是否為KMS執行個體的網域名稱地址(endpoint)。

    訪問实例管理頁面,在執行個體詳情頁面,單擊实例CA证书地區的下载

    secretsmanager.properties設定檔

    設定檔名稱固定為secretsmanager.properties

    參數配置項為cache_client_dkms_config_infocache_client_dkms_config_info採用JSON數組格式,您可配置多個KMS執行個體,以支援業務獲得更高標準的服務可用性保障和容災能力。

    • 方式一:通過環境變數擷取ClientKey憑證口令

      設定檔內容為:

      cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      該方式您還需要將ClientKey的憑證口令(ClientKeyPassword)的內容配置到環境變數中,變數名稱由您自訂,配置完成後將<YOUR_PASSWORD_ENV_VARIABLE>替換為變數名稱。樣本如下:

      cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
    • 方式二:通過檔案擷取ClientKey憑證口令

      ClientKey的憑證口令(ClientKeyPassword)下載後檔案名稱預設為clientKey_****_Password.txt,您也可以修改檔案名稱,但需要將cache_client_dkms_config_info取值中<your Client Key file path>替換為修改後的檔案路徑。

      設定檔內容為:

      cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]

      樣本如下:

      cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]

    各配置項說明:

    配置項

    配置項含義

    說明

    regionId

    KMS執行個體所在地區ID。

    具體的地區ID,請參見地區和可用性區域

    endpoint

    KMS執行個體的網域名稱地址,格式為{執行個體ID}.kms.aliyuncs.com

    訪問实例管理頁面,在執行個體詳情頁面查看实例VPC地址,即endpoint。

    clientKeyFile

    ClientKey檔案(JSON格式)的絕對路徑或相對路徑。

    • ClientKey檔案:在應用存取點AAP中建立ClientKey時下載的应用身份凭证内容(ClientKeyContent),下載後檔案名稱預設為ClientKey_******.json。

    • 憑證口令:在應用存取點AAP中建立ClientKey時下載的憑證口令(ClientKeyPassword),下載後檔案名稱預設為ClientKey_******_password.txt。

    重要

    ClientKey檔案和憑證口令是一一對應的,僅支援您在建立ClientKey時擷取。如果您在建立時未儲存,則需要在應用存取點AAP中重新建立ClientKey。更多詳細內容,請參見建立應用存取點

    passwordFromFilePathpasswordFromEnvVariable

    • passwordFromFilePath:從檔案中擷取憑證口令,取值為檔案的絕對路徑或相對路徑。您需要將憑證口令儲存到檔案中。

    • passwordFromEnvVariable:從環境變數擷取憑證口令,取值為環境變數名稱。您需要將憑證口令配置到環境變數中。

    ignoreSslCerts

    是否忽略KMS執行個體SSL認證的有效性檢查。KMS執行個體內建SSL認證,使用SSL/TLS協議用於身分識別驗證和加密通訊。取值:

    • true:表示忽略,不檢查KMS執行個體SSL認證的有效性。

      說明

      取值為true時,無需配置caFilePath

    • false:表示驗證,檢查KMS執行個體SSL認證的有效性。

    正式生產環境中,請將該值設定為false。

    caFilePath

    KMS執行個體CA認證檔案的絕對路徑或相對路徑。

    KMS執行個體CA認證,用於檢查KMS執行個體SSL認證的有效性。例如:檢查KMS執行個體SSL認證是否由對應的CA中心簽發、是否在有效期間內、以及對應的網域名稱是否為KMS執行個體的網域名稱地址(endpoint)。

    訪問实例管理頁面,在執行個體詳情頁面,單擊实例CA证书地區的下载

    擷取憑據值範例程式碼如下,請將範例程式碼中的#secretName#替換為您的憑據名稱。

    package main
    
    import (
        "fmt"
        "github.com/aliyun/aliyun-secretsmanager-client-go/sdk"
    )
    func main() { 
       //構建憑據用戶端
        client, err := sdk.NewClient()
        if err != nil {
            // Handle exceptions
            panic(err)
        }
       //使用構建好的用戶端擷取憑據資訊
        secretInfo, err := client.GetSecretInfo("#secretName#")
        if err != nil {
            // Handle exceptions
            panic(err)
        }
        fmt.Printf("SecretValue:%s\n",secretInfo.SecretValue)
    }
  • 通過指定參數(accessKey、accessSecret、regionId)初始化用戶端

    僅適用於認證方式為AccessKey的情境。

    說明

    阿里雲帳號AccessKey擁有所有OpenAPI的存取權限,建議您使用RAM使用者進行API訪問或日常營運。強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。

    本樣本以將AccessKey配置在環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式來實現身分識別驗證為例。

    擷取憑據值範例程式碼如下,請將範例程式碼中的#regionId#替換為實際地區ID,#secretName#替換為您的憑據名稱。

    package main
    
    import (
    	"github.com/aliyun/aliyun-secretsmanager-client-go/sdk/service"
    	"github.com/aliyun/aliyun-secretsmanager-client-go/sdk"
    	"os"
    )
    
    func main() {
    	client, err := sdk.NewSecretCacheClientBuilder(service.NewDefaultSecretManagerClientBuilder().Standard().WithAccessKey(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")).WithRegion("#regionId#").Build()).Build()
    	if err != nil {
    		// Handle exceptions
    		panic(err)
    	}
    	secretInfo, err := client.GetSecretInfo("#secretName#")
    	if err != nil {
    		// Handle exceptions
    		panic(err)
    	}
    }