您可以使用KMS創建憑據,在應用程序中集成您的憑據信息,實現對敏感數據的統一管理。本文介紹如何創建憑據以及如何在應用程序中集成憑據信息。
背景信息
KMS提供憑據的創建、更新、刪除等全生命周期的管理服務,應用程序通過SDK來獲取憑據,解決您在應用程序中硬編碼憑據帶來的敏感數據泄露問題。
KMS支持托管通用憑據、RAM憑據、數據庫憑據和ECS憑據。關于憑據的更多信息,請參見憑據管理概述。
注意事項
KMS使用您指定的密鑰來加密憑據值,該密鑰和憑據需要屬于同一個KMS實例,且密鑰必須為對稱密鑰。關于KMS支持哪些對稱密鑰,請參見密鑰管理類型。
前提條件
已購買并啟用KMS實例。具體操作,請參見購買和啟用KMS實例。
已在KMS實例中創建用于加密憑據的對稱密鑰。具體操作,請參見創建密鑰。
步驟一:創建憑據
創建憑據時支持設置輪轉信息,KMS將定期為您更新憑據值,保護您的憑據安全。
登錄密鑰管理服務控制臺,在頂部菜單欄選擇地域后,在左側導航欄單擊 。
在憑據管理頁面單擊您要創建的憑據頁簽,選擇實例ID后,單擊創建憑據,完成各項配置后單擊確定。
通用憑據
說明通用憑據不支持在創建時設置輪轉信息,如果您需要輪轉通用憑據,請參見管理及使用通用憑據。
配置項
說明
憑據名稱
自定義的憑據名稱。憑據名稱在當前地域內唯一。
設置憑據值
根據您要托管的敏感數據類型,選擇憑據鍵/值或純文本。
長度不超過30720字節(30KB)。
初始版本號
憑據的初始版本號。默認為v1,也支持自定義版本號。
加密主密鑰
選擇用于加密憑據值的密鑰。
重要密鑰和憑據需要屬于同一個KMS實例,且密鑰必須為對稱密鑰。關于KMS支持哪些對稱密鑰,請參見密鑰管理類型和密鑰規格。
如果是RAM用戶、RAM角色,需要具備使用加密主密鑰執行GenerateDataKey操作的權限。
標簽
憑據的標簽,方便您對憑據進行分類管理。每個標簽由一個鍵值對(Key:Value)組成,包含標簽鍵(Key)、標簽值(Value)。
說明標簽鍵和標簽值的格式:最多支持128個字符,可以包含英文大小寫字母、數字、正斜線(/)、反斜線(\)、下劃線(_)、短劃線(-)、半角句號(.)、加號(+)、等于號(=)、半角冒號(:)、字符at(@)、空格。
標簽鍵不能以aliyun或acs:開頭。
每個憑據最多可以設置20個標簽鍵值對。
描述信息
憑據的描述信息。
策略配置
憑據的策略配置。詳細介紹,請參見憑據策略概述。
您可以先選擇默認策略,創建憑據后根據業務需要再修改策略。
RAM憑據
配置項
說明
選擇RAM用戶
選擇您要托管憑據的RAM用戶,所選RAM用戶至少需要有一個AccessKey。若沒有,請先創建AccessKey,詳細步驟請參考創建AccessKey。
憑據名稱根據RAM用戶的名稱自動生成,憑據名稱在當前地域內唯一。
設置憑據值
輸入對應的AccessKey Secret。
長度不超過30720字節(30KB)。
加密主密鑰
選擇用于加密憑據值的密鑰。
重要密鑰和憑據需要屬于同一個KMS實例,且密鑰必須為對稱密鑰。關于KMS支持哪些對稱密鑰,請參見密鑰管理類型和密鑰規格。
如果是RAM用戶、RAM角色,需要具備使用加密主密鑰執行GenerateDataKey操作的權限。
標簽
憑據的標簽,方便您對憑據進行分類管理。每個標簽由一個鍵值對(Key:Value)組成,包含標簽鍵(Key)、標簽值(Value)。
說明標簽鍵和標簽值的格式:最多支持128個字符,可以包含英文大小寫字母、數字、正斜線(/)、反斜線(\)、下劃線(_)、短劃線(-)、半角句號(.)、加號(+)、等于號(=)、半角冒號(:)、字符at(@)、空格。
標簽鍵不能以aliyun或acs:開頭。
每個憑據最多可以設置20個標簽鍵值對。
自動輪轉
選擇開啟或關閉憑據的周期性自動輪轉。
天數(7天~365天)
僅當開啟自動輪轉需要設置。
表示輪轉的周期,設置后KMS將定期為您更新憑據值。
描述信息
憑據的描述信息。
策略配置
憑據的策略配置。詳細介紹,請參見憑據策略概述。
您可以先選擇默認策略,創建憑據后根據業務需要再修改策略。
數據庫憑據(RDS)
僅支持選擇創建單個憑據。
配置項
說明
數據庫類型
選擇RDS憑據。
憑據名稱
自定義的憑據名稱。憑據名稱在當前地域內唯一。
RDS實例
選擇阿里云賬號下已有的RDS實例。
賬號托管
雙賬號托管(推薦):適用于程序化訪問數據庫場景。托管兩個相同權限的賬號,保證口令重置切換的瞬間,程序訪問數據庫不被中斷。
單擊新建賬號,配置賬號名、選擇數據庫并指定權限。
說明一鍵創建和授權不會立即為您配置新的賬號,而是在您審核確認憑據信息之后進行配置。
單擊導入已有賬號,選擇用戶名、配置口令。
說明建議您將口令配置為創建RDS實例用戶賬號時對應的密碼。如果導入的賬號和口令不匹配,您可以在憑據首次輪轉之后,獲取正確的賬號和口令。
單賬號托管:適用于高權限賬號或者人工運維賬號托管場景。口令重置切換的瞬間,憑據的當前版本可能暫時無法使用。
單擊新建賬號,配置賬號名、選擇賬號類型。
您可以選擇普通賬號和高權限賬號兩種賬號類型。當您選擇普通賬號時,還需選擇數據庫并指定權限。
單擊導入已有賬號頁簽,選擇用戶名、配置口令。
加密主密鑰
選擇用于加密憑據值的密鑰。
重要密鑰和憑據需要屬于同一個KMS實例,且密鑰必須為對稱密鑰。關于KMS支持哪些對稱密鑰,請參見密鑰管理類型和密鑰規格。
如果是RAM用戶、RAM角色,需要具備使用加密主密鑰執行GenerateDataKey操作的權限。
標簽
憑據的標簽,方便您對憑據進行分類管理。每個標簽由一個鍵值對(Key:Value)組成,包含標簽鍵(Key)、標簽值(Value)。
說明標簽鍵和標簽值的格式:最多支持128個字符,可以包含英文大小寫字母、數字、正斜線(/)、反斜線(\)、下劃線(_)、短劃線(-)、半角句號(.)、加號(+)、等于號(=)、半角冒號(:)、字符at(@)、空格。
標簽鍵不能以aliyun或acs:開頭。
每個憑據最多可以設置20個標簽鍵值對。
自動輪轉
選擇開啟或關閉憑據的周期性自動輪轉。
輪轉周期
僅當開啟自動輪轉時需要設置。支持設置為6小時~365天。
表示輪轉的周期,設置后KMS將定期為您更新憑據值。
描述信息
憑據的描述信息。
策略配置
憑據的策略配置。詳細介紹,請參見憑據策略概述。
您可以先選擇默認策略,創建憑據后根據業務需要再修改策略。
數據庫憑據(PolarDB)
僅支持選擇創建單個憑據,并且僅支持PolarDB MySQL/PgSQL新建賬號、雙賬號托管,不支持導入已有賬號、以及單賬號托管。
配置項
說明
數據庫類型
選擇PolarDB憑據。
憑據名稱
自定義的憑據名稱,憑據名稱在當前地域內唯一。
PolarDB實例
選擇阿里云賬號下已有的PolarDB實例。
賬號托管
雙賬號托管:適用于程序化訪問數據庫場景。創建兩個相同權限的賬號,保證口令重置切換的瞬間,程序訪問數據庫不被中斷。
新建賬號:配置賬號名和權限,賬號類型只支持普通賬號。MySQL憑據創建時候需要選擇數據庫+權限
說明一鍵創建和授權不會立即為您配置新的賬號,而是在您審核確認憑據信息之后進行配置。
賬號名必須唯一,如果賬號名已經存在,就不能托管到憑據中。
加密主密鑰
選擇用于加密憑據值的密鑰。
重要密鑰和憑據需要屬于同一個KMS實例,且密鑰必須為對稱密鑰。關于KMS支持哪些對稱密鑰,請參見密鑰管理類型和密鑰規格。
如果是RAM用戶、RAM角色,需要具備使用加密主密鑰執行GenerateDataKey操作的權限。
標簽
憑據的標簽,方便您對憑據進行分類管理。每個標簽由一個鍵值對(Key:Value)組成,包含標簽鍵(Key)、標簽值(Value)。
說明標簽鍵和標簽值的格式:最多支持128個字符,可以包含英文大小寫字母、數字、正斜線(/)、反斜線(\)、下劃線(_)、短劃線(-)、半角句號(.)、加號(+)、等于號(=)、半角冒號(:)、字符at(@)、空格。
標簽鍵不能以aliyun或acs:開頭。
每個憑據最多可以設置20個標簽鍵值對。
自動輪轉
選擇開啟或關閉憑據的周期性自動輪轉。
輪轉周期
僅當開啟自動輪轉時需要設置。支持設置為6小時~365天。
表示輪轉的周期,設置后KMS將定期為您更新憑據值。
描述信息
憑據的描述信息。
策略配置
憑據的策略配置。詳細介紹,請參見憑據策略概述。
您可以先選擇默認策略,創建憑據后根據業務需要再修改策略。
數據庫憑據(Redis)
支持創建單個憑據和創建批量憑據,以單個憑據為例介紹。
配置項
說明
數據庫類型
選擇Redis/Tair實例。
憑據名稱
自定義的憑據名稱。憑據名稱在當前地域內唯一。
Redis/Tair實例
選擇阿里云賬號下已有的Redis實例或Tair實例。
賬號托管
僅支持雙賬號托管。
設置憑據值
僅支持托管新創建的賬號且僅支持雙賬號托管,不支持托管已存在的Redis/Tair存量賬號。
定制賬號名:您需要自定義Redis/Tair數據庫的賬號,此時KMS會調用Redis/Tair的API新創建兩個權限相同的數據庫賬號及口令。以Redis為例,您自定義的Redis數據庫的賬號為
user
,則會創建兩個Redis數據庫賬號user
、user_clone
。指定權限:取值為讀寫、只讀。新創建的兩個數據庫賬號權限相同。
加密主密鑰
選擇用于加密憑據值的密鑰。
重要密鑰和憑據需要屬于同一個KMS實例,且密鑰必須為對稱密鑰。關于KMS支持哪些對稱密鑰,請參見密鑰管理類型和密鑰規格。
如果是RAM用戶、RAM角色,需要具備使用加密主密鑰執行GenerateDataKey操作的權限。
標簽
憑據的標簽,方便您對憑據進行分類管理。每個標簽由一個鍵值對(Key:Value)組成,包含標簽鍵(Key)、標簽值(Value)。
說明標簽鍵和標簽值的格式:最多支持128個字符,可以包含英文大小寫字母、數字、正斜線(/)、反斜線(\)、下劃線(_)、短劃線(-)、半角句號(.)、加號(+)、等于號(=)、半角冒號(:)、字符at(@)、空格。
標簽鍵不能以aliyun或acs:開頭。
每個憑據最多可以設置20個標簽鍵值對。
自動輪轉
選擇開啟或關閉憑據的周期性自動輪轉。
輪轉周期
僅當開啟自動輪轉時需要設置。支持設置為6小時~365天。
表示輪轉的周期,設置后KMS將定期為您更新憑據值。
描述信息
憑據的描述信息。
策略配置
憑據的策略配置。詳細介紹,請參見憑據策略概述。
您可以先選擇默認策略,創建憑據后根據業務需要再修改策略。
ECS憑據
配置項
說明
憑據名稱
自定義的憑據名稱。憑據名稱在當前地域內唯一。
托管實例
選擇阿里云賬號下已有的ECS實例。
托管用戶
填寫ECS實例上已有的用戶名稱,例如:root(Linux系統)或Administrator(Windows系統)。
初始憑據值
長度不超過30720字節(30KB)。
口令:用戶登錄ECS實例的密碼。
密鑰對:用戶登錄ECS實例的SSH密鑰對。
您是在ECS創建的SSH密鑰對
私鑰:創建SSH密鑰對后,瀏覽器自動下載私鑰文件(密鑰對名稱.pem)到本地電腦。詳細內容,請參見創建SSH密鑰對。
您是自行生成的SSH密鑰對
請在生成密鑰對的同時保存私鑰和公鑰。以使用
ssh-keygen
命令生成并保存3072位RSA密鑰對為例。ssh-keygen -t RSA -b 3072 -m PEM -f ~/.ssh/sshKey_demo -N ""
執行完成后,會生成兩個文件:
~/.ssh/sshKey_demo
:其中保存的是私鑰。~/.ssh/sshKey_demo.pub
:其中保存的是公鑰。
說明請您輸入正確的憑據值。如果輸入的憑據值不正確,在ECS憑據首次輪轉前,您從KMS獲取到的口令或密鑰對將不能正常登錄ECS實例。
加密主密鑰
選擇用于加密憑據值的密鑰。
重要密鑰和憑據需要屬于同一個KMS實例,且密鑰必須為對稱密鑰。關于KMS支持哪些對稱密鑰,請參見密鑰管理類型和密鑰規格。
如果是RAM用戶、RAM角色,需要具備使用加密主密鑰執行GenerateDataKey操作的權限。
標簽
憑據的標簽,方便您對憑據進行分類管理。每個標簽由一個鍵值對(Key:Value)組成,包含標簽鍵(Key)、標簽值(Value)。
說明標簽鍵和標簽值的格式:最多支持128個字符,可以包含英文大小寫字母、數字、正斜線(/)、反斜線(\)、下劃線(_)、短劃線(-)、半角句號(.)、加號(+)、等于號(=)、半角冒號(:)、字符at(@)、空格。
標簽鍵不能以aliyun或acs:開頭。
每個憑據最多可以設置20個標簽鍵值對。
自動輪轉
選擇開啟或關閉憑據的周期性自動輪轉。
輪轉周期
僅當開啟自動輪轉時需要設置。支持設置為1小時~365天。
表示輪轉的周期,設置后KMS將定期為您更新憑據值。
描述信息
憑據的描述信息。
策略配置
憑據的策略配置。詳細介紹,請參見憑據策略概述。
您可以先選擇默認策略,創建憑據后根據業務需要再修改策略。
步驟二:應用程序獲取憑據
您可以通過阿里云SDK、KMS實例SDK、憑據SDK(憑據客戶端、憑據JDBC客戶端、RAM憑據插件)來獲取憑據值。詳細介紹,請參見SDK參考。
本文以憑據客戶端Java版為例進行介紹,更多信息,請參見憑據客戶端。
準備工作
安裝憑據客戶端(Java)。
通過Maven在項目中添加依賴,安裝憑據客戶端。示例代碼:
<dependency> <groupId>com.aliyun</groupId> <artifactId>alibabacloud-secretsmanager-client</artifactId> <version>x.x.x</version> </dependency>
說明請確保憑據客戶端版本為1.3.2及以上版本。
通過配置文件(secretsmanager.properties)來配置憑據客戶端運行參數。
以通過環境變量提供client key文件的口令為例,示例代碼:
cache_client_dkms_config_info=[{"regionId":"<your KMS instance region>","endpoint":"<your KMS instance endpoint>","passwordFromEnvVariable":"<your_password_env_variable>","clientKeyFile":"<your client key file path>","ignoreSslCerts":false,"caFilePath":"<your KMS instanceCA certificate file path>"}]
說明您還需要在運行應用程序的服務器中設置環境變量,環境變量名稱即您在
passwordFromEnvVariable
中指定的名稱,環境變量的值為ClientKey文件的憑證口令。不同操作系統的環境變量配置方法不同,具體操作,請參見在Linux、macOS和Windows系統配置環境變量。
獲取憑據
在您的應用程序中構建憑據客戶端后,使用構建好的客戶端獲取憑據信息。示例代碼如下:
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 SecretCacheClientSample {
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();
}
}
}