注册
DMDRS 同步软件配置账户密文和数据加密
培训园地/ 文章详情 /

DMDRS 同步软件配置账户密文和数据加密

钟一 2026/04/15 72 0 0

1、背景

数据加密传输是保障数据安全与业务可信的核心技术手段。在应用与数据库间的网络链路中,存在被窃听、篡改和身份冒充的风险,若采用明文传输,数据库账号密码、用户隐私信息(如身份证、手机号、银行卡号)、核心业务数据及 SQL 执行语句等敏感内容将直接暴露,极易引发数据泄露与安全事件;因此对账户加密和数据加密是必要的措施。

在 DMDRS 数据同步软件中,可通过修改配置文件,增加相关的安全参数实现账户密文登录和数据加密传输,满足加密需求。

本文将模拟 dmdrs 同步软件在使用过程中配置《账户加密》以及《数据传输加密》。

2、环境信息

本次实验 通过DMDRS 做DM8 到 KAFKA 单向同步,环境信息如下:

源端/目标端 类型 IP 端口 同步的用户
源端 dm8 192.168.175.78 5238 kafka
目标端 kafka+dm8 192.168.175.80 5236 kafka

3、账户加密

同步账户仅在源端配置文件使用,首次启动软件时,需要先使用明文配置,在启动DMDRS 服务后,通过控制台 drcsl 对明文密码进行转换,然后在配置文件中使用密文。步骤如下:

  1. 在启动 DMRDS 服务后,启动控制台
[dmdba@dm78 bin]$ ./drcsl cpt.xml
  1. 在控制台输入加密命令,格式如下
ENCRYPT "<pwd>"

image.png
3. 复制生成的密文,在配置文件中使用。使用密文需要在段中添加参数,否则密文使用无效。

<pwd_encipher>1</pwd_encipher> ## 1 为启用数据库登录密码的加密功能 <pwd>7EB5D3EB83686BA1BF17C2176CE34C53</pwd> ## 上一步得到的密文

image.png
4. 重新登录控制台,即配置完成。

注意:未配置密文参数<pwd_encipher>1</pwd_encipher>会报错,如下:

image.png

4、配置数据传输加密

在 DM8 数据库中,配置COMM_ENCRYPT_NAME参数设置消息加密算法名,以启用加密通信。

在 DMDRS 中,配置数据加密传输使用的是 enable_tls 参数,在 DMDRS 同步链路中,所有的 DMDRS 服务(包括源 DMDRS、目标 DMDRS)都需要配置该参数。配置该参数后,DMDRS服务之间将会启用基于 TLS1.2 协议的证书认证及通信功能。

4.1源端配置

4.1.1 配置数据库加密算法

  1. DM 支持的加密算法名可以通过查询动态视图 V$CIPHERS 获取
select CYT_NAME from V$CIPHERS order by 1;

image.png

  1. 修改 COMM_ENCRYPT_NAME 参数
方式一:CALL SP_SET_PARA_STRING_VALUE(2,'COMM_ENCRYPT_NAME','AES256_CBC') 方式二:直接编辑 dm.ini 文件,修改 COMM_ENCRYPT_NAME 参数。
  1. 重启数据库

确认已修改 COMM_ENCRYPT_NAME 参数,重启数据库服务。

4.1.2 配置 DMDRS 加密参数

  1. 进入 dmdrs 安装的 bin 目录
cd /data2/dmdrs/bin
  1. 编辑 cpt.xml 文件
<base> <mgr_port>5347</mgr_port> <siteid>100</siteid> <pwd_encipher>1</pwd_encipher> ##启动账户使用密文 <enable_tls>1</enable_tls> ##启动数据通信加密 </base> <send> <ip>192.168.175.80</ip> <port>5347</port> <target_name>exec_kafka</target_name> ##下一级 DMDRS 服务的接收 模块的名称,目标端配置 kafka 时注意该名称的使用。 <enable_compress>1</enable_compress> <cipher>AES256_CBC</cipher> ##3.1.1 配置的加密算法名 <map> <item>KAFKA.*==KAFKA.*</item> </map> </send>

4.1.3 配置证书

根据 DMDRS 手册说明,在使用 enable_tls 参数时需要加载 OpenSSL 的认证证书:作为客户端,需要证书 drs_ca.crt;作为服务端,需要证书 drs_server.crt 和秘钥 drs_server.key。

  1. 进入 dmdrs 安装的 bin 目录创建相关目录
cd /data2/dmdrs/bin mkdir server_tls --服务端证书存放位置 mkdir client_tls --客户端证书存放位置
  1. 进入 server_tls 目录加载 OpenSSL 的认证证书
