1. 简介

为了满足客户对存储到数据库中字段加密不同的要求,该功能允许客户自行实现数据加密存储逻辑 ,来保障数据存储安全合规。

2. 客户准备工作

2.1. 客户自定义加密实现

为了数据自定义加密存储问题,通过客户自行封装代码逻jar包,实现修改上报数据中指定字段加密存储定制化需求,使用流程如下:

  1. 封装加密jar包,并且jar包中提供加密方法,方法要求如下
package com.hina.utils;

public class DataEncryptUtil {

    /**
     * 将原始json上报数据选取其中需要加密字段,对其值进行加密处理
     *
     * @param dataOriginalJson    原始报文json(报文格式,查看【2.2. 原始数据格式】)
     * @return                    加密后的报文json格式(只允许对指定字段值加密,不允许对报文加密,报文中的json的key需要原值返回)
     */
    public static String encrypt(String dataOriginalJson) {
        //TODO  需要客户自己编写 对原始报文中某些字段加密,后返回
        //TODO  ........
        return jsonValueEncryptStri;
    }
}
  1. 打包成jar包

将编写好的程序,编译且打包成jar,包名为:hina-custom-jsonencrypt.jar,可以依赖第三方jar包。但是不建议大量类库依赖的情况。

对于当前功能的加密处理,我们推荐使用加密库进行本地加密,以确保数据处理的效率和安全性。若您的加密需求涉及到数据库或网络接口调用等其他中间件服务,请务必与我们的技术支持团队联系。我们将与您共同探讨并制定一个既完善又合理的加密实施方案,以满足您的特定需求。

2.2. 原始数据格式

数据遵循的 JSON 格式,每条数据记录都包含以下关键字段:

  • anonymous_id:匿名用户标识符
  • account_id:用户的唯一标识符
  • event:事件名称,标识用户行为。
  • time:事件发生的时间戳,映射数据字段为“event_time”
  • type:数据类型,通常为 “track”。
  • _track_id:日志跟踪编号,标识事件的唯一编号。
  • properties:存储预置属性和自定义属性信息。

2.3. 示例数据

[{
  "anonymous_id": "C57174DA-4D5B-4BA7-A7B5-E740B3070C4F",
  "account_id": "10001",
  "event": "H_AppStart",
  "time": 1704067200000,
  "type": "track",
  "_track_id": "123456",
  "properties": {
        "自定义属性1": 666,
        "自定义属性2": "字符串",
        "自定义属性3": "2024-01-01 08:00:00",
        "预置属性H开头": "......"
  }
}]

3. 自定义加密包实施

  • 部署JAR包: 将您的自定义加密JAR包复制到每个应用节点服务器的指定目录中。
  • 配置Nacos: 在Nacos配置中心,设置JAR包的路径,确保系统能够正确加载。
  • 启动项目: 完成配置后,启动您的项目。这将使新的加密设置生效,保障数据安全。

3.1 部署JAR包

加密包部署:将hina-custom-jsonencrypt.jar放置于服务器的指定目录,例如:/opt/edp/hina-cloud/lib/。

确保所有必需的第三方JAR包与您的自定义加密JAR包一同放置在指定目录下,以便于应用正确加载所有依赖。若在部署过程中遇到JAR包版本冲突或其他兼容性问题,请及时联系我们的技术支持团队,我们将提供专业的解决方案以确保您的系统稳定运行。

升级自定义加密包: 当您升级加密方式并更新您的自定义加密包后,请记得重启项目。这一步骤是必要的,因为它会激活新版本的加密功能,确保您的数据保护措施是最新的。

3.2 配置Nacos

需要在hina-cloud-engine项目的nacos配置中添加如下配置:

hina:
  cloud:
    engine:
      core:
        data-encrypt-enable-flag: true
        data-encrypt-lib-dir: /opt/edp/hina-cloud/lib/
        data-encrypt-util-class-name: com.hina.utils.DataEncryptUtil
        data-encrypt-util-method-name: encrypt

3.3 配置参数说明

参数名称 是否必填 默认值 描述
data-encrypt-enable-flag 是否开启自定义加密功能
data-encrypt-lib-dir 自定义加密工具类库路径(包括依赖包)
data-encrypt-util-class-name com.hina.utils.DataEncryptUtil 自定义加密工具类引用名称
data-encrypt-util-method-name encrypt 自定义加密工具方法名称

4. 基础工具包

4.1. 推荐

为了简化开发流程并缩短集成时间,我们建议采用海纳提供的基础工具包。

基础工具包:hina-custom-jsonencrypt.zip

该工具包内已集成了BC加密库和JSON解析库,只需进行少量二次开发,即可实现数据摘要、对称加密、非对称加密等多种安全处理功能,有效提升数据处理的安全性和效率。

5. 操作示例

操作步骤一

进入项目目录,并使用maven打包加密工具包,hina-custom-jsonencrypt-1.0.0.jar

cd /opt/project/hina-custom-jsonencrypt
maven clean package

操作步骤二

上传jar包至指定目录(目录可动态配置)

scp /opt/project/hina-custom-jsonencrypt/target/hina-custom-jsonencrypt-1.0.0.jar user@remote:/opt/edp/hina-cloud/lib/

操作步骤三

打开nacos控台,并搜索engine配置,点击编辑按钮。

操作步骤四

在 hina.cloud.engine.core 的配置中加入自定义加密配置,随后点击发布按钮。

操作步骤五

重启hina-cloud-engine项目,重启后即可生效。