创建和使用配置加密
为了确保敏感配置(数据源、Token、用户名和密码等)的安全性,降低用户配置的泄露风险,MSE提供了创建加密配置的功能。本文介绍如何创建和使用配置加密。
前提条件
为保障数据安全性,MSE使用阿里云密钥管理服务(KMS)来加解密。另外,如果您是2022年3月31日之后新开通的KMS,则需要购买专属KMS。详细信息,请参见【升级公告】KMS升级为专属KMS。关于KMS的收费标准,请参见KMS计费说明。
创建加密配置
按照以下步骤在MSE控制台创建加密配置。
使用MSE加解密服务必须使用阿里云账号或RAM用户的AccessKey。
登录MSE注册配置中心管理控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择 。
在实例列表页面,单击目标实例名称。
在左侧导航栏,选择 。
在配置列表页面左上角,选择目标命名空间,然后单击创建配置。
在创建配置面板,打开数据加密开关。
重要首次使用此功能时,必须开通密钥管理服务,并授权MSE使用您的密钥管理服务进行加解密,因为MSE数据加密功能依赖密钥管理服务为配置加密。
在数据加密区域,检查是否已开通KMS 加密。若未开通,请先开通KMS服务。
刷新创建配置面板,选择KMS 加密方式。
参数
描述
KMS AES-128 加密
使用KMS的信封加解密方法,配置内容可以超过6 KB,最大不超过100 KB。配置内容的明文数据不会传输到KMS系统,安全性更高,推荐使用。请根据您的业务需求进行选择。
KMS AES-256 加密
使用KMS的信封加解密方法,配置内容可以超过6 KB,最大不超过100 KB。配置内容的明文数据不会传输到KMS系统,安全性更高,推荐使用。请根据您的业务需求进行选择。
KMS 加密
直接调用KMS服务对配置进行加解密,加解密数据的大小不超过4 KB,最大不超过6 KB,对特殊符号如and(&)会解密错误,不推荐使用。
在配置格式区域,选择一种配置格式,并在配置描述文本框中输入配置内容,然后单击发布。
通过RAM用户使用加密配置
按照以下步骤为通过RAM用户获取使用加密配置的示例代码并初始化参数。
登录MSE注册配置中心管理控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择 。
在实例列表页面,单击目标实例名称。
在左侧导航栏,选择 。
选择命名空间,单击目标配置的Data ID,然后在配置详情页面,单击示例代码页签。
在代码中添加以下依赖。
<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.2</version> </dependency>
重要加解密插件1.0.1版本存在稳定性风险,推荐您使用1.0.2版本。nacos-client 1.x版本请升级至1.4.3版本及以上,nacos-client 2.x版本请升级至2.1.1版本及以上。
在业务应用的目录下新建文件。
该文件填入以下内容。
# # Copyright 1999-2021 Alibaba Group Holding Ltd. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # com.alibaba.nacos.client.aliyun.AliyunConfigFilter
根据您使用的框架类型,请选择正确的代码进行配置。
如果您是直接使用Nacos Clien框架获取配置,则需要配置如下示例代码。
请将代码中的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("regionId", "cn-hangzhou"); 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
说明使用阿里云账号的AccessKey ID和AccessKey Secret可直接获取配置数据,但建议您填写RAM用户的AccessKey ID和AccessKey Secret。如果使用RAM用户配置加密,则必须提前为其授予AliyunACMFullAccess和AliyunKMSFullAccess权限。如需进一步了解,请参见RAM用户。
通过RAM角色使用加密配置
按照以下步骤为通过RAM角色获取使用加密配置的示例代码并初始化参数。
登录MSE注册配置中心管理控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择 。
在实例列表页面,单击目标实例名称。
在左侧导航栏,选择 。
选择命名空间,单击目标配置的Data ID,然后在配置详情页面,单击示例代码页签。
在代码中添加如下依赖。
<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.2</version> </dependency>
重要加解密插件1.0.1版本存在稳定性风险,推荐您使用1.0.2版本。nacos-client 1.x版本请升级至1.4.3版本及以上,nacos-client 2.x版本请升级至2.1.1版本及以上。
根据您使用的框架类型,请选择正确的代码进行配置。
如果您是直接使用Nacos Clien框架获取配置,则需要配置如下示例代码。
请将代码中的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"); properties.put("regionId", "cn-hangzhou"); 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.ramRoleName=<ECS/ACK绑定的RAM角色>
说明如果使用RAM角色配置加密,则必须提前为该RAM角色授予AliyunACMFullAccess和AliyunKMSFullAccess权限。更新信息,请参见RAM角色。