自定义数据加密
1. 简介
为了满足客户对存储到数据库中字段加密不同的要求,该功能允许客户自行实现数据加密存储逻辑 ,来保障数据存储安全合规。
2. 客户准备工作
2.1. 客户自定义加密实现
为了数据自定义加密存储问题,通过客户自行封装代码逻jar包,实现修改上报数据中指定字段加密存储定制化需求,使用流程如下:
- 封装加密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;
}
}
- 打包成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项目,重启后即可生效。