达梦数据库加密

本文介绍了如何在达梦数据库中启用SSL通信加密,包括配置ENABLE_ENCRYPT和COMM_ENCRYPT_NAME参数,以及通过V$CIPHERS动态视图选择加密算法。示例中选择了DES_CBC加密算法,并展示了配置过程。配置完成后,需要重启数据库以使设置生效,并确保客户端与服务器之间的证书和密钥正确存放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	达梦数据库使用ssl通信加密,需要在达梦数据库服务端配置ENABLE_ENCRYPT 和 COMM_ENCRYPT_NAME 参数来指定,客户端以服务端采用的通信方式与其进行通信,达梦数据库支持的加密算法可以通过V$CIPHERS动态视图获取

达梦数据库使用ssl通信加密,需要在达梦数据库服务端配置ENABLE_ENCRYPT 和 COMM_ENCRYPT_NAME 参数来指定,客户端以服务端采用的通信方式与其进行通信,达梦数据库支持的加密算法可以通过V$CIPHERS动态视图获取,如下所示。

SQL> set pagesize 50
SQL> select cyt_name,cyt_type,block_size,kh_size from v$ciphers;

行号 CYT_NAME CYT_TYPE BLOCK_SIZE KH_SIZE


1 DES_ECB 1 8 8
2 DES_CBC 1 8 8
3 DES_CFB 1 8 8
4 DES_OFB 1 8 8
5 DESEDE_ECB 1 8 16
6 DESEDE_CBC 1 8 16
7 DESEDE_CFB 1 8 16
8 DESEDE_OFB 1 8 16
9 AES128_ECB 1 16 16
10 AES128_CBC 1 16 16
11 AES128_CFB 1 16 16
12 AES128_OFB 1 16 16
13 AES192_ECB 1 16 24
14 AES192_CBC 1 16 24
15 AES192_CFB 1 16 24
16 AES192_OFB 1 16 24
17 AES256_ECB 1 16 32
18 AES256_CBC 1 16 32
19 AES256_CFB 1 16 32
20 AES256_OFB 1 16 32
21 RC4 2 0 16
22 MD5 4 0 16
23 SHA1 4 0 20
24 SHA224 4 0 28
25 SHA256 4 0 32
26 SHA384 4 0 48
27 SHA512 4 0 64
28 DES_ECB_NOPAD 1 8 8
29 DES_CBC_NOPAD 1 8 8
30 DESEDE_ECB_NOPAD 1 8 16
31 DESEDE_CBC_NOPAD 1 8 16
32 AES128_ECB_NOPAD 1 16 16
33 AES128_CBC_NOPAD 1 16 16
34 AES192_ECB_NOPAD 1 16 24
35 AES192_CBC_NOPAD 1 16 24
36 AES256_ECB_NOPAD 1 16 32
37 AES256_CBC_NOPAD 1 16 32
37 rows got
已用时间: 0.643(毫秒). 执行号:16.
SQL>

上述结果中加密算法类型(CYT_TYPE)列的值中,1指分组对称加密算法2指流式对称加密算法3指非对称加密算法4指散列算法。查看当前ENABLE_ENCRYPT 和 COMM_ENCRYPT_NAME 参数值,如下所示。

SQL> SELECT NAME,TYPE,VALUE FROM V$PARAMETER WHERE NAME=‘ENABLE_ENCRYPT’ OR NAME=‘COMM_ENCRYPT_NAME’;
行号 NAME TYPE VALUE


1 ENABLE_ENCRYPT IN FILE 0
2 COMM_ENCRYPT_NAME IN FILE
已用时间: 4.397(毫秒). 执行号:17.
SQL>

可以看到,这2个参数均为静态参数,ENABLE_ENCRYPT为0,代表不加密,配置为1代表ssl加密,2代表ssl认证;COMM_ENCRYPT_NAME值为空,未配置加密算法,配置的值为V$CIPHERS中CYT_NAME列中支持的算法值。此处以DES_CBC加密算法为例,如下所示。

