憑據用戶端基於 KMS OpenAPI 和 KMS 執行個體 API 封裝,提供憑據緩衝、自動重新整理和錯誤重試能力。通過本機快取憑據減少 API 呼叫次數,降低因網路抖動或憑據到期導致的業務中斷風險。本文介紹如何安裝憑據用戶端、配置鑒權憑證和擷取憑據值。
憑據用戶端SDK介紹
憑據用戶端基於 API 封裝了憑據緩衝、最佳實務和設計模式,便於在業務系統中整合。憑據用戶端具有以下優勢:
此外KMS還提供了KMS執行個體SDK和阿里雲SDK,也可以用於擷取憑據值。詳細資料,請參見擷取和管理認證。
如果需要對憑據進行管控類操作,僅支援使用阿里雲SDK。
SDK 優勢
支援開發人員在應用中快速整合憑據能力,一行代碼讀取憑據資訊。
封裝憑據在應用中緩衝和重新整理的功能。
封裝API錯誤的重試機制,智能處理服務端錯誤。
開放外掛程式式設計模式,支援開發人員自訂擴充緩衝、錯誤重試等功能模組。
SDK 版本
憑據用戶端V2.0版本發行,推薦使用 V2.0版本。SDK 1.0 和 SDK 2.0 的區別如下:
訪問憑證支援
憑證類型
SDK 1.0
SDK 2.0
AccessKey
OIDC Role Arn
ECS RAM Role
RAM Role Arn
說明SDK 2.0不支援從預設環境變數和設定檔讀取RamRoleArn資訊,需要通過寫入程式碼模式。如有需要,請聯絡技術支援人員。
Client Key
安全性憑證
特性
SDK 1.0
SDK 2.0
內建CA認證
SDK 憑據鑒權流程
憑據用戶端通過訪問憑據進行鑒權,鑒權過程因網關類型不同而略有差異。SDK 支援自動識別配置參數並選擇合適的網關串連,無需手動設定網關類型。鑒權步驟如下:
設定環境變數或準備設定檔,確保包含所有必要的憑證資訊(專屬網關和共用網關參數略有差異)。
初始化用戶端,SDK將會自動讀取這些資訊並識別網關。
SDK完成鑒權後即可進行後續的網關操作。
適用範圍
支援的憑據類型:通用憑據、RAM憑據、ECS憑據、資料庫憑據。
支援的開發語言:Java(Java 8及以上版本)、Python、Go、Node.js(16.0.0 及以上版本)。
安裝憑據用戶端
下文以安裝 SDK 2.0 為例,SDK 1.0 請參考各語言 SDK 原始碼庫。
Java
通過 Maven 的方式在專案中安裝憑據用戶端。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibabacloud-secretsmanager-client-v2</artifactId>
<version>x.x.x</version>
</dependency>建議使用SDK 2.0最新版本,以獲得最新功能和最佳化。請訪問alibabacloud-secretsmanager-client-java-v2,查看SDK 2.0範例程式碼和原始碼資訊。若使用V1版本,請訪問alibabacloud-secretsmanager-client-java。
Python
執行pip命令安裝憑據用戶端。
# 如果下述命令報錯,請將pip替換為pip3
pip install alibabacloud_secretsmanager_client_v2憑據用戶端SDK 2.0僅支援 Python 3.7 及以上版本。請使用
python3 --version命令檢查當前 Python 版本,若版本低於 3.7,請先升級 Python 環境再執行安裝命令。建議使用SDK 2.0版本,以獲得最新功能和最佳化。請訪問aliyun-secretsmanager-client-python-v2,查看SDK 2.0範例程式碼和原始碼資訊。若使用V1版本,請訪問aliyun-secretsmanager-client-python。
Go
使用 go get 命令安裝憑據用戶端。
go get -u github.com/aliyun/alibabacloud-secretsmanager-client-go-v2Go語言下憑據用戶端依賴的
alibaba-cloud-sdk-go版本需小於V1.63.0,請在外掛程式的go.mod檔案中檢查並確認版本,以避免潛在的相容性問題。建議使用SDK 2.0版本,以獲得最新功能和最佳化。請訪問alibabacloud-secretsmanager-client-go-v2,查看SDK 2.0範例程式碼和原始碼資訊。若使用V1版本,請訪問aliyun-secretsmanager-client-go。
Node.js
通過 npm 或 yarn 在專案中使用憑據用戶端。
npm
npm install alibabacloud-secretsmanager-client-v2yarn
yarn add alibabacloud-secretsmanager-client-v2
憑據用戶端SDK 2.0僅支援Node.js 16.0.0 或以上版本。
建議使用 SDK 2.0 最新版本,以獲得最新功能和最佳化。請訪問 alibabacloud-secretsmanager-client-nodejs-v2,查看 SDK 2.0 範例程式碼和原始碼資訊。
配置鑒權訪問憑證
ECS 執行個體 RAM 角色
步驟1:建立 RAM 角色並配置許可權
ECS RAM角色是指為ECS執行個體授予的RAM角色,該RAM角色是一個受信服務為雲端服務器的普通服務角色。使用執行個體RAM角色可以實現在ECS執行個體內部無需配置AccessKey即可擷取臨時訪問憑證(STS Token),從而調用KMS的OpenAPI。
具體操作,請參見執行個體RAM角色。
登入RAM控制台,建立可信實體為阿里雲服務的RAM角色。
信任主體類型:選擇云服务器。
信任主體名稱:選擇Elastic Compute Service。
授予RAM角色訪問KMS的許可權。
方式一:設定基於身份的策略
單擊RAM角色操作列的新增授权,直接綁定KMS內建系統權限原則到RAM角色。KMS內建系統權限原則,請參見Key Management Service系統權限原則參考。
說明同時支援自訂權限原則,具體操作請參見建立自訂權限原則。
方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
登入ECS管理主控台,將RAM角色授予ECS執行個體。

