创建和使用配置加密

更新时间: 2023-08-09 10:16:00

为了确保敏感配置(数据源、Token、用户名和密码等)的安全性,降低用户配置的泄露风险,MSE提供了创建加密配置的功能。本文介绍如何创建和使用配置加密。

前提条件

重要

为保障数据安全性,MSE使用阿里云密钥管理服务(KMS)来加解密。另外,如果您是2022年3月31日之后新开通的KMS,则需要购买专属KMS。详细信息,请参见【升级公告】KMS升级为专属KMS。关于KMS的收费标准,请参见KMS计费说明

创建加密配置

按照以下步骤在MSE控制台创建加密配置。

说明

使用MSE加解密服务必须使用阿里云账号或RAM用户的AccessKey。

  1. 登录MSE注册配置中心管理控制台,并在顶部菜单栏选择地域。

  2. 在左侧导航栏,选择注册配置中心 > 实例列表

  3. 实例列表页面,单击目标实例名称。

  4. 在左侧导航栏,选择配置管理 > 配置列表

  5. 配置列表页面左上角,选择目标命名空间,然后单击创建配置

  6. 创建配置面板,打开数据加密开关。

    重要

    首次使用此功能时,必须开通密钥管理服务,并授权MSE使用您的密钥管理服务进行加解密,因为MSE数据加密功能依赖密钥管理服务为配置加密。

    1. 数据加密区域,检查是否已开通KMS 加密。若未开通,请先开通KMS服务。

    2. 刷新创建配置面板,选择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(&)会解密错误,不推荐使用。

  7. 配置格式区域,选择一种配置格式,并在配置描述文本框中输入配置内容,然后单击发布

通过RAM用户使用加密配置

按照以下步骤为通过RAM用户获取使用加密配置的示例代码并初始化参数。

  1. 登录MSE注册配置中心管理控制台,并在顶部菜单栏选择地域。

  2. 在左侧导航栏,选择注册配置中心 > 实例列表

  3. 实例列表页面,单击目标实例名称。

  4. 在左侧导航栏,选择配置管理 > 配置列表

  5. 选择命名空间,单击目标配置的Data ID,然后在配置详情页面,单击示例代码页签。

  6. 在代码中添加以下依赖。

    <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版本及以上。

  7. 在业务应用的目录下新建文件。

    image..png

    该文件填入以下内容。

    #
    # 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
  8. 根据您使用的框架类型,请选择正确的代码进行配置。

    • 如果您是直接使用Nacos Clien框架获取配置,则需要配置如下示例代码。

    • 请将代码中的serverAddraccessKeysecretKeyregionIddataid以及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用户配置加密,则必须提前为其授予AliyunACMFullAccessAliyunKMSFullAccess权限。如需进一步了解,请参见RAM用户

通过RAM角色使用加密配置

按照以下步骤为通过RAM角色获取使用加密配置的示例代码并初始化参数。

  1. 登录MSE注册配置中心管理控制台,并在顶部菜单栏选择地域。

  2. 在左侧导航栏,选择注册配置中心 > 实例列表

  3. 实例列表页面,单击目标实例名称。

  4. 在左侧导航栏,选择配置管理 > 配置列表

  5. 选择命名空间,单击目标配置的Data ID,然后在配置详情页面,单击示例代码页签。

  6. 在代码中添加如下依赖。

    <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版本及以上。

  7. 根据您使用的框架类型,请选择正确的代码进行配置。

    • 如果您是直接使用Nacos Clien框架获取配置,则需要配置如下示例代码。

      请将代码中的serverAddrramRoleNameregionIddataid以及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角色授予AliyunACMFullAccessAliyunKMSFullAccess权限。更新信息,请参见RAM角色

更多信息

阿里云首页 微服务引擎 MSE 相关技术圈