cd /data2/dmdrs/bin/server_tls ## 执行以下三条命令: openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout drs_ca.key -out drs_ca.crt -days 3650 注:该命令所有步骤按回车默认即可 openssl req -newkey rsa:2048 -nodes -keyout drs_server.key -out drs_server.csr 注:common name 填源端主机 ip:192.168.175.78 ,其他步骤回车默认即可 openssl x509 -req -in drs_server.csr -CA drs_ca.crt -CAkey drs_ca.key -CAcreateserial -out drs_server.crt -days 365 注:CN 显示源端 IP 即可
  1. 进入 client_tls 目录创建本地和目标客户端认证的目录
cd /data2/dmdrs/bin/client_tls mkdir 127.0.0.1 --本地客户端验证目录 mkdir 192.168.175.80 --目标端验证目录,需要从目标端传输文件过来
  1. 复制 server_tls 的 drs_ca.crt 文件到 client_tls 下的 127.0.0.1 目录
cd /data2/dmdrs/bin/server_tls cp drs_ca.crt /data2/dmdrs/bin/client_tls/127.0.0.1/
  1. 到 client_tls 下的 192.168.175.80 目录下生成证书
cd /data2/dmdrs/bin/client_tls/192.168.175.80 openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout drs_ca.key -out drs_ca.crt -days 3650 注:全部步骤按回车默认即可 openssl req -newkey rsa:2048 -nodes -keyout drs_server.key -out drs_server.csr 注:common name 填源端主机 ip:192.168.175.78 ,其他步骤回车默认即可 openssl x509 -req -in drs_server.csr -CA drs_ca.crt -CAkey drs_ca.key -CAcreateserial -out drs_server.crt -days 365
  1. 删除 drs_ca.crt 文件,该文件需要从目标端复制,否则会报错
rm -rf drs_ca.crt

image.png

4.2 目标端配置

4.2.1 配置数据库加密算法

参考 4.1.1 源端的配置方式

4.2.2 配置 DMDRS 加密参数

  1. 进入 dmdrs 安装的 bin 目录
cd /data2/dmdrs/bin
  1. 编辑 kafka 相关文件
[dmdba@dm78 bin]$ vi producer.properties bootstrap.servers=192.168.175.80:9092 [dmdba@dm78 bin]$ vi json_format.ini #DMDRS kafka json format Configuration file #this is comments #common format control parameters OP_TIME_FORMAT = (yyyy-mm-dd hh:mi:ss) CUR_TIME_FORMAT = (yyyy-mm-dd hh:mi:ss) NULL_FORMAT = "null" SET_QUOTA = 0 SET_ROWID_COL = 0 NEED_CRLF = 1 CHAR_REPLACE =(",\"),(\,\\) OLD_VALUES = ALL NEW_VALUES = ALL OLD_LOB_FLAG = "empty_lob()" JSON_FORMAT_INS={ "table":"#SCHEMA.#TABLE", "op_type":"#OP_TYPE", "op_ts":"#OP_TIME", "current_ts":"#TIME", "pos":"#POS", "primary_keys":[#PRIMARY_KEY], "after":{#NEW_VALUES} } JSON_FORMAT_UPD={ "table":"#SCHEMA.#TABLE", "op_type":"#OP_TYPE", "op_ts":"#OP_TIME", "current_ts":"#TIME", "pos":"#POS", "primary_keys":[#PRIMARY_KEY], "before":{#OLD_VALUE}, "after":{#NEW_VALUE} } JSON_FORMAT_DEL={ "table":"#SCHEMA.#TABLE", "op_type":"#OP_TYPE", "op_ts":"#OP_TIME", "current_ts":"#TIME", "pos":"#POS", "primary_keys":[#PRIMARY_KEY], "before":{#OLD_VALUE} } JSON_FORMAT_DDL={ "table":"#SCHEMA.#TABLE", "op_type":"#OP_TYPE", "op_ts":"#OP_TIME", "current_ts":"#TIME", "pos":"#POS", "after": ("DB_TYPE":"ORA", "OBJECT_TYPE":"#OP_TYPE", "OBJECT_NAME":"#SCHEMA.#TABLE", "DDL_TEXT":"#DDL_SQL") }
  1. 编辑 cpt.xml 文件

image.png

4.2.3配置证书

目标端只需要配置 client_tls 即可

  1. 进入 dmdrs 安装的 bin 目录创建相关目录
cd /data2/dmdrs/bin mkdir client_tls mkdir server_tls mkdir -p client_tls/192.168.175.80 ## 本机 IP
  1. 进入 server_tls/client_tls 目录加载 OpenSSL 的认证证书
cd /data2/dmdrs/bin/server_tls ## 执行以下三条命令 openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout drs_ca.key -out drs_ca.crt -days 3650 注:全部步骤按回车默认即可 openssl req -newkey rsa:2048 -nodes -keyout drs_server.key -out drs_server.csr 注:common name 填本机 ip:192.168.175.80 ,其他步骤回车默认即可 openssl x509 -req -in drs_server.csr -CA drs_ca.crt -CAkey drs_ca.key -CAcreateserial -out drs_server.crt -days 365
  1. 将 server_tls 下的 drs_ca.crt 文件传输到 client_tls/192.168.175.80 下
