配置中心一般都以明文格式存储配置数据。为了提升敏感数据(如数据源、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/[email protected]
版本说明
加解密插件版本与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/[email protected]
版本说明
加解密插件版本与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日志异常堆栈关键字 |
问题原因 |
|
初始化参数
|
|
初始化参数
|
|
初始化参数
|
|
初始化参数
|
|
初始化参数
|
|
初始化参数
|
|
初始化参数
|
|
|
|
初始化参数
|
|
初始化参数
|
相关文档