一、身份鑒別類:
1. 密碼策略:
查詢當前密碼策略:
select * from v$dm_ini where para_name ='PWD_POLICY';
修改策略(如修改為15):
sp_set_para_value(2,'PWD_POLICY',15);
設置系統默認口令策略。0: 無策略;1: 禁 止與用戶名相同;2: 口令長度不小於 9;4: 至少包含一個大寫字母(A-Z);8 :至少包含 一個數字(0-9);16:至少包含一個標點符 號(英文輸入法狀態下,除―和空格外的所有符號;若為其他數字,則表示配置值的和,如 3 =1+2,表示同時啟用第 1 項和第 2 項策略。當 COMPATIBLE_MODE=1 時,PWD_POLICY 的實際值均為 0
2. 修改用戶的密碼有效期限
修改用戶CCC的會話空閑時間為10分鍾,嘗試登陸次數為5次,密碼有效期為100天,連續登陸失敗后鎖定10分鍾,會話持續時間10分鍾。
alter user "CCC" limit connect_idle_time 10, failed_login_attemps 5, password_life_time 100, password_lock_time 10, connect_time 10;
--查詢賬號資源限制
select d.username,
conn_idle_time as 會話空閑期分鍾,
failed_num as 登陸失敗次數 ,
life_time as 密碼有效期天,
lock_time as 賬號鎖定期分鍾,
allow_addr as 設定的ip登陸
from sysusers s ,
dba_users d
where s.id=d.user_id;
3.用戶身份驗證
達夢支持數據庫身份驗證模式和外部身份驗證模式。數據庫身份驗證模式需要利用數據庫口令,即在創建或修改用戶時指定用戶口令,用戶在登錄時輸入對應口令進行身份驗證;外部身份驗證模式支持基於操作系統(OS)的身份驗證、LDAP 身份驗證和 KERBEROS 身份驗證。具體設置方法參考《DM8安全管理》2.3章。
二、訪問控制
1.權限分離
DM 數據庫采用“三權分立”或“四權分立”的安全機制,將系統中所有的權限按照類型進行划分,為每個管理員分配相應的權限,管理員之間的權限相互制約又相互協助,從而使整個系統具有較高的安全性和較強的靈活性。可在創建 DM 數據庫時通過建庫參數 PRIV_FLAG 設置使用“三權分立”或“四權分立”安全機制,此參數僅在 DM 安全版本下提供,即僅 DM 安全版本提供“四權分立”安全機制。缺省采用“三權分立”安全機制。使用“三權分立”安全機制時,將系統管理員分為數據庫管理員、數據庫安全員和數據庫審計員三種類型。在安裝過程中,DM 數據庫會預設數據庫管理員賬號SYSDBA、數據庫安全員賬號 SYSSSO 和數據庫審計員賬號 SYSAUDITOR,其缺省口令都與用戶名一致。使用“四權分立”的安全機制時,將系統管理員分數據庫管理員、數據庫對象操作員、數據庫安全員和數據庫審計員四種類型,在“三權分立”的基礎上,新增數據庫對象操作員賬戶 SYSDBO,其缺省口令為 SYSDBO。
2.最小權限
新建用戶,默認只擁有public角色,不可以創建數據庫對象,需要通過其它用戶對其授權才能對有權限的數據庫對象進行數據操縱。
select * from dba_role_privs;
3.數據訪問控制策略
數據庫權限一般由 SYSDBA、SYSAUDITOR 和 SYSSSO 指定,也可以由具有特權的其他用戶授予。對象權限一般由數據庫對象的所有者授予用戶,也可由 SYSDBA 用戶指定,或者由具有該對象權限的其他用戶授權。
查看帳號角色
select * from dba_role_privs或dba_tab_privs;
4.訪問控制的粒度
數據庫訪問控制的粒度主體為用戶(模式)級,客體為數據庫表級。
5.強制訪問控制
可以實現強制訪問控制,參考《DM8安全管理》4.8章例子。
對用戶的屬性進行控制,包括密碼策略、資源限制等
select SESS_PER_USER, FAILED_NUM, PWD_POLICY from sysusers;
三、安全審計
1.開啟審計
Dm7開啟:SYSDBA用戶執行
sp_set_para_value(1,'ENABLE_AUDIT',1)
Dm8開啟:SYSAUDITOR用戶執行
SP_SET_ENABLE_AUDIT(1);
0:關閉;1:打開普通審計;2:打開普通審計和實時審計
查詢當前的審計狀態sql:
SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';
2.審計內容
打開全部語句審計
SP_AUDIT_STMT('ALL', 'NULL', 'ALL');
關閉全部審計
SP_NOAUDIT_STMT('ALL', 'NULL', 'ALL');
登錄登出審計
SP_AUDIT_STMT('CONNECT', 'NULL', 'ALL');
取消登錄登出審計
SP_NOAUDIT_STMT('CONNECT', 'NULL', 'ALL');
打開某模式的表審計
SP_AUDIT_STMT('SELECT TABLE', 'DMHR', 'ALL');
取消某模式的表審計
SP_NOAUDIT_STMT('SELECT TABLE', 'DMHR', 'ALL');
查看審計記錄
select * from V$AUDITRECORDS;
3.審計日志文件管理
在極限情況 下,審計記錄可能會因為磁盤空間不足而無法寫入審計文件,最終導致系統無法正常運行。
審計的兩個dm.ini參數:
AUDIT_FILE_FULL_MODE -靜態,默認1,審計文件滿后的處理方式,1:刪除文件;2:不刪除文件,也不添加審計記錄
AUDIT_MAX_FILE_SIZE -動態,默認100M,審計文件的最大大小,以兆為單位。有效值范圍(1~4096M)
定期備份日志文件后可以刪除指定時間以前的日志:
SP_DROP_AUDIT_FILE('2019-12-6 16:30:00',0);
--修改審計日志大小 sysdba用戶執行
4.審計保護
達夢是單進程多線程模式,中斷審計線程會導致數據庫進程直接關閉。
四、入侵防范
1.限制客戶端登陸
可以通過sql設置用戶登陸的ip地址,非設定的ip登陸時會報錯提示無效的ip。
alter user "DMHR" allow_ip "127.0.0.1","223.254.7.206","223.254.7.*";
指定時間段內允許登陸。
alter user "DMHR" allow_datetime "2019-01-01" "00:00:00" to "2019-12-31" "23:59:59","MON" "09:00:00" to "FRI" "17:00:00";
還可以通過防火牆開通數據庫端口訪問權限,限制客戶端登陸數據庫。
查詢用戶是否設置IP白名單
select du.username,allow_addr from dba_users du,sysusers su where du.user_id=su.id;
2.漏洞修復
達夢會發布新版本來修復已知漏洞。
五、數據完整性和數據保密性
1.通信加密
ENABLE_ENCRYPT 取值 0、1 和 2 分別代表不加密、SSL 加密、SSL 認證,默認值為 1。COMM_ENCRYPT_NAME 參數用來指定消息通信的加密算法名,如果為空則不進行通信加密;如果給的加密算法名錯誤,則使用加密算法 DES_CFB。 DM 支持的加密算法名可以通過查詢動態視圖 V$CIPHERS 獲取。
SP_SET_PARA_STRING_VALUE(2,'COMM_ENCRYPT_NAME','DES_CFB');
參考鏈接
https://eco.dameng.com/community/article/513402fe500dd56791f5c11b4f446b93
2.存儲加密
全庫加密:
只有在初始化建庫時指定ENCRYPT_NAME參數,才能全庫加密。
例如:初始化數據庫時指定全庫加密方式為AES256_CBC
./dminit path=/dmdata/dmdb encrypt_name=AES256_CBC
表空間加密:
如果指定了全庫加密則,不能再指定表空間加密。
創建test表空間指定加密方式為AES256_ECB:
CREATE TABLESPACE test datafile 'test.dbf' size 50 ENCRYPT WITH AES256_ECB;
表中指定列加密:
如下對表的C2列加密:
CREATE TABLE TEST_ENCRYPT1(C1 INT, C2 INT ENCRYPT);
CREATE TABLE TEST_ENCRYPT2(C1 INT, C2 INT ENCRYPT WITH DES_ECB);
CREATE TABLE TEST_ENCRYPT5(C1 INT, C2 INT ENCRYPT WITH DES_ECB HASH WITH MD5 SALT);
查詢全庫加密信息
select CYT_ID,CYT_NAME from V$ciphers where CYT_ID in(SELECT PARA_VALUE FROM V$DM_INI a WHERE a.PARA_NAME='DB_BLOCK_ENC_ID')
六、數據備份恢復
1.本地備份恢復
物理備份:(聯機備份需要開啟歸檔)參考《DM8備份與還原.pdf》
backup database full backupset 'd:\bak_full_01';
還原:
dmrman工具中:
restore database 'c:\data\DAMNEG\dm.ini' from backupset 'd:\bak_full_01';
recover database 'c:\data\DAMNEG\dm.ini' from backupset 'd:\bak_full_01';
邏輯備份:參考《DM8_dexp和dimp使用手冊.pdf》
導出數據:
dexp sysdba/123456789@127.0.0.1:5236 file=test.dmp tables=test
導入數據:
dimp sysdba/123456789@127.0.0.1:5236 file=test.dmp full=y
2.異地實時備份方式
達夢數據守護(實時主備,類似oracle dg)可以實現異地實時同步。
七、剩余信息保護
達夢提供了客體重用安全功能,來保證鑒別信息和敏感數據所在的存儲空間被釋放或重新分配前得到完全清除。
DM 提供了 INI 參數 ENABLE_OBJ_REUSE 用來控制是否啟用客體重用功能,將該參數置為 1 表示啟用客體重用,0 表示不啟用,默認為 0。
查詢:
select * from v$dm_ini where para_name ='ENABLE_OBJ_REUSE';
修改:(重啟數據庫生效)
sp_set_para_value(2,'ENABLE_OBJ_REUSE',1);
- 內存重用:
DM 從系統分配內存及釋放內存時均對內存內容進行清零,以保證不利
用內存中前一進程所殘留內容,且不泄漏 DM 的內容給其他進程。
- 文件重用:
DM 在系統生成、擴展及刪除文件時,對文件內容也進行了清零。