SQL> sf_set_system_para_value(‘COMM_ENCRYPT_NAME’,‘DES_CBC’,1,2);
DMSQL 过程已成功完成
已用时间: 13.567(毫秒). 执行号:121403.
SQL>
SQL> sp_set_para_value(2,‘ENABLE_ENCRYPT’,1);
DMSQL 过程已成功完成
已用时间: 4.839(毫秒). 执行号:121404.

参数配置完成后,需要重启数据库,使配置变量值生效,数据库层的配置就完成了。系统层ssl环境配置及证书生成,此处省略。需要注意的是达梦数据库选择使用ssl加密时,需要在达梦数据库安装目录(一般为DM_HOME/bin)所在的子目录server_ssl中存放CA的证书、服务器的证书和服务器的密钥,同时在客户端所在目录下的client_ssl子目录中存放 CA 的证书、客户端的证书和客户端的密钥,这样服务器和客户端的通信即是建立在加密的 SSL 连接之上的。

SQL> conn sysdba/SYSDBA@localhost:5236
case sense user compare fail.
[-70070]:初始化SSL环境失败.
SQL>
SQL> conn sysdba/SYSDBA@localhost:5236#C:\dmdbms\bin\client_ssl\SYSDBA@123456

服务器[localhost:5236]:处于普通打开状态
登录使用时间 : 4.450(ms)
SQL>
通信加密中客户端证书存放的地址和客户端证书密钥。各用户只能使用自己的证书,例如 SYSDBA 账户只能使用\bin\CLIENT_SSL\SYSDBA 下的证书和密码。C:\dmdbms\bin\client_ssl\SYSDBA为此处客户端SYSDBA证书秘钥存放处,@后面的123456为证书密码,如果证书没有设置密码,可以缺省或任意数字代替。

### ShardingSphere 中达梦数据库加密方法及配置 在分布式计算环境中,数据安全至关重要。ShardingSphere 提供了多种方式来增强数据安全性,其中包括对敏感字段的数据脱敏以及通过内置算法实现加解密操作。 对于达梦数据库,在 ShardingSphere 中可以利用其提供的加密功能模块完成对特定列的加密处理[^1]。具体来说: #### 一、启用加密插件 为了使能这一特性,需先确认 `shardingsphere-encrypt` 组件已被加入到项目依赖之中,并适当调整应用构建文件(如 Maven 的 pom.xml 或 Gradle 文件)。之后可在核心配置文件内激活此插件并指定待保护表结构中的哪些列为受控对象。 ```yaml rules: - !ENCRYPT tables: t_order: columns: user_id: # 被加密的列名 cipherColumn: user_id_ciphered # 存储加密后内容的目标物理列名称 assistedQueryColumn: user_id_assisted_query # 可选辅助查询列用于优化性能 ``` 上述 YAML 片段展示了如何定义一张名为 `t_order` 表里 `user_id` 字段作为被加密目标;其中 `cipherColumn` 是实际存储经过变换后的密文所在位置,而 `assistedQueryColumn` 则用来支持高效检索需求。 #### 二、设置加密器 紧接着要做的就是声明具体的加密策略——即选用何种方式进行编码转换工作。这一步骤同样是在相同级别的规则节点下完成,如下所示: ```yaml props: encryptors: aes_encryptor: # 自定义命名空间下的唯一标识符 type: AES # 加密类型, 支持AES/MD5等常见算法 props: aes.key.value: example_key_value_for_aes_algorithm # 对应于所选方案所需的参数列表之一 ``` 这里指定了采用高级加密标准 (Advanced Encryption Standard,AES) 来执行加解密过程,并提供了必要的密钥材料以便后续调用时使用。 #### 三、集成与测试 最后一步则是确保整个应用程序能够识别这些新设定,并正常运作起来。通常情况下只需重启服务端程序即可生效新的变更项。建议在此期间同步编写单元测试案例验证预期行为是否达成一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值