来源:《DM8 安全管理》第 8 章 加密引擎
| 序号 | 指令 | 一句话说明 |
|---|---|---|
| 1 | SELECT * FROM V$CIPHERS; |
查看 DM 支持的全部内置加密/散列算法,确认国密 SM 系列算法已注册。 |
| 2 | SELECT * FROM V$EXTERNAL_CIPHERS; |
查看第三方加密算法(OPENSSL_SM4/SM3、渔翁 FM_SM1/SM2/SM3/SM4/SM6 等)及其所在动态库、有效性(VALID=Y 才可用)。 |
| 3 | SELECT NAME FROM V$EXTERNAL_CIPHER_LIBS; |
查看已加载的第三方加密引擎名,供 dminit 的 EXTERNAL_CRYPTO_NAME / RANDOM_CRYPTO 参数引用。 |
| 4 | SELECT CYT_NAME FROM V$CIPHERS WHERE CYT_TYPE=4; |
列出散列算法(如 OPENSSL_SM3),供列加密 HASH WITH 子句选用。 |
来源:《DM8_dminit 使用手册》第 4 章、《DM8 安全管理》第 7.1.1 节;此类参数在建库时指定、建库后不可修改
| 序号 | 指令 | 一句话说明 |
|---|---|---|
| 1 | ./dminit PATH=/dm/data ENCRYPT_NAME=OPENSSL_SM4_CBC |
建库时指定全库加密算法为国密 SM4,所有数据页密文落盘,密钥由 DM 自动生成。 |
| 2 | ./dminit PATH=/dm/data RLOG_ENCRYPT_NAME=OPENSSL_SM4_CBC |
建库时指定联机日志/归档日志文件加密算法为国密 SM4(不指定则不加密)。 |
| 3 | ./dminit PATH=/dm/data PAGE_ENC_SLICE_SIZE=4096 |
设置数据页加密分片大小(可选 0/512/4096 字节),配合全库加密使用。 |
| 4 | ./dminit PATH=/dm/data EXTERNAL_CRYPTO_NAME=<加密引擎名> |
指定服务器根密钥(SVR_KEY)的加密引擎(外部加密机/加密卡/UKEY),缺省用磁盘文件 dm_service.prikey。 |
| 5 | ./dminit PATH=/dm/data RANDOM_CRYPTO=<加密引擎名> |
指定随机数算法所在加密引擎,未指定或引擎不存在时使用 OPENSSL 软件随机数。 |
| 6 | ./dminit PATH=/dm/data EXTERNAL_CIPHER_NAME=OPENSSL_SM4_CBC |
设置库默认加密算法,备份、建表等未显式指定算法时采用该算法。 |
| 7 | SELECT SF_GET_ENCRYPT_NAME(); |
查询当前库的全库加密算法名,未使用全库加密时返回 NULL。 |
| 8 | SELECT SF_GET_PARA_VALUE(2,'RLOG_ENC_ID'); |
查询日志文件加密算法的 ID。 |
来源:《DM8 安全管理》第 7 章 存储加密、《DM8_SQL 语言使用手册》建表/建用户语法
| 序号 | 指令 | 一句话说明 |
|---|---|---|
| 1 | CREATE TABLESPACE TS1 DATAFILE 'TS1.DBF' SIZE 128 ENCRYPT WITH OPENSSL_SM4_CFB_V1 BY "密码"; |
创建表空间时指定国密 SM4 透明加密(默认 PAGE_ENC_SLICE_SIZE=4096 时仅支持不膨胀的 CFB_V1/OFB_V1;CBC 等膨胀算法不可用于表空间加密)。 |
| 2 | CREATE TABLE T(C1 INT, C2 VARCHAR(50) ENCRYPT WITH OPENSSL_SM4_CBC); |
建表时对指定列做国密 SM4 透明加密,DML 过程中系统自动加解密。 |
| 3 | CREATE TABLE T(C1 INT, C2 VARCHAR(50) ENCRYPT WITH OPENSSL_SM4_CBC HASH WITH OPENSSL_SM3 SALT); |
列透明加密并附加 SM3 散列做完整性校验,数据被非法修改时可被识别。 |
| 4 | CREATE TABLE T(C1 INT ENCRYPT MANUAL); |
半透明加密列:以当前用户存储密钥加密,用户仅能看到自己插入的数据。 |
| 5 | CREATE TABLE T(C1 INT ENCRYPT WITH OPENSSL_SM4_CBC MANUAL USER (USER01,USER02)); |
按列半透明加密,仅指定可见用户能查到明文,其他用户查询结果为 NULL。 |
| 6 | CREATE USER U1 IDENTIFIED BY "密码" ENCRYPT BY "存储密钥"; |
创建用户时指定其存储加密密钥(用于半透明加密,缺省由系统自动生成)。 |
| 7 | SP_SET_PARA_VALUE(1,'AUTO_ENCRYPT',1); |
打开“手动输入列存储密钥”开关,使用 AUTO BY / BY <列存储密钥> 前必须先设置。 |
| 8 | SELECT CFALGORITHMSENCRYPT('明文', <算法ID>, '密钥'); |
非透明加密:应用自行调用加密函数加密数据,算法 ID 通过 V$CIPHERS 查询。 |
| 9 | SELECT CFALGORITHMSDECRYPT(<密文>, <算法ID>, '密钥'); |
非透明解密:以加密时相同的算法 ID 与密钥解密密文。 |
| 10 | CREATE OR REPLACE PROCEDURE proc WITH ENCRYPTION(a IN INT) AS BEGIN ... END; |
对存储过程/存储函数/触发器/包/类等对象定义加密(对象名后加 WITH ENCRYPTION)。 |
来源:《DM8 安全管理》第 6 章 通信加密;ENABLE_ENCRYPT 取值:0 不加密、1 双向认证+加密、2 仅认证、4 仅加密、5 单向认证+加密、6 商密 TLCP 认证加密。证书放置:服务器 $DM_HOME/bin/server_ssl(TLCP 用 server-enc.crt/server-enc.key/server-sign.crt/server-sign.key),客户端 $DM_HOME/bin/client_ssl/<用户名>
| 序号 | 指令 | 一句话说明 |
|---|---|---|
| 1 | SP_SET_PARA_VALUE(2,'ENABLE_ENCRYPT',6); |
开启商密 TLCP 认证加密(国密 SM2 签名/加密证书双向验证并加密通信),静态参数,重启生效。 |
| 2 | SP_SET_PARA_VALUE(2,'ENABLE_ENCRYPT',1); |
开启 SSL 双向认证+加密(通用 SSL 证书,密码套件由协议自动协商)。 |
| 3 | SP_SET_PARA_VALUE(2,'MIN_SSL_VERSION',0x0303); |
设置允许连接的最低 TLS 版本为 TLSv1.2(0x0304 为 TLSv1.3),静态参数,重启生效。 |
| 4 | SELECT * FROM V$PARAMETER WHERE NAME='ENABLE_ENCRYPT'; |
查询 ENABLE_ENCRYPT 参数的当前取值。 |
| 5 | SELECT para_name, para_value FROM V$DM_INI WHERE para_name='ENABLE_ENCRYPT'; |
确认 SSL/TLCP 通信加密是否已开启成功。 |
| 6 | disql SYSDBA/密码@localhost:5236#"{ssl_path=D:\dmdbms\bin\client_ssl\SYSDBA,ssl_pwd=证书密码}" |
客户端带 SSL/TLCP 证书目录(ssl_path)与证书密码(ssl_pwd)连接数据库。 |
| 7 | SELECT SESS_ID, USER_NAME, PORT_TYPE FROM V$SESSIONS; |
查看会话连接类型,PORT_TYPE=7 表示国密 GmSSL 连接。 |
| 8 | SP_SET_PARA_STRING_VALUE(2,'COMM_ENCRYPT_NAME','OPENSSL_SM4_CBC'); |
开启基于应用层的消息包加密(国密 SM4,密钥由 DH 算法协商),静态参数,重启生效。 |
| 9 | SELECT CYT_NAME FROM V$CIPHERS WHERE (CYT_TYPE=1 OR CYT_TYPE=2) AND (WORK_MODE!='ECB_NOPAD' AND WORK_MODE!='CBC_NOPAD'); |
列出可用于 COMM_ENCRYPT_NAME 应用层消息包加密的算法名(分组/流加密且非 NOPAD 模式)。 |
来源:《DM8 备份与还原》第 1 章;加密类型 WITH ENCRYPTION:0 不加密、1 简单加密(仅设口令,内容明文)、2 完全数据加密(密文存储),缺省 1
| 序号 | 指令 | 一句话说明 |
|---|---|---|
| 1 | BACKUP DATABASE BACKUPSET '/dm/backup/db1' IDENTIFIED BY "密码" WITH ENCRYPTION 2 ENCRYPT WITH OPENSSL_SM4_CBC; |
库全量备份并做国密 SM4 完全加密,备份集以密文存储(不指定 ENCRYPT WITH 时默认 AES256_CFB)。 |
| 2 | BACKUP DATABASE BACKUPSET '/dm/backup/db2' IDENTIFIED BY "密码" WITH ENCRYPTION 1; |
简单加密备份:仅为备份集设置口令,文件内容仍以明文存储。 |
| 3 | BACKUP TABLESPACE TS1 BACKUPSET '/dm/backup/ts1' IDENTIFIED BY "密码" ENCRYPT WITH OPENSSL_SM4_CBC; |
表空间备份加密(表备份、归档备份等语句写法类似)。 |
| 4 | (增量备份约束)增量备份的加密密码、加密类型与加密算法必须与基备份保持一致;基备份未加密则增量备份也不能加密。 |
增量备份加密一致性要求,不满足时报错。 |
来源:《DM8 安全管理》第 11 章;服务端用私钥解密、客户端用公钥加密
| 序号 | 指令 | 一句话说明 |
|---|---|---|
| 1 | dmkey PATH=D:\aa pubkey=test.pubkey |
生成登录加解密公钥文件(test.pubkey)与私钥文件(dm_login.prikey,固定文件名)。 |
| 2 | dmkey PRIKEY=D:\aa\dm_login.prikey |
查看私钥信息(版本号、Guid、生成时间),用于校验公钥/私钥是否匹配(Guid 相同即匹配)。 |
| 3 | ./dmkey HELP |
查看 dmkey 工具的版本信息与全部参数说明。 |
| 4 | 设置 INI 参数 FORCE_CERTIFICATE_ENCRYPTION=1(将私钥放入 SYSTEM_PATH 目录) |
非加密通信时强制对登录用户名密码做证书加密,服务器启动时用私钥解密。 |
| 5 | dm_svc.conf 中配置 LOGIN_CERTIFICATE=(公钥文件路径) |
客户端指定登录加密公钥文件位置,配置后即开启客户端证书加密用户名密码模式。 |
来源:《DM8 安全管理》第 8.3 节;需要厂商提供 UKEY 动态库并放置于 bin 及 external_crypto_libs 目录
| 序号 | 指令 | 一句话说明 |
|---|---|---|
| 1 | ./disql "SYSDBA/密码@LOCALHOST#{UKEY_NAME=加密引擎名,UKEY_PIN=PIN}" |
使用 UKEY 完成身份鉴别并连接数据库(连接串中指定引擎名与 UKEY PIN)。 |
| 2 | 设置 INI 参数 CLIENT_UKEY=1 |
客户端强制使用 UKEY 验证;为 0 时是否使用 UKEY 由客户端驱动决定。 |
来源:《DM8 安全管理》第 7 章
| 序号 | 指令 | 一句话说明 |
|---|---|---|
| 1 | SP_UPDATE_SVRKEY(); |
更新服务器主密钥 SVR_KEY(用于加密数据库主密钥)。 |
| 2 | SP_UPDATE_DBKEY(); |
更新数据库主密钥 DB_KEY(用于加密库内密钥)。 |
① OPENSSL 软件库(DM 自带封装,动态库位于 bin/dependencies,libcrypto/libssl 系列):
加密:OPENSSL_SM4_ECB、OPENSSL_SM4_CBC、OPENSSL_SM4_CFB、OPENSSL_SM4_OFB、OPENSSL_SM4_ECB_NOPAD、OPENSSL_SM4_CBC_NOPAD、OPENSSL_SM4_CFB_V1、OPENSSL_SM4_OFB_V1(分组加密,分组 16 字节、密钥 16 字节;CFB_V1/OFB_V1 为新版本,与老版本不兼容);
散列:OPENSSL_SM3(用于完整性校验)。
以上算法可用于通信加密、存储加密、备份加密等场景。
② 渔翁硬件加密卡(需配套加密卡及其动态库 libenc_dll.so / card_enc.dll,置于 bin/external_crypto_libs 目录):
加密:FM_SM1_ECB/CBC、FM_SM4_ECB/CBC、FM_SM6_ECB/CBC 及对应 NOPAD 变体;
散列:FM_SM3、FM_SM2;HMAC:FM_SM3_HMAC。
③ 商密 TLCP 协议:ENABLE_ENCRYPT=6,通信双方需加载 SM2 签名证书与加密证书(server-enc.crt/server-sign.crt 等)。
④ GmSSL:支持 GmSSL 证书(证书放 DM_HOME/bin/server_gmssl 目录,cacert.pem),UKEY 场景亦支持 gmssl 证书目录;会话连接类型(VSESSIONS.PORT_TYPE)为 7 时表示国密 GmSSL 连接。
文章
阅读量
获赞