cd /data2/dmdrs/bin/client_tls/192.168.175.80 cp /data2/dmdrs/bin/server_tls/drs_ca.crt ./
  1. 将 server_tls 下的 drs_ca.crt 文件发送到源端的 client_tls 目录下
scp drs_ca.crt dmdba@192.168.175.78:/data2/dmdrs/bin/client_tls/192.168.175.80

注意:目标端也是需要在 server_tls 下生成 ca 文件,否则会有报错

5、验证数据传输加密

5.1 启动 kafka(目标端)

  1. 在新窗口后台启动 zookeeper 和 kafka,并创建创建 topic
nohup /opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties > /tmp/zookeeper.log 2>&1 & nohup /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /tmp/kafka.log 2>&1 & /opt/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.175.80:9092 --create --replication-factor 1 --partitions 1 --topic test_dm8

image.png
2. 启动生产者

/opt/kafka/bin/kafka-console-producer.sh --topic test_dm8 --bootstrap-server localhost:9092

image.png
3. 在另外一个新窗口后台启动消费者,观察消费是否正常。

scp drs_ca.crt dmdba@192.168.175.78:/data2/dmdrs/bin/client_tls/192.168.175.80

image.png

说明:可以看到 Kafka 能正常接收数据,那么就可以通过同步软件将消息推送到 kafka 了

5.2.启动源端

需要提前开启归档及逻辑日志

  1. 启动 cpt 进程(后台启动)
1、cd /data2/dmdrs/bin 2、cp service_template/TemplateService ./DrsServiceCPT 3、vi DrsServiceCPT 修改如下内容: INSTALL_HOME=/data2/dmdrs PROG_DIR=/data2/dmdrs/bin CONF_PATH=/data2/dmdrs/bin/cpt.xml NEED_LIB_PATH=/data2/dmdrs/bin:/data/dm8/dmdbms/bin EXEC_PROG_NAME=drsvr SERVICE_TYPE_NAME=drs server 4、./DrsServiceCPT start
  1. 创建用户和表
CREATE TABLESPACE KAFKA DATAFILE 'KAFKA.DBF' SIZE 1024 AUTOEXTEND ON NEXT 2048; CREATE USER KAFKA IDENTIFIED BY DMwzy6870 DEFAULT TABLESPACE KAFKA DEFAULT INDEX TABLESPACE KAFKA; GRANT DBA TO KAFKA; CREATE TABLE KAFKA.TEST(ID INT ,NAME VARCHAR(50)); INSERT INTO KAFKA.TEST VALUES(1,'WANG'); INSERT INTO KAFKA.TEST VALUES(2,'ZHANG'); INSERT INTO KAFKA.TEST VALUES(3,'LI'); INSERT INTO KAFKA.TEST VALUES(4,'LIU'); CREATE TABLE KAFKA.TEST_BF(ID INT ,NAME VARCHAR(50)); insert into KAFKA.TEST_BF VALUES (00011,'20260202AABBCCDDEE'); insert into KAFKA.TEST_BF VALUES (00022,'20260202dfdfdfdfdfdf');

5.3.启动目标端

1、cd /data2/dmdrs/bin 2、cp service_template/TemplateService ./DrsServiceEXEC 3、vi DrsServiceEXEC INSTALL_HOME=/data2/dmdrs PROG_DIR=/data2/dmdrs/bin CONF_PATH=/data2/dmdrs/bin/exec.xml NEED_LIB_PATH=/data2/dmdrs/bin:/data/dm8/dmdbms/bin EXEC_PROG_NAME=drsvr SERVICE_TYPE_NAME=drs server 4、./DrsServiceEXEC start

5.4.启动控制器

1、cd /data2/dmdrs/bin 2、./drcsl cpt.xml 3、connect 4、start 5、alter dmdrs_dm8 add table "sch.name='KAFKA'"

image.png

5.5.验证 kafka 接收情况

前台执行命令观察消费是否正常,正常情况下,控制台(源端)执行的同步操作会将表
数据推送到该前台:

/opt/kafka/bin/kafka-console-consumer.sh --topic test_dm8 --bootstrap-server localhost:9092 --from-beginning

image.png

5.6验证数据加密情况

用 tcpdump 工具抓包,可以看到在配置加密传输前后的差距:《左边为未开启加密传输》的结果,可看到详细的数据值;《右边为开启加密传输后》的结果,对数据进行了加密,无明显的数据显示。
image.png

6、总结

在 DMDRS 同步软件中,可通过配置实现账户密文登录和数据加密传输,更多 DMDRS 的功能使用可在达梦官网查询:
https://eco.dameng.com/document/dm/zh-cn/start/DMDRS_Product_Introduction.html

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服