配置中心一般都以明文格式存儲配置數據。為了提升敏感數據(如數據源、Token、用戶名和密碼等)的安全性,MSE通過集成KMS的密鑰服務,提供了配置數據加解密能力,從而降低敏感數據的泄露風險。
前提條件
已開通密鑰管理服務(KMS)
重要為保障數據安全性,MSE使用阿里云KMS來加解密。如果您是2022年03月31日之后新開通的KMS,則需要購買專屬KMS。詳細信息,請參見【升級公告】KMS升級為專屬KMS。關于KMS的收費標準,請參見KMS計費說明。
創建加密配置
按照以下步驟在MSE控制臺創建加密配置。
使用MSE加解密服務必須使用阿里云賬號或RAM用戶的AccessKey。
登錄MSE注冊配置中心管理控制臺,并在頂部菜單欄選擇地域。
在左側導航欄,選擇注冊配置中心 > 實例列表。
在實例列表頁面,單擊目標實例名稱。
在左側導航欄,選擇配置管理 > 配置列表。
在配置列表頁面左上角,選擇目標命名空間,然后單擊創建配置。
在創建配置面板,打開數據加密開關。
在數據加密區域,檢查是否已開通KMS 加密。若未開通,請先開通KMS服務。
在數據加密區域,如果您是2022年03月31日之后新開通的KMS服務,則需要選擇加密所需的密鑰KeyId(可在阿里云KMS創建并使用),并綁定密鑰KeyId到此Nacos實例上,之后所有的配置加密都會使用此密鑰。
重要請勿刪除或禁用綁定到此Nacos的密鑰,否則加密配置無法解密。
刷新創建配置面板,選擇KMS 加密方式。
參數
描述
KMS AES-256 加密
使用KMS的信封加解密方法,256位密鑰,加密強度高,加密配置內容最大不超過50KB。配置內容的明文數據不會傳輸到KMS系統,安全性更高,推薦使用。請根據您的業務需求進行選擇。
KMS AES-128 加密
128位密鑰,加密強度中等,加密配置內容最大不超過50KB。
KMS加密
不推薦使用,特殊字符存在兼容性問題(例如對于
&
符號會被轉義為\u0026
),加密配置內容最大不超過6KB。說明對于新版本kms3.0的用戶展示的是KMS AES-256加密。出于歷史兼容考慮,對于舊版本支持kms1.0的用戶展示3種加密方式,但普通KMS加密和KMS AES-128 加密不推薦使用。
在配置格式區域,選擇一種配置格式,并在右側配置內容文本框中輸入配置內容,然后單擊發布。
通過KMS 1.0使用加密配置
Nacos SDK For Java
登錄MSE注冊配置中心管理控制臺,并在頂部菜單欄選擇地域。
在左側導航欄,選擇注冊配置中心 > 實例列表。
在實例列表頁面,單擊目標實例名稱。
在左側導航欄,選擇配置管理 > 配置列表。
選擇命名空間,單擊目標配置的Data ID,然后在配置詳情頁面,單擊示例代碼頁簽。
使用加密配置。
通過RAM角色使用加密配置
在代碼中添加如下依賴。
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.4.3</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client-mse-extension</artifactId> <version>1.0.4</version> </dependency>
版本說明
重要加解密插件版本與Nacos-client版本搭配錯誤,會存在穩定性風險,建議使用推薦適配版本。
Nacos-client大版本
Nacos-client版本
推薦插件版本
1.x
1.4.3版本及以上
1.0.2版本及以上
2.x
2.1.1版本及以上
1.0.4版本及以上
根據您使用的框架類型,請選擇正確的代碼進行配置。
如果您是直接使用Nacos Client框架獲取配置,則需要配置如下示例代碼。
請將代碼中的serverAddr、ramRoleName、regionId、dataid以及group參數替換成實際業務的參數。
try { Properties properties = new Properties(); properties.put("serverAddr", "mse-xxxxxx-p.nacos-ans.mse.aliyuncs.com"); properties.put("ramRoleName", "<ECS/ACK綁定的RAM角色>"); properties.put("keyId", "alias/acs/mse"); //kmsv1.0版本這里是固定值 properties.put("kms_region_id", "cn-hangzhou"); properties.put("kmsVersion", "v1.0"); ConfigService configService = NacosFactory.createConfigService(properties); System.out.println("content:::"+configService.getConfig("cipher-kms-aes-256-dataid", "group", 6000)); } catch (Exception e) { e.printStackTrace(); }
如果您使用的是Spring Cloud Nacos Config框架獲取配置,則需要添加如下的配置。
kms_region_id=cn-hangzhouspring.cloud.nacos.config.server-addr=mse-xxxxxxx-p.nacos-ans.mse.aliyuncs.com:8848 spring.cloud.nacos.config.name=cipher-kms-aes-256-dataid spring.cloud.nacos.config.group=group spring.cloud.nacos.config.ramRoleName=<ECS/ACK綁定的RAM角色> spring.cloud.nacos.config.kms_region_id=cn-hangzhou spring.cloud.nacos.config.keyId=alias/acs/mse spring.cloud.nacos.config.kmsVersion=v1.0
說明如果使用RAM角色配置加密,則必須提前為該RAM角色授予AliyunACMFullAccess和AliyunKMSFullAccess權限。更新信息,請參見為RAM角色授權。
通過RAM用戶使用加密配置
在代碼中添加如下依賴。
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.4.3</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client-mse-extension</artifactId> <version>1.0.4</version> </dependency>
版本說明
重要加解密插件版本與Nacos-client版本搭配錯誤,會存在穩定性風險,建議使用推薦適配版本。
Nacos-client大版本
Nacos-client版本
推薦插件版本
1.x
1.4.3版本及以上
1.0.2版本及以上
2.x
2.1.1版本及以上
1.0.3版本
根據您使用的框架類型,請選擇正確的代碼進行配置。
如果您是直接使用Nacos Client框架獲取配置,則需要配置如下示例代碼。
請將代碼中的serverAddr、accessKey、secretKey、regionId、dataid以及group參數替換成實際業務的參數。
說明微服務引擎的AccessKey ID和AccessKey Secret的環境變量名為MSE_AK、MSE_SK。
try { Properties properties = new Properties(); properties.put("serverAddr", "mse-xxxxxx-p.nacos-ans.mse.aliyuncs.com"); properties.put("accessKey", "MSE_AK"); properties.put("secretKey", "MSE_SK"); properties.put("keyId", "alias/acs/mse"); properties.put("kms_region_id", "cn-hangzhou"); properties.put("kmsVersion", "v1.0"); ConfigService configService = NacosFactory.createConfigService(properties); System.out.println("content:::"+configService.getConfig("cipher-kms-aes-256-dataid", "group", 6000)); } catch (Exception e) { e.printStackTrace(); }
如果您使用的是Spring Cloud Nacos Config框架獲取配置,則需要添加如下的配置,并且通過JVM系統參數-D或者環境變量配置MSE集群所在的地域,例如杭州地域為
-Dkms_region_id=cn-hangzhou
。spring.cloud.nacos.config.server-addr=mse-xxxxxxx-p.nacos-ans.mse.aliyuncs.com:8848 spring.cloud.nacos.config.name=cipher-kms-aes-256-dataid spring.cloud.nacos.config.group=group spring.cloud.nacos.config.access-key=MSE_AK spring.cloud.nacos.config.secret-key=MSE_SK spring.cloud.nacos.config.kms_region_id=cn-hangzhou spring.cloud.nacos.config.keyId=alias/acs/mse spring.cloud.nacos.config.kmsVersion=v1.0
說明使用阿里云賬號的AccessKey ID和AccessKey Secret可直接獲取配置數據,但建議您填寫RAM用戶的AccessKey ID和AccessKey Secret。如果使用RAM用戶配置加密,則必須提前為其授予AliyunACMFullAccess和AliyunKMSFullAccess權限。如需進一步了解,請參見RAM用戶。
Nacos SDK For Go
通過RAM用戶使用加密配置
按照以下步驟通過RAM用戶獲取使用加密配置的示例代碼并初始化參數。
登錄MSE注冊配置中心管理控制臺,并在頂部菜單欄選擇地域。
在左側導航欄,選擇注冊配置中心 > 實例列表。
在實例列表頁面,單擊目標實例名稱。
在左側導航欄,選擇配置管理 > 配置列表。
選擇命名空間,單擊目標配置的Data ID,然后在配置詳情頁面,單擊示例代碼頁簽。選擇GO版本的示例代碼,放在項目工程中。
使用
go get
命令下載Nacos Client Go SDK
依賴。go get -u github.com/nacos-group/nacos-sdk-go/v2@v2.2.5
版本說明
加解密插件版本與Nacos-client版本搭配錯誤,會存在穩定性風險,建議使用推薦適配版本。
插件功能支持
Nacos-client版本
KMS 1.0
v2.0.0版本及以上(推薦最新版本)
修改Nacos Client的初始化配置。
請將代碼中的{server - addr}、{AK}、{SK}參數替換為實際業務的參數,并確保開啟KMS配置加密功能參數
OpenKMS: true
和KMSVersion: KMSv1
。sc := []constant.ServerConfig{ { IpAddr: "{server - addr}", // 替換為您MSE實例的地址。 Port: 8848, }, } var accessKey = "{AK}" // 替換為您賬號的AK(用于MSE Nacos和KMS鑒權)。 var secretKey = "{SK}" // 替換為您賬號的SK(用于MSE Nacos和KMS鑒權)。 cc := constant.ClientConfig{ NamespaceId: "public", // 命名空間ID。 OpenKMS: true, // 開啟使用KMS為配置加密。 KMSVersion: KMSv1, // 使用KMS服務1.0版本。 AccessKey: accessKey, SecretKey: secretKey, TimeoutMs: 5000, NotLoadCacheAtStart: true, LogDir: "/tmp/nacos/log", CacheDir: "/tmp/nacos/cache", RotateTime: "1h", MaxAge: 3, LogLevel: "debug", RegionId: "cn-hangzhou", }
發布加密配置。
keyId
:對配置進行加密所使用的KMS密鑰ID,在KMS 1.0模式可忽略此參數。configParam := vo.ConfigParam{ DataId: "cipher-kms-aes-256-crypt", Group: "default", Content: "cipher-aes-256", } published, err := client.PublishConfig(configParam) if published && err == nil { fmt.Printf("successfully publish: group[%s], dataId[%s], data[%s]\n", configParam.Group, configParam.DataId, configParam.Content) } else { fmt.Printf("failed to publish: group[%s], dataId[%s], data[%s]\n with error: %s\n", configParam.Group, configParam.DataId, configParam.Content, err) }
通過KMS 3.0使用加密配置
前提條件
已購買和啟用KMS實例。具體操作,請參見購買和啟用KMS實例。
已創建應用接入點并保存了Client Key、獲取KMS實例CA證書。具體操作,請參見創建應用接入點。
確保應用程序運行環境可訪問MSE實例(支持公網、內網訪問)和KMS實例(僅支持VPC內訪問,如需跨VPC訪問,請參見同地域多VPC訪問KMS實例)。
Nacos SDK For Java
登錄MSE注冊配置中心管理控制臺,并在頂部菜單欄選擇地域。
在左側導航欄,選擇注冊配置中心 > 實例列表。
在實例列表頁面,單擊目標實例名稱。
在左側導航欄,選擇配置管理 > 配置列表。
選擇命名空間,單擊目標配置的Data ID,然后在配置詳情頁面,單擊示例代碼頁簽。
使用加密配置。
通過RAM角色使用加密配置
在代碼中添加如下依賴。
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.4.3</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client-mse-extension</artifactId> <version>1.0.4</version> </dependency>
說明只支持1.0.4及以上版本的加密插件使用KMS 3.0創建加密配置。
版本說明
加解密插件版本與Nacos-client版本搭配錯誤,會存在穩定性風險,建議使用推薦適配版本。
Nacos-client大版本
Nacos-client版本
推薦插件版本
1.x
1.4.3版本及以上
1.0.4版本及以上
2.x
2.1.1版本及以上
1.0.4版本及以上
根據您使用的框架類型,選擇正確的代碼進行配置。
如果您是直接使用Nacos Client框架獲取配置,則需要配置如下示例代碼。
請將代碼中的serverAddr、accessKey、secretKey、regionId、kms_region_id、kmsEndpoint、keyId、kmsVersion、kmsClientKeyFilePath、kmsPasswordKey、kmsCaFilePath等參數替換為實際業務的參數。
try { Properties properties = new Properties(); properties.put("serverAddr", "mse-xxxxxx-p.nacos-ans.mse.aliyuncs.com"); properties.put("ramRoleName", "<ECS/ACK綁定的RAM角色>"); properties.put("regionId", "cn-hangzhou"); properties.put("kms_region_id", "cn-hangzhou"); properties.put("kmsEndpoint", "kst-hzz6xxxr.cryptoservice.kms.aliyuncs.com"); properties.put("keyId", "yourKeyIdOrKeyAlias"); properties.put("kmsVersion", "v3.0"); properties.put("kmsClientKeyContent", "clientKey_content"); // kmsClientKeyContent與kmsClientKeyFilePath設定任意一個即可,kmsClientKeyContent優先級更高。 // properties.put("kmsClientKeyFilePath", "clientKey_hangzhou.json"); properties.put("kmsPasswordKey", "10xxxd1d"); properties.put("kmsCaFileContent", "ca_content"); // kmsCaFileContent與kmsCaFilePath設定任意一個即可,kmsCaFileContent優先級更高。 // properties.put("kmsCaFilePath", "ca.pem"); ConfigService configService = NacosFactory.createConfigService(properties); System.out.println("content:::"+configService.getConfig("cipher-kms-aes-256-dataid", "group", 6000)); } catch (Exception e) { e.printStackTrace(); }
參數說明
請確保以下參數設置正確。
參數
說明
serverAddr
MSE集群的地址。
ramRoleName
ECS/ACK綁定的RAM角色。
regionId
非必填參數。MSE集群所在的Region。
kms_region_id
非必填參數。KMS實例所在的Region,如果為空值,會使用
regionId
。kmsEndpoint
KMS實例VPC地址(地址中不要攜帶HTTPS)。
keyId
對配置進行加密所使用的KMS密鑰ID,可在KMS密鑰管理控制臺創建并使用,如無需在程序中修改加密配置,則無需配置。
kmsVersion
KMS版本,采用固定值v3.0。
kmsClientKeyFilePath
KMS Client Key Content的文件路徑,可在KMS實例創建應用接入點處獲取。
kmsClientKeyContent
KMS Client Key Content的內容,可在KMS實例創建應用接入點處獲取。
說明kmsClientKeyContent
與kmsClientKeyFilePath
設定任意一個即可,kmsClientKeyContent
優先級更高。kmsPasswordKey
KMS Password值,可在KMS實例創建應用接入點處獲取。
kmsCaFilePath
KMS 使用的CA證書文件路徑,可在KMS實例創建應用接入點處獲取。
kmsCaFileContent
KMS 使用的CA證書內容,可在KMS實例創建應用接入點處獲取。
說明kmsCaFileContent
與kmsCaFilePath
設定任意一個即可,kmsCaFileContent
優先級更高。如果您使用的是Spring Cloud Nacos Config框架獲取配置,則需要添加如下配置。
#設置期望從nacos中加載的配置的dataId以及group,refreshEnabled=true指定支持動態刷新 spring.config.import=nacos:cipher-kms-aes-256-****.properties?group=****&refreshEnabled=true ##nacos 相關配置 #設置mse nacos的訪問地址 spring.cloud.nacos.config.server-addr=mse-*****.nacos-ans.mse.aliyuncs.com #設置命名空間,如果訪問public公開空間,則不需要設置該參數 spring.cloud.nacos.config.namespace=5babe1ee-****-****-****-7e7ce892e2ab #如nacos開啟了鑒權,則需要設置客戶端身份信息 spring.cloud.nacos.config.ramRoleName=<ECS/ACK綁定的RAM角色> #如果以ak,sk訪問nacos,因其參數的特殊性,建議以JVM參數或者環境變量方式指定。 #JVM參數 -Dspring.cloud.nacos.config.accessKey=LTA************* -Dspring.cloud.nacos.config.secretKey=************* #環境變量 spring_cloud_nacos_config_accessKey=LTA************* spring_cloud_nacos_config_secretKey=************* ## kms相關配置 #kms實例的所在region spring.cloud.nacos.config.kms_region_id=cn-hangzhou #kms實例vpc地址,不要攜帶https前綴 spring.cloud.nacos.config.kmsEndpoint=kst-xxx.cryptoservice.kms.aliyuncs.com #kms的keyId或者keyId別名,以key或者alias開頭,如不需要通過程序發布加密配置,則無需配置,解密過程不依賴此參數。 spring.cloud.nacos.config.keyId=alias/*** #kms版本 固定值 spring.cloud.nacos.config.kmsVersion=v3.0 #kms接入點的客戶端密鑰文件地址 spring.cloud.nacos.config.kmsClientKeyFilePath=clientKey_hangzhou.json #kms客戶端密鑰密碼,請設置clientKey_KAAP.***_Password.t密鑰的內容,因其特殊性,建議通過JVM參數或者環境變量指定。 #JVM參數 -Dspring.cloud.nacos.config.kmsPasswordKey=10xxxd1d #環境變量 spring.cloud.nacos.config.kmsPasswordKey=10xxxd1d spring_cloud_nacos_config_kmsPasswordKey=10xxxd1d #設置kms接入點的CA文件地址,校驗kmsEndpoint合法性,防止身份冒充。 spring.cloud.nacos.config.kmsCaFilePath=clientKey_hangzhou.json
說明如果您的Nacos實例未開啟RAM鑒權,可忽略MSE_AK和MSE_SK的配置。
如果您使用的是Spring Cloud Alibaba 2022.x以及2023.x版本請升級到2023.0.1.2版本。
如果您使用的是Spring Cloud Alibaba 2021.x版本請升級到2021.0.6.1版本。
如果您使用的是Spring Cloud Alibaba 2.x版本請升級到2.2.10版本。
通過RAM用戶使用加密配置
在代碼中添加如下依賴。
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.4.3</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client-mse-extension</artifactId> <version>1.0.4</version> </dependency>
說明只支持1.0.3及以上版本的加密插件使用KMS 3.0創建加密配置。
版本說明
加解密插件版本與Nacos-client版本搭配錯誤,會存在穩定性風險,建議使用推薦適配版本。
Nacos-client大版本
Nacos-client版本
推薦插件版本
1.x
1.4.3版本及以上
1.0.4版本及以上
2.x
2.1.1版本及以上
1.0.4版本及以上
根據您使用的框架類型,選擇正確的代碼進行配置。
如果您是直接使用Nacos Client框架獲取配置,則需要配置如下示例代碼。
請將代碼中的serverAddr、accessKey、secretKey、regionId、kms_region_id、kmsEndpoint、keyId、kmsVersion、kmsClientKeyFilePath、kmsPasswordKey、kmsCaFilePath等參數替換為實際業務的參數。
try { Properties properties = new Properties(); properties.put("serverAddr", "mse-xxxxxx-p.nacos-ans.mse.aliyuncs.com"); // AK和SK用于Nacos鑒權,如果您的Nacos實例未開啟RAM鑒權,可忽略AK和SK配置。 properties.put("accessKey", "MSE_AK"); properties.put("secretKey", "MSE_SK"); properties.put("regionId", "cn-hangzhou"); properties.put("kms_region_id", "cn-hangzhou"); properties.put("kmsEndpoint", "kst-hzz6xxxr.cryptoservice.kms.aliyuncs.com"); properties.put("keyId", "alias/acs/mse"); properties.put("kmsVersion", "v3.0"); properties.put("kmsClientKeyContent", "clientKey_content"); // kmsClientKeyContent與kmsClientKeyFilePath設定任意一個即可,kmsClientKeyContent優先級更高。 // properties.put("kmsClientKeyFilePath", "clientKey_hangzhou.json"); properties.put("kmsPasswordKey", "10xxxd1d"); properties.put("kmsCaFileContent", "ca_content"); // kmsCaFileContent與kmsCaFilePath設定任意一個即可,kmsCaFileContent優先級更高。 // properties.put("kmsCaFilePath", "ca.pem"); ConfigService configService = NacosFactory.createConfigService(properties); System.out.println("content:::"+configService.getConfig("cipher-kms-aes-256-dataid", "group", 6000)); } catch (Exception e) { e.printStackTrace(); }
參數說明
請確保以下參數設置正確。
參數
說明
serverAddr
MSE集群的地址。
accessKey
您賬號的AccessKey ID。
說明如果您的Nacos實例未開啟RAM鑒權,可忽略此配置。
secretKey
您賬號的AccessKey Secret。
說明如果您的Nacos實例未開啟RAM鑒權,可忽略此配置。
regionId
非必填參數。MSE集群所在的Region。
kms_region_id
非必填參數。KMS實例所在的Region,如果為空值,會使用
regionId
。kmsEndpoint
KMS實例的地址。
keyId
對配置進行加密所使用的KMS密鑰id,可在KMS密鑰管理控制臺創建并使用。
kmsVersion
KMS版本,采用固定值v3.0。
kmsClientKeyFilePath
KMS Client Key Content的文件路徑。可在KMS實例創建實例接入點處獲取。
kmsClientKeyContent
KMS Client Key Content的內容。可在KMS實例創建實例接入點處獲取。
說明kmsClientKeyContent
與kmsClientKeyFilePath
設定任意一個即可,kmsClientKeyContent
優先級更高。kmsPasswordKey
KMS Password值。可在KMS實例創建實例接入點處獲取。
kmsCaFilePath
KMS 使用的CA證書文件路徑。可在KMS實例創建實例接入點處獲取。
kmsCaFileContent
KMS 使用的CA證書內容。可在KMS實例創建實例接入點處獲取。
說明kmsCaFileContent
與kmsCaFilePath
設定任意一個即可,kmsCaFileContent
優先級更高。如果您使用的是Spring Cloud Nacos Config框架獲取配置,則需要添加如下配置。
spring.cloud.nacos.config.server-addr=mse-xxxxxxx-p.nacos-ans.mse.aliyuncs.com:8848 spring.cloud.nacos.config.name=cipher-kms-aes-256-dataid spring.cloud.nacos.config.group=group spring.cloud.nacos.config.access-key=MSE_AK spring.cloud.nacos.config.secret-key=MSE_SK spring.cloud.nacos.config.kms_region_id=cn-hangzhou spring.cloud.nacos.config.kmsEndpoint=kst-hzz6xxxr.cryptoservice.kms.aliyuncs.com spring.cloud.nacos.config.keyId=yourKeyIdOrKeyAlias spring.cloud.nacos.config.kmsVersion=v3.0 spring.cloud.nacos.config.kmsClientKeyFilePath=clientKey_hangzhou.json spring.cloud.nacos.config.kmsCaFilePath=clientKey_hangzhou.json spring.cloud.nacos.config.kmsPasswordKey=10xxxd1d
說明如果您的Nacos實例未開啟RAM鑒權,可忽略MSE_AK和MSE_SK的配置。
Nacos SDK For Go
登錄MSE注冊配置中心管理控制臺,并在頂部菜單欄選擇地域。
在左側導航欄,選擇注冊配置中心 > 實例列表。
在實例列表頁面,單擊目標實例名稱。
在左側導航欄,選擇配置管理 > 配置列表。
選擇命名空間,單擊目標配置的Data ID,然后在配置詳情頁面,單擊示例代碼頁簽。選擇GO版本的示例代碼,放在項目工程中。
使用
go get
命令下載Nacos Client Go SDK
依賴。go get -u github.com/nacos-group/nacos-sdk-go/v2@v2.2.5
版本說明
加解密插件版本與Nacos-client版本搭配錯誤,會存在穩定性風險,建議使用推薦適配版本。
插件功能支持
Nacos-client版本
KMS 3.0
v2.2.5版本及以上
修改Nacos Client的初始化配置。
請將代碼中的{server - addr}、{AK}、{SK}、{client_key_content}、{password}、{endpoint}、{ca.pem_content}參數替換為實際業務的參數,并確保已開啟KMS配置加密功能參數
OpenKMS: true
和KMSVersion: KMSv3
。sc := []constant.ServerConfig{ { IpAddr: "{server - addr}", // 替換為您MSE實例的地址。 Port: 8848, }, } var accessKey = "{AK}" // 如果您的Nacos實例未開啟RAM鑒權,可忽略此配置。 var secretKey = "{SK}" // 如果您的Nacos實例未開啟RAM鑒權,可忽略此配置。 cc := constant.ClientConfig{ NamespaceId: "public", // 命名空間Id。 OpenKMS: true, // 開啟使用KMS為配置加密。 KMSVersion: KMSv3, // 使用KMS服務3.0版本。 KMSv3Config: &KMSv3Config{ ClientKeyContent: "client_key.json"), Password: "password"), Endpoint: "endpoint"), CaContent: "ca.pem"), }, AccessKey: accessKey, SecretKey: secretKey, TimeoutMs: 5000, NotLoadCacheAtStart: true, LogDir: "/tmp/nacos/log", CacheDir: "/tmp/nacos/cache", RotateTime: "1h", MaxAge: 3, LogLevel: "debug", }
參數說明
請確保以下參數設置正確。
參數
說明
serverAddr
MSE集群的地址。
AK
您賬號的AccessKey ID。
說明如果您的Nacos實例未開啟RAM鑒權,可忽略此配置。
SK
您賬號的AccessKey Secret。
說明如果您的Nacos實例未開啟RAM鑒權,可忽略此配置。
KMSv3Config.Endpoint
KMS實例的地址。
KMSVersion
KMS版本,采用固定值v3.0。
KMSv3Config.ClientKeyContent
KMS Client Key Content的內容。可在KMS實例創建應用接入點處獲取。
KMSv3Config.Password
KMS Password值。可在KMS實例創建應用接入點處獲取。
KMSv3Config.CaContent
KMS使用的CA證書內容。可在KMS實例創建應用接入點處獲取。
發布加密配置。
configParam := vo.ConfigParam{ DataId: "cipher-kms-aes-256-crypt", Group: "default", Content: "cipher-aes-256", KmsKeyId: "key-xxx", // 對配置進行加密所使用的KMS密鑰Id,可在KMS密鑰管理控制臺創建并使用。 } published, err := client.PublishConfig(configParam) if published && err == nil { fmt.Printf("successfully publish: group[%s], dataId[%s], data[%s]\n", configParam.Group, configParam.DataId, configParam.Content) } else { fmt.Printf("failed to publish: group[%s], dataId[%s], data[%s]\n with error: %s\n", configParam.Group, configParam.DataId, configParam.Content, err) }
問題排查
常見錯誤排查
您可以參考以下操作進行排查:
確保應用程序運行環境可訪問MSE和KMS實例的VPC地址。
說明無需保證MSE實例與KMS實例網絡可互達。
確認使用的KMS版本為
v1.0
還是v3.0
。如果您使用的KMS版本為v1.0,需確保您在2022年03月31日之前開通了KMS服務。說明2022年03月31日之后新開通的KMS服務,需要購買專屬KMS,KMS 1.0的加密功能不再對新用戶開放。
確保您使用的Nacos-client版本與加解密插件的版本相匹配,請參見本文中對應的版本說明。
Nacos Java SDK問題排查
Nacos日志異常堆棧關鍵字 | 問題原因 |
| 初始化參數 |
| 初始化參數 |
| 初始化參數 |
| 初始化參數 |
| 初始化參數 |
| 初始化參數 |
| 初始化參數 |
|
|
| 初始化參數 |
| 初始化參數 |