達夢資料庫等保評測-資料庫安全問題整改項
一、身份鑑別類:
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 項策略。當
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;
3.使用者身份驗證
達夢支援資料庫身份驗證模式和外部身份驗證模式。資料庫身份驗證模式需要利用資料庫口令,即在建立或修改使用者時指定使用者口令,使用者在登入時輸入對應口令進行身份驗證;外部身份驗證模式支援基於作業系統
二、訪問控制
1.許可權分離
DM 資料庫採用“三權分立”或“四權分立”的安全機制,將系統中所有的許可權按照類型進行劃分,為每個管理員分配相應的許可權,管理員之間的許可權相互制約又相互協助,從而使整個系統具有較高的安全性和較強的靈活性。可在建立 DM 資料庫時通過建庫引數 PRIV_FLAG 設定使用“三權分立”或“四權分立”安全機制,此引數僅在 DM 安全版本下提供,即僅 DM 安全版本提供“四權分立”安全機制。預設採用“三權分立”安全機制。使用“三權分立”安全機制時,將系統管理員分為資料庫管理員、資料庫安全員和資料
2.最小許可權
新建使用者,預設只擁有public角色,不可以建立資料庫物件,需要通過其它使用者對其授權才能對有許可權的資料庫物件進行資料操縱。
3.資料訪問控制策略
資料庫許可權一般由 SYSDBA、SYSAUDITOR 和 SYSSSO 指定,也可以由具有特權
的其他使用者授予。物件許可權一般由資料庫物件的所有者授予使用者,也可由 SYSDBA 使用者指
定,或者由具有該物件許可權的其他使用者授權。
4.訪問控制的粒度
資料庫訪問控制的粒度主體為使用者(模式)級,客體為資料庫表級。
5.強制訪問控制
可以實現強制訪問控制,參考《DM8安全管理》4.8章例子。
三、安全審計
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);
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";
還可以通過防火牆開通資料庫埠訪問許可權,限制客戶端登陸資料庫。
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');
通過sql查詢當前的SSL配置:
select * from v$dm_ini where para_name ='ENABLE_ENCRYPT';
修改引數值為1(SSL加密,重啟資料庫生效)
sp_set_para_value(2,'ENABLE_ENCRYPT',1);
當選擇 SSL 加密時,需要在 DM 資料庫伺服器所在目錄下的 server_ssl 子目錄中存放 CA 的證書、伺服器的證書和伺服器的金鑰,同時在客戶端所在目錄下的 client_ssl子目錄中存放 CA 的證書、客戶端的證書和客戶端的金鑰,這樣伺服器和客戶端的通訊即是 建立在加密的 SSL 連線之上的。此時如果沒有配置好 SSL 環境,則通訊仍舊不加密。
當選擇 SSL 認證時,不進行通訊加密,只是檢查客戶端和伺服器的證書是否匹配。此時如果伺服器 SSL 環境沒有配置則伺服器無法正常啟動,如果客戶端 SSL 環境沒有配置則無法連線伺服器。
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);
六、資料備份恢復
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/[email protected]:5236 file=test.dmp tables=test
匯入資料:
dimp sysdba/[email protected]: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 在系統生成、擴充套件及刪除檔案時,對檔案內容也進行了清零。