步驟2:設定環境變數或設定檔
SDK 支援通過以下兩種方式擷取訪問憑證:
讀取環境變數:不同作業系統的環境變數配置方法不同,具體操作,請參見在環境變數中設定訪問憑據。
警告參數名稱不可修改,否則SDK無法識別。
讀取設定檔:
預設設定檔為
secretsmanager.properties(不可更改名稱)。為了確保應用程式能夠正確載入設定檔,請將其放置在相應的配置目錄中。以下是不同程式設計語言的通用配置目錄:Java:將設定檔放在
src/main/resources目錄下,以便在編譯時間自動包含在類路徑中。Go:通常將設定檔放在專案的根目錄或專門的
config目錄中,然後通過代碼負載檔案。Python:將設定檔放在專案目錄中,或在特定的
config目錄中,並使用適當的方法(如os.path或pkg_resources)來載入。
若使用自訂設定檔,需要在初始化用戶端時,指定設定檔地址(
#customConfigFileName#)。
設定檔
專屬網關
# 訪問憑據類型 credentials_type=ecs_ram_role # ECS RAM Role名稱 credentials_role_name=#credentials_role_name# # 關聯的KMS服務地區及KMS執行個體endpoint cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your kms instanceId>.cryptoservice.kms.aliyuncs.com"}]共用網關
# 訪問憑據類型 credentials_type=ecs_ram_role # ECS RAM Role名稱 credentials_role_name=#credentials_role_name# # 關聯的KMS服務地區 cache_client_region_id=[{"regionId":"#regionId#"}]共用網關(VPC)
# 訪問憑據類型 credentials_type=ecs_ram_role # ECS RAM Role名稱 credentials_role_name=#credentials_role_name# # 關聯的KMS服務地區及VPC Endpoint cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
環境變數
參數 | 參數值 |
credentials_type | 固定取值ecs_ram_role。 |
credentials_role_name | RAM角色名稱。 |
cache_client_region_id |
|
AccessKey
步驟1:建立 AccessKey 並配置許可權
阿里雲帳號預設有所有資源的Administrator許可權且不可修改,為了確保資源安全,建議使用RAM使用者建立AccessKey,並根據需求進行最小化授權。
登入RAM控制台,在頁用户面,單擊目標RAM使用者名稱稱。
在认证管理頁簽下的AccessKey地區,單擊建立AccessKey,並按照指引完成建立。
授予RAM使用者訪問KMS的許可權。
方式一:設定基於身份的策略
單擊RAM使用者操作列的新增授权,直接綁定KMS內建系統權限原則到RAM角色。KMS內建系統權限原則,請參見Key Management Service系統權限原則參考。
說明同時支援自訂權限原則,具體操作請參見建立自訂權限原則。
方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
步驟2:設定環境變數或設定檔
SDK 支援通過以下兩種方式擷取訪問憑證:
讀取環境變數:不同作業系統的環境變數配置方法不同,具體操作,請參見在環境變數中設定訪問憑據。
警告參數名稱不可修改,否則SDK無法識別。
讀取設定檔:
預設設定檔為
secretsmanager.properties(不可更改名稱)。為了確保應用程式能夠正確載入設定檔,請將其放置在相應的配置目錄中。以下是不同程式設計語言的通用配置目錄:Java:將設定檔放在
src/main/resources目錄下,以便在編譯時間自動包含在類路徑中。Go:通常將設定檔放在專案的根目錄或專門的
config目錄中,然後通過代碼負載檔案。Python:將設定檔放在專案目錄中,或在特定的
config目錄中,並使用適當的方法(如os.path或pkg_resources)來載入。
若使用自訂設定檔,需要在初始化用戶端時,指定設定檔地址(
#customConfigFileName#)。
設定檔
專屬網關
# 訪問憑據類型 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>","endpoint":"<your kms instanceId>.cryptoservice.kms.aliyuncs.com"}]共用網關
# 訪問憑據類型 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#"}]共用網關(VPC)
# 訪問憑據類型 credentials_type=ak # AK credentials_access_key_id=#access key id# # SK credentials_access_secret=#access key secret# # 關聯的KMS服務地區及VPC Endpoint cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
環境變數
參數 | 參數值 |
credentials_type | 固定取值ak。 |
credentials_access_key_id | AccessKey ID。 |
credentials_access_secret | AccessKey Secret。 |
cache_client_region_id |
|
OIDC Role ARN
僅 SDK 2.0 支援 OIDC Role ARN 憑證,SDK 1.0 不支援。
步驟1:建立 OIDC Role ARN 並配置許可權
建立OIDC身份供應商
使用Resource Access Management員登入RAM控制台,進入整合管理 > SSO管理頁面,並選擇角色SSO。
在OIDC頁簽,單擊创建身份提供商。
在创建身份提供商頁面,設定身份供應商資訊。具體配置,請參見管理OIDC身份供應商。
擷取並儲存OIDC身份資訊(ARN和用戶端ID)
進入整合管理 > SSO管理頁面,單擊目標身份提供商名稱。
進入身份提供商詳情頁,可查看ARN和用戶端識別碼。
建立OIDC身份供應商的RAM角色並授權
使用Resource Access Management員登入RAM控制台,在頁面。
單擊创建角色,在建立頁面右上方,單擊切換編輯器。
在編輯器中指定具體的OIDC身份供應商。選擇可視化編輯模式,並參考如下說明,完成配置。
說明更多模式,請參見建立OIDC身份供應商的RAM角色。
在主體中選擇身份提供商後,單擊下方編輯。
在添加主體彈窗中,參考如下說明,完成配置。
身份提供商类型:選擇OIDC。
身份提供商:選擇之前建立的OIDC身份供應商。
授予OIDC RAM角色訪問KMS的許可權
方式一:設定基於身份的策略
返回身份管理角色列表頁,單擊目標OIDC 角色操作列的新增授权,直接綁定KMS內建系統權限原則到RAM角色。KMS內建系統權限原則,請參見Key Management Service系統權限原則參考。
說明同時支援自訂權限原則,具體操作請參見建立自訂權限原則。
方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
擷取目標 Role ARN
在頁面,單擊目標角色名稱。
進入角色詳情頁,在ARN地區可擷取OIDC Role ARN資訊。
說明Role ARN是RAM角色的ARN資訊,即需要扮演的角色ID。格式為acs:ram::$accountID:role/$roleName。$accountID為阿里雲帳號ID。$roleName為RAM角色名稱。
簽發並儲存OIDC令牌(OIDC Token)檔案
阿里雲不支援在控制台上直接通過OIDC登入,但可以通過編程方式完成OIDC SSO流程。擷取OIDC令牌涉及一個OAuth流程,常用的方法包括標準的OAuth 2.0流程,從OIDC IdP,擷取OIDC Token。例如當應用程式運行於已啟用RRSA功能的ACK叢集中時,叢集將自動為該應用Pod建立和掛載相應的服務賬戶OIDC Token檔案。
步驟2:設定環境變數或設定檔
SDK 支援通過以下兩種方式擷取訪問憑證:
讀取環境變數:不同作業系統的環境變數配置方法不同,具體操作,請參見在環境變數中設定訪問憑據。
警告參數名稱不可修改,否則SDK無法識別。
讀取設定檔:
預設設定檔為
secretsmanager.properties(不可更改名稱)。為了確保應用程式能夠正確載入設定檔,請將其放置在相應的配置目錄中。以下是不同程式設計語言的通用配置目錄:Java:將設定檔放在
src/main/resources目錄下,以便在編譯時間自動包含在類路徑中。Go:通常將設定檔放在專案的根目錄或專門的
config目錄中,然後通過代碼負載檔案。Python:將設定檔放在專案目錄中,或在特定的
config目錄中,並使用適當的方法(如os.path或pkg_resources)來載入。
若使用自訂設定檔,需要在初始化用戶端時,指定設定檔地址(
#customConfigFileName#)。
設定檔
專屬網關
# 訪問憑據類型 credentials_type=oidc_role_arn # 角色ARN (可選,不填則使用阿里雲預設憑據鏈) credentials_role_arn=<role arn> # OIDC提供者ARN (可選,不填則使用阿里雲預設憑據鏈) credentials_oidc_provider_arn=<oidc provider arn> # OIDC令牌檔案路徑 (可選,不填則使用阿里雲預設憑據鏈) credentials_oidc_token_file_path=<oidc token file path> # KMS服務地區及執行個體ID cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<your kms instanceId>.cryptoservice.kms.aliyuncs.com"}]共用網關
# 訪問憑據類型 credentials_type=oidc_role_arn # 角色ARN (可選,不填則使用阿里雲預設憑據鏈) credentials_role_arn=<role arn> # OIDC提供者ARN (可選,不填則使用阿里雲預設憑據鏈) credentials_oidc_provider_arn=<oidc provider arn> # OIDC令牌檔案路徑 (可選,不填則使用阿里雲預設憑據鏈) credentials_oidc_token_file_path=<oidc token file path> # 關聯的KMS服務地區 cache_client_region_id=[{"regionId":"<regionId>"}]共用網關(VPC)
# 訪問憑據類型 credentials_type=oidc_role_arn # 角色ARN (可選,不填則使用阿里雲預設憑據鏈) credentials_role_arn=<role arn> # OIDC提供者ARN (可選,不填則使用阿里雲預設憑據鏈) credentials_oidc_provider_arn=<oidc provider arn> # OIDC令牌檔案路徑 (可選,不填則使用阿里雲預設憑據鏈) credentials_oidc_token_file_path=<oidc token file path> # 關聯的KMS服務地區及VPC Endpoint cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
環境變數
參數 | 參數值 |
credentials_type | 固定取值oidc_role_arn。 |
credentials_role_arn | OIDC身份供應商的RAM角色的資源ARN。可選,不填預設使用阿里雲預設憑據鏈。 |
credentials_oidc_provider_arn | 輸入 OIDC 身份供應商 ARN。可選,不填預設使用阿里雲預設憑據鏈。 |
credentials_oidc_token_file_path | 儲存OIDC Token的檔案相對或絕對路徑。可選,不填預設使用阿里雲預設憑據鏈。 |
cache_client_region_id |
|
AK+RamRoleArn
僅 SDK 1.0 支援從預設環境變數和設定檔讀取 RamRoleArn 資訊,SDK 2.0 不支援。若需使用 SDK 2.0+(AK+RamRoleArn)模式,請聯絡技術支援人員。
步驟1:建立 RamRoleArn 並配置許可權
RAM使用者或雲產品可以通過扮演角色的方式擷取臨時許可權(STS Token),而不是直接使用長期密鑰,降低了密鑰泄露的風險。例如,在臨時的資料處理任務中,RAM使用者或雲產品臨時扮演一個具有特定RamRoleArn的角色,完成任務后角色許可權被收回,減少泄露風險。
建立使用者AK
登入RAM控制台,在頁面,單擊目標RAM使用者名稱稱。
為RAM使用者指派系統策略
AliyunSTSAssumeRoleAccess或包含許可權操作sts:AssumeRole的自訂策略。在认证管理頁簽下的AccessKey地區,單擊建立AccessKey,並按照指引完成建立。
建立RAM角色並授權:
在頁面,單擊创建角色具體操作,請參見建立RAM角色。
授予RAM角色訪問KMS的許可權。
方式一:設定基於身份的策略
單擊RAM角色操作列的新增授权,直接綁定KMS內建系統權限原則到RAM角色。KMS內建系統權限原則,請參見Key Management Service系統權限原則參考。
說明同時支援自訂權限原則,具體操作請參見建立自訂權限原則。
方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
擷取目標RAM角色的RamRoleArn。具體操作,請參見查看RAM角色。
在頁面,單擊目標角色名稱。
進入角色詳情頁,在ARN地區可擷取RamRoleArn資訊。
說明RamRoleArn是RAM角色的ARN資訊,即需要扮演的角色ID。格式為acs:ram::$accountID:role/$roleName。$accountID為阿里雲帳號ID。$roleName為RAM角色名稱。
步驟2:設定環境變數或設定檔
SDK 支援通過以下兩種方式擷取訪問憑證:
讀取環境變數:不同作業系統的環境變數配置方法不同,具體操作,請參見在環境變數中設定訪問憑據。
警告參數名稱不可修改,否則SDK無法識別。
讀取設定檔:
預設設定檔為
secretsmanager.properties(不可更改名稱)。為了確保應用程式能夠正確載入設定檔,請將其放置在相應的配置目錄中。以下是不同程式設計語言的通用配置目錄:Java:將設定檔放在
src/main/resources目錄下,以便在編譯時間自動包含在類路徑中。Go:通常將設定檔放在專案的根目錄或專門的
config目錄中,然後通過代碼負載檔案。Python:將設定檔放在專案目錄中,或在特定的
config目錄中,並使用適當的方法(如os.path或pkg_resources)來載入。
若使用自訂設定檔,需要在初始化用戶端時,指定設定檔地址(
#customConfigFileName#)。
設定檔
專屬網關
# 訪問憑據類型 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>","endpoint":"<your kms instanceId>.cryptoservice.kms.aliyuncs.com"}]共用網關
# 訪問憑據類型 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#"}]共用網關(VPC)
# 訪問憑據類型 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服務地區及VPC Endpoint cache_client_region_id=[{"regionId":"#regionId#","endpoint":"kms-vpc.#regionId#.aliyuncs.com","vpc":"true"}]
環境變數
參數 | 參數值 |
credentials_type | ram_role或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 |
|
ClientKey(不推薦)
僅 SDK 1.0 支援 ClientKey 憑證,SDK 2.0 不支援。
共用網關
步驟1:建立 ClientKey
登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊。
建立網路規則(非必須)。
說明如果您不需要基於來源IP限制訪問,則不需要設定網路規則。但為了更高的安全性,通常建議您合理設定。
單擊网络规则頁簽,然後單擊创建网络规则。
在创建网络规则面板,网络类型選擇Public,填寫允许访问的源IP地址後,單擊確定。
建立權限原則。
單擊权限策略,然後單擊创建权限策略。
在创建权限策略面板,按照下方提示完成共用網關配置後,單擊確定。
作用域:KMS共享网关
允许访问的资源:勾選你需要訪問的憑據
网络控制规则(非必須):勾選步驟二建立網路規則。
建立應用存取點AAP。
單擊应用接入頁簽,然後單擊创建应用接入点,。
在创建应用接入点面板,创建模式選擇标准创建,然後按照下方提示完成各項配置。
配置項
說明
认证方式
選擇ClientKey
Client Key加密口令
設定8~64位包含數字、英文大小寫、特殊字元
~!@#$%^&*?_-的字串有效期
重要推薦設定為1年,以降低ClientKey被泄露的風險。請務必在到期前更換,以免無法正常訪問KMS。具體操作,請參見更換ClientKey。
权限策略
選擇您步驟三建立的權限原則。
單擊確認,瀏覽器會自動下載ClientKey。ClientKey包含以下內容:
应用身份凭证内容(ClientKeyContent):檔案名稱預設為
clientKey_****.json憑證口令(ClientKeyPassword):檔案名稱預設為
clientKey_****_Password.txt。
步驟2:設定環境變數或設定檔
讀取環境變數:不同作業系統的環境變數配置方法不同,具體操作,請參見在環境變數中設定訪問憑據。
警告參數名稱不可修改,否則SDK無法識別。
讀取設定檔:
預設設定檔為
secretsmanager.properties(不可更改名稱)。為了確保應用程式能夠正確載入設定檔,請將其放置在相應的配置目錄中。以下是不同程式設計語言的通用配置目錄:Java:將設定檔放在
src/main/resources目錄下,以便在編譯時間自動包含在類路徑中。Go:通常將設定檔放在專案的根目錄或專門的
config目錄中,然後通過代碼負載檔案。Python:將設定檔放在專案目錄中,或在特定的
config目錄中,並使用適當的方法(如os.path或pkg_resources)來載入。
若使用自訂設定檔,需要在初始化用戶端時,指定設定檔地址(
#customConfigFileName#)。
設定檔
方案一:配置ClientKey憑證口令(
clientKey_****_Password.txt)檔案的路徑,由SDK讀取其中的內容。# 訪問憑據類型 credentials_type=client_key # 存放憑證口令(ClientKeyPassword)的檔案的絕對路徑或相對路徑,即為clientKey_****_Password.txt的存放位置 client_key_password_from_file_path=#your client key private key password file path# # 存放應用身份憑證內容(ClientKeyContent)檔案的絕對路徑或相對路徑。即clientKey_****.json的存放位置。 client_key_private_key_path=#your client key private key file path# # 關聯的KMS服務地區 cache_client_region_id=[{"regionId":"#regionId#"}]方案二:直接配置ClientKey憑證口令(ClientKeyPassword)內容
警告請先將憑證口令(ClientKeyPassword)即
clientKey_****_Password.txt中的內容,存放至自訂環境變數(如clientKeyPassword_content)中。# 訪問憑據類型 credentials_type=client_key # 存放憑證口令(ClientKeyPassword)內容的環境變數名稱,如 clientKeyPassword_content client_key_password_from_env_variable=#your client key private key password environment variable name# # Client Key私密金鑰檔案路徑 client_key_private_key_path=#your client key private key file path# # 關聯的KMS服務地區 cache_client_region_id=[{"regionId":"#regionId#"}]
環境變數
方案一:配置ClientKey憑證口令(
clientKey_****_Password.txt)檔案的路徑,由SDK讀取其中的內容。參數
參數值
credentials_type
固定取值client_key。
client_key_password_from_file_path
存放憑證口令(ClientKeyPassword)即
clientKey_****_Password.txt檔案的絕對路徑或相對路徑。client_key_private_key_path
存放應用身份憑證內容(ClientKeyContent)即
clientKey_****.json檔案的絕對路徑或相對路徑名。cache_client_region_id
格式為[{"regionId":"<your region id>"}],請將
<your region id>替換為您真實的地區ID。重要Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即
[{\"regionId\":\"<your region id>\"}]。方案二:直接配置ClientKey憑證口令(ClientKeyPassword)內容
警告請先將憑證口令(ClientKeyPassword)即
clientKey_****_Password.txt中的內容,存放至自訂環境變數(如clientKeyPassword_content)中。參數名稱
參數值
credentials_type
固定取值client_key。
client_key_password_from_env_variable
存放憑證口令(ClientKeyPassword)即
clientKey_****_Password.txt中內容的環境變數名稱,如clientKeyPassword_content。client_key_private_key_path
存放應用身份憑證內容(ClientKeyContent)即
clientKey_****.json檔案的絕對路徑或相對路徑名。cache_client_region_id
格式為[{"regionId":"<your region id>"}],
重要請將
<your region id>替換為真實的地區ID。Linux系統下,使用export命令設定環境變數時,請添加逸出字元,即
[{\"regionId\":\"<your region id>\"}]。
專屬網關
步驟1:建立 ClientKey
ClientKey支援快速建立和標準建立兩種方式。關於ClientKey的詳細介紹,請參見應用存取點概述、建立應用存取點。
方式一:快速建立
便捷高效適合於快速測試和開發情境,該方式建立的訪問憑證可以訪問KMS執行個體的全部資源。
登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊。
在应用接入頁簽,單擊创建应用接入点,在创建应用接入点面板完成各項配置。
配置項
說明
创建模式
選擇快速创建。
作用域(KMS实例)
選擇應用要訪問的KMS執行個體。
应用接入点名称
自訂應用存取點的名稱。
认证方式
預設為ClientKey,不支援修改。
默认权限策略
預設為
key/*secret/*,不支援修改。即應用可以訪問指定KMS執行個體中的所有密鑰和憑據。單擊確認,瀏覽器會自動下載ClientKey。ClientKey包含以下內容:
应用身份凭证内容(ClientKeyContent):檔案名稱預設為
clientKey_****.json憑證口令(ClientKeyPassword):檔案名稱預設為
clientKey_****_Password.txt。
方式二:標準建立
若希望對資源設定更精細化的存取權限,建議使用標準建立。
請參考建立應用存取點中的標準建立方式,建立用於訪問專屬網關的ClientKey。關鍵配置說明如下:
配置網路規則時,網路類型選擇Private。
配置許可權規則範圍時,請選擇對應的KMS執行個體ID。
建立完成後,瀏覽器會自動下載ClientKey。ClientKey包含以下內容:
应用身份凭证内容(ClientKeyContent):檔案名稱預設為
clientKey_****.json憑證口令(ClientKeyPassword):檔案名稱預設為
clientKey_****_Password.txt。
步驟2:配置環境變數或設定檔
讀取環境變數:不同作業系統的環境變數配置方法不同,具體操作,請參見在環境變數中設定訪問憑據。
警告參數名稱不可修改,否則SDK無法識別。
讀取設定檔:
預設設定檔為
secretsmanager.properties(不可更改名稱)。為了確保應用程式能夠正確載入設定檔,請將其放置在相應的配置目錄中。以下是不同程式設計語言的通用配置目錄:Java:將設定檔放在
src/main/resources目錄下,以便在編譯時間自動包含在類路徑中。Go:通常將設定檔放在專案的根目錄或專門的
config目錄中,然後通過代碼負載檔案。Python:將設定檔放在專案目錄中,或在特定的
config目錄中,並使用適當的方法(如os.path或pkg_resources)來載入。
若使用自訂設定檔,需要在初始化用戶端時,指定設定檔地址(
#customConfigFileName#)。
設定檔
方案一:配置ClientKey憑證口令(
clientKey_****_Password.txt)檔案的路徑,由SDK讀取其中的內容。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>"}]方案二:直接配置ClientKey憑證口令(ClientKeyPassword)內容
警告請先將憑證口令(ClientKeyPassword)即
clientKey_****_Password.txt中的內容,存放至自訂環境變數(如clientKeyPassword_content)中。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憑證口令(
clientKey_****_Password.txt)檔案的路徑,由SDK讀取其中的內容。參數
參數值
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>"}]。方案二:直接配置ClientKey憑證口令(ClientKeyPassword)內容
警告請先將憑證口令(ClientKeyPassword)即
clientKey_****_Password.txt中的內容,存放至自訂環境變數(如clientKeyPassword_content)中。參數
參數格式
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>"}]。
cache_client_dkms_config_info參數說明
配置項 | 配置項說明 |
regionId | KMS執行個體所在地區ID,具體的地區ID,請參見支援的地區。 |
endpoint | KMS執行個體的網域名稱地址,格式為 |
clientKeyFile | 存放應用身份憑證內容(ClientKeyContent)即 |
passwordFromFilePath | 存放憑證口令(ClientKeyPassword)即 |
passwordFromEnvVariable | 存放憑證口令(ClientKeyPassword)即 |
ignoreSslCerts | 是否忽略KMS執行個體SSL認證的有效性檢查。KMS執行個體內建SSL認證,使用SSL/TLS協議用於身分識別驗證和加密通訊。取值:
|
caFilePath | KMS執行個體CA認證檔案的絕對路徑或相對路徑。 說明 KMS執行個體CA認證,用於檢查KMS執行個體SSL認證的有效性,如何擷取CA認證,請參見擷取CA認證。 |
擷取憑據
本文樣本均以 SDK 2.0 為例。SDK 1.0 樣本,請前往 SDK 1.0 原始碼庫。
以下程式碼範例中的 #secretName#、#regionId#、#accessKeyId#、#accessKeySecret#、#customConfigFileName# 等為預留位置,使用時請替換為實際值。<your kms instanceId> 請替換為實際的 KMS 執行個體 ID。
Java
使用預設配置:此方式SDK會自動讀取
secretsmanager.properties檔案或環境變數中的憑證資訊。import com.aliyuncs.kms.secretsmanager.client.v2.SecretCacheClient; import com.aliyuncs.kms.secretsmanager.client.v2.SecretCacheClientBuilder; import com.aliyuncs.kms.secretsmanager.client.v2.exception.CacheSecretException; import com.aliyuncs.kms.secretsmanager.client.v2.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(); } } }使用自訂設定檔:此方式適用於設定檔未使用預設檔案名稱或自訂檔案路徑的情境,需指定設定檔的路徑(
#customConfigFileName#)。import com.aliyuncs.kms.secretsmanager.client.v2.SecretCacheClient; import com.aliyuncs.kms.secretsmanager.client.v2.SecretCacheClientBuilder; import com.aliyuncs.kms.secretsmanager.client.v2.exception.CacheSecretException; import com.aliyuncs.kms.secretsmanager.client.v2.model.SecretInfo; import com.aliyuncs.kms.secretsmanager.client.v2.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 等):無需將 AK 寫入設定檔或預設環境變數,初始化用戶端時傳入對應的 AK 和訪問地區資訊即可。
import com.aliyuncs.kms.secretsmanager.client.v2.SecretCacheClient; import com.aliyuncs.kms.secretsmanager.client.v2.SecretCacheClientBuilder; import com.aliyuncs.kms.secretsmanager.client.v2.exception.CacheSecretException; import com.aliyuncs.kms.secretsmanager.client.v2.model.RegionInfo; import com.aliyuncs.kms.secretsmanager.client.v2.service.BaseSecretManagerClientBuilder; import com.aliyuncs.kms.secretsmanager.client.v2.utils.CredentialsProviderUtils; public class CacheClientWithCaCertificateSample { public static void main(String[] args) { try { // 建立包含憑證路徑的 RegionInfo RegionInfo regionInfo = new RegionInfo(); regionInfo.setRegionId("#regionId#"); regionInfo.setEndpoint("<your kms instanceId>.cryptoservice.kms.aliyuncs.com"); //專屬網關訪問地址,若訪問共用網關,可不設定。 SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder( BaseSecretManagerClientBuilder.standard() .withCredentialsProvider(CredentialsProviderUtils.withAccessKey( System.getenv("#accessKeyId#"), System.getenv("#accessKeySecret#"))) .addRegion(regionInfo) .build()) .build(); SecretInfo secretInfo = client.getSecretInfo("#secretName#"); } catch (CacheSecretException e) { e.printStackTrace(); } } }使用阿里雲預設憑據鏈:預設憑據鏈是一種兜底策略,按照內建的憑據尋找順序逐層向下尋找,直至擷取憑據資訊。若所有情況均未成功則表示鑒權失敗,無法擷取憑據。
import com.aliyuncs.kms.secretsmanager.client.v2.SecretCacheClient; import com.aliyuncs.kms.secretsmanager.client.v2.SecretCacheClientBuilder; import com.aliyuncs.kms.secretsmanager.client.v2.exception.CacheSecretException; import com.aliyuncs.kms.secretsmanager.client.v2.model.SecretInfo; import com.aliyuncs.kms.secretsmanager.client.v2.service.BaseSecretManagerClientBuilder; public class CacheClientDefaultCredentialChainSample { public static void main(String[] args) { try { SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder( BaseSecretManagerClientBuilder.standard().withRegion("#regionId#").build()).build(); SecretInfo secretInfo = client.getSecretInfo("#secretName#"); System.out.println(secretInfo); } catch (CacheSecretException e) { e.printStackTrace(); } } }
更多樣本,請參見憑據用戶端SDK樣本。
Python
使用預設配置:此方式SDK會自動讀取
secretsmanager.properties檔案或環境變數中的憑證資訊。from alibabacloud_secretsmanager_client_v2.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__)使用自訂設定檔:此方式適用於設定檔未使用預設檔案名稱或自訂檔案路徑的情境,需指定設定檔的路徑(
#customConfigFileName#)。from alibabacloud_secretsmanager_client_v2.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder from alibabacloud_secretsmanager_client_v2.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder if __name__ == '__main__': secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder( DefaultSecretManagerClientBuilder.standard().with_custom_config_file("#customConfigFileName#").build()).build() secret_info = secret_cache_client.get_secret_info("#secretName#") print(secret_info.__dict__)寫入程式碼方式(指定 AccessKey、AccessSecret、RegionId 等):無需將 AK 寫入設定檔或預設環境變數,初始化用戶端時傳入對應的 AK 和訪問地區資訊即可。
import os from alibabacloud_secretsmanager_client_v2.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder from alibabacloud_secretsmanager_client_v2.service.default_secret_manager_client_builder import \ DefaultSecretManagerClientBuilder from alibabacloud_secretsmanager_client_v2.model.region_info import RegionInfo if __name__ == '__main__': # 建立包含 CA 憑證路徑的 RegionInfo region_info = RegionInfo( region_id="#regionId#", endpoint="#kmsInstanceEndpoint#", # 專屬網關訪問地址,若訪問共用網關,可不設定。 ) secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder( DefaultSecretManagerClientBuilder.standard() .with_access_key( os.getenv("#accessKeyId#"), os.getenv("#accessKeySecret#")) .add_region_info(region_info) .build()).build() # ... 使用 client使用阿里雲預設憑據鏈:預設憑據鏈是一種兜底策略,按照內建的憑據尋找順序逐層向下尋找,直至擷取憑據資訊。若所有情況均未成功則表示鑒權失敗,無法擷取憑據。
from alibabacloud_secretsmanager_client_v2.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder from alibabacloud_secretsmanager_client_v2.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder if __name__ == '__main__': secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder( DefaultSecretManagerClientBuilder.standard().with_region("#regionId#").build()).build() secret_info = secret_cache_client.get_secret_info("#secretName#") print(secret_info.__dict__)
更多樣本,請參見憑據用戶端SDK樣本。
Go
使用預設配置:此方式SDK會自動讀取
secretsmanager.properties檔案或環境變數中的憑證資訊。package main import "github.com/aliyun/alibabacloud-secretsmanager-client-go-v2/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) } }使用自訂設定檔:此方式適用於設定檔未使用預設檔案名稱或自訂檔案路徑的情境,需指定設定檔的路徑(
#customConfigFileName#)。package main import ( "github.com/aliyun/alibabacloud-secretsmanager-client-go-v2/sdk" "github.com/aliyun/alibabacloud-secretsmanager-client-go-v2/sdk/service" ) func main() { client, err := sdk.NewSecretCacheClientBuilder( service.NewDefaultSecretManagerClientBuilder().Standard().WithCustomConfigFile("#customConfigFileName#").Build()).Build() if err != nil { // Handle exceptions panic(err) } secretInfo, err := client.GetSecretInfo("#secretName#") if err != nil { // Handle exceptions panic(err) } }寫入程式碼方式(指定 AccessKey、AccessSecret、RegionId 等):無需將 AK 寫入設定檔或預設環境變數,初始化用戶端時傳入對應的 AK 和訪問地區資訊即可。
package main import ( "github.com/aliyun/alibabacloud-secretsmanager-client-go-v2/sdk" "github.com/aliyun/alibabacloud-secretsmanager-client-go-v2/sdk/models" "github.com/aliyun/alibabacloud-secretsmanager-client-go-v2/sdk/service" "os" ) func main() { regionInfo := &models.RegionInfo{ RegionId: "#regionId#", Endpoint: "<kmsInstanceId>.cryptoservice.kms.aliyuncs.com", //專屬網關訪問地址,若訪問共用網關,可不設定。 } client, err := sdk.NewSecretCacheClientBuilder( service.NewDefaultSecretManagerClientBuilder(). Standard(). WithAccessKey(os.Getenv("#accessKeyId#"), os.Getenv("#accessKeySecret#")). AddRegionInfo(regionInfo). Build()).Build() if err != nil { // Handle exceptions panic(err) } secretInfo, err := client.GetSecretInfo("#secretName#") if err != nil { // Handle exceptions panic(err) } }使用阿里雲預設憑據鏈:預設憑據鏈是一種兜底策略,按照內建的憑據尋找順序逐層向下尋找,直至擷取憑據資訊。若所有情況均未成功則表示鑒權失敗,無法擷取憑據。
package main import ( "github.com/aliyun/alibabacloud-secretsmanager-client-go-v2/sdk" "github.com/aliyun/alibabacloud-secretsmanager-client-go-v2/sdk/service" ) func main() { client, err := sdk.NewSecretCacheClientBuilder( service.NewDefaultSecretManagerClientBuilder().Standard().WithRegion("#regionId#").Build()).Build() if err != nil { // Handle exceptions panic(err) } secretInfo, err := client.GetSecretInfo("#secretName#") if err != nil { // Handle exceptions panic(err) } }
更多樣本,請參見憑據用戶端SDK樣本。
Node.js
使用預設配置:此方式SDK會自動讀取
secretsmanager.properties檔案或環境變數中的憑證資訊。import { SecretCacheClientBuilder } from 'alibabacloud-secretsmanager-client-v2'; async function example() { try { // 通過環境變數或預設配置構建用戶端 const client = await SecretCacheClientBuilder.newClient(); const secretInfo = await client.getSecretInfo('#secretName#'); console.log(secretInfo); } catch (error) { console.error('Error:', error); } } example();使用自訂設定檔:此方式適用於設定檔未使用預設檔案名稱或自訂檔案路徑的情境,需指定設定檔的路徑(
#customConfigFileName#)。import { SecretCacheClientBuilder, BaseSecretManagerClientBuilder, CredentialsProviderUtils } from 'alibabacloud-secretsmanager-client-v2'; async function example() { try { const client = await SecretCacheClientBuilder.newCacheClientBuilder( BaseSecretManagerClientBuilder.standard().withCustomConfigFile('#customConfigFileName#').build() ).build(); const secretInfo = await client.getSecretInfo('#secretName#'); console.log(secretInfo); } catch (error) { console.error('Error:', error); } } example();寫入程式碼方式(指定 AccessKey、AccessSecret、RegionId 等):無需將 AK 寫入設定檔或預設環境變數,初始化用戶端時傳入對應的 AK 和訪問地區資訊即可。
import { SecretCacheClientBuilder, BaseSecretManagerClientBuilder, CredentialsProviderUtils, RegionInfo } from 'alibabacloud-secretsmanager-client-v2'; async function example() { try { const regionInfo = new RegionInfo(); regionInfo.setRegionId('#regionId#'); regionInfo.setEndpoint('<kmsInstanceId>.cryptoservice.kms.aliyuncs.com'); // 專屬網關訪問地址,若訪問共用網關,可不設定。 const client = await SecretCacheClientBuilder.newCacheClientBuilder( BaseSecretManagerClientBuilder.standard() .withCredentialsProvider( CredentialsProviderUtils.withAccessKey( process.env['#accessKeyId#'], process.env['#accessKeySecret#'] ) ) .addRegionInfo(regionInfo) // 使用帶 CA 憑證路徑的 RegionInfo .build() ).build(); const secretInfo = await client.getSecretInfo('#secretName#'); console.log(secretInfo); } catch (error) { console.error('Error:', error); } } example();使用阿里雲預設憑據鏈:預設憑據鏈是一種兜底策略,按照內建的憑據尋找順序逐層向下尋找,直至擷取憑據資訊。若所有情況均未成功則表示鑒權失敗,無法擷取憑據。
import { SecretCacheClientBuilder, BaseSecretManagerClientBuilder, CredentialsProviderUtils } from 'alibabacloud-secretsmanager-client-v2'; async function example() { try { const client = await SecretCacheClientBuilder.newCacheClientBuilder( BaseSecretManagerClientBuilder.standard() .withCredentialsProvider(CredentialsProviderUtils.withDefaultCredential()) .withRegion('#regionId#') .build() ).build(); const secretInfo = await client.getSecretInfo('#secretName#'); console.log(secretInfo); } catch (error) { console.error('Error:', error); } } example();
更多樣本,請參見憑據用戶端SDK樣本。
常見問題
出現 "cannot find the built-in ca certificate for region[$regionId], please provide the caFilePath parameter." 錯誤怎麼辦?
問題原因:SDK 中該地區內建的 CA 憑證不存在。
解決方案:
請更新 SDK 到最新V2版本。
如果已更新到最新版本仍然報此錯誤,可以下載最新的CA認證(CA認證可在Key Management Service的实例管理> 執行個體詳情頁面下載),並傳入CA憑證路徑參數。具體方式如下:
通過環境變數傳遞 CA 憑證路徑
在環境變數配置
cache_client_region_id中添加 CA 憑證路徑參數:# 關聯的KMS服務地區,包含CA憑證路徑和執行個體地址 cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<kmsInstanceId>.cryptoservice.kms.aliyuncs.com","caFilePath":"<ca認證檔案路徑>"}]通過設定檔傳遞 CA 憑證路徑
在
secretsmanager.properties或自訂設定檔中添加caFilePath參數:# 關聯的KMS服務地區,包含CA憑證路徑和執行個體地址 cache_client_region_id=[{"regionId":"<regionId>","endpoint":"<kmsInstanceId>.cryptoservice.kms.aliyuncs.com","caFilePath":"<ca認證檔案路徑>"}]寫入程式碼方式傳遞 CA 憑證路徑
import com.aliyuncs.kms.secretsmanager.client.v2.SecretCacheClient; import com.aliyuncs.kms.secretsmanager.client.v2.SecretCacheClientBuilder; import com.aliyuncs.kms.secretsmanager.client.v2.exception.CacheSecretException; import com.aliyuncs.kms.secretsmanager.client.v2.model.RegionInfo; import com.aliyuncs.kms.secretsmanager.client.v2.service.BaseSecretManagerClientBuilder; import com.aliyuncs.kms.secretsmanager.client.v2.utils.CredentialsProviderUtils; public class CacheClientWithCaCertificateSample { public static void main(String[] args) { try { // 建立包含 CA 憑證路徑的 RegionInfo RegionInfo regionInfo = new RegionInfo(); regionInfo.setRegionId("#regionId#"); regionInfo.setEndpoint("#kmsInstanceEndpoint#"); // 指定 KMS 執行個體地址 regionInfo.setCaFilePath("#caFilePath#"); // 指定 CA 憑證檔案路徑 SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder( BaseSecretManagerClientBuilder.standard() .withCredentialsProvider(CredentialsProviderUtils.withAccessKey( System.getenv("#accessKeyId#"), System.getenv("#accessKeySecret#"))) .addRegion(regionInfo) // 使用帶 CA 憑證路徑的 RegionInfo .build()) .build(); // ... 使用 client } catch (CacheSecretException e) { e.printStackTrace(); } } }import os from alibabacloud_secretsmanager_client_v2.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder from alibabacloud_secretsmanager_client_v2.service.default_secret_manager_client_builder import \ DefaultSecretManagerClientBuilder from alibabacloud_secretsmanager_client_v2.model.region_info import RegionInfo if __name__ == '__main__': # 建立包含 CA 憑證路徑的 RegionInfo region_info = RegionInfo( region_id="#regionId#", endpoint="#kmsInstanceEndpoint#", # 指定 KMS 執行個體地址 ca_file_path="#caFilePath#" # 指定 CA 憑證檔案路徑 ) secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder( DefaultSecretManagerClientBuilder.standard() .with_access_key( os.getenv("#accessKeyId#"), os.getenv("#accessKeySecret#")) .add_region_info(region_info) # 使用帶 CA 憑證路徑的 RegionInfo .build()).build() # ... 使用 clientpackage main import ( "github.com/aliyun/alibabacloud-secretsmanager-client-go-v2/sdk" "github.com/aliyun/alibabacloud-secretsmanager-client-go-v2/sdk/models" "github.com/aliyun/alibabacloud-secretsmanager-client-go-v2/sdk/service" "os" ) func main() { // 建立包含 CA 憑證路徑的 RegionInfo regionInfo := &models.RegionInfo{ RegionId: "#regionId#", Endpoint: "#kmsInstanceEndpoint#", // 指定 KMS 執行個體地址 CaFilePath: "#caFilePath#", // 指定 CA 憑證檔案路徑 } client, err := sdk.NewSecretCacheClientBuilder( service.NewDefaultSecretManagerClientBuilder(). Standard(). WithAccessKey(os.Getenv("#accessKeyId#"), os.Getenv("#accessKeySecret#")). AddRegionInfo(regionInfo). // 使用帶 CA 憑證路徑的 RegionInfo Build()).Build() if err != nil { // Handle exceptions panic(err) } secretInfo, err := client.GetSecretInfo("#secretName#") if err != nil { // Handle exceptions panic(err) } }import { SecretCacheClientBuilder, BaseSecretManagerClientBuilder, CredentialsProviderUtils, RegionInfo } from 'alibabacloud-secretsmanager-client-v2'; async function example() { try { // 建立包含 CA 憑證路徑的 RegionInfo const regionInfo = new RegionInfo(); regionInfo.setRegionId('#regionId#'); regionInfo.setEndpoint('#kmsInstanceEndpoint#'); // 專屬網關訪問地址,若訪問共用網關,可不設定。 regionInfo.setCaFilePath('#caFilePath#'); // 指定 CA 憑證檔案路徑 const client = await SecretCacheClientBuilder.newCacheClientBuilder( BaseSecretManagerClientBuilder.standard() .withCredentialsProvider( CredentialsProviderUtils.withAccessKey( process.env['#accessKeyId#'], process.env['#accessKeySecret#'] ) ) .addRegionInfo(regionInfo) // 使用帶 CA 憑證路徑的 RegionInfo .build() ).build(); const secretInfo = await client.getSecretInfo('#secretName#'); console.log(secretInfo); } catch (error) { console.error('Error:', error); } } example();
出現 “ env/config credentials type[client_key] is illegal”錯誤怎麼辦?
問題原因:SDK 2.0 不支援 Client Key 鑒權方式。
解決方案:
參考配置鑒權訪問憑證,更換憑證方式為 AK、ECS RAM Role 或 OIDC Role Arn。
切換至 SDK 1.0(不推薦)。