首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 資料庫安全策略分析:OS 群組、帳號鎖定、密碼複雜度與預設帳號加固

     編輯:Oracle 資料庫基礎

作業系統層面:群組與權限最小化

  • DBA 群組:安裝前建立,僅包含 root 與 Oracle 軟體擁有者,目錄權限 710 (rwx--x---)
  • 操作群組:一般用戶加入,僅執行 SQL*Plus、Forms 等公開程式,權限 710
  • 其他程式:不影響安全性的工具設 711 (rwx--x--x)
Unix/Linux 下 /etc/group 配置群組成員,Oracle 安裝程式自動將 SYSDBA 權限映射至 DBA 群組。

資料庫層面:預設帳號立即加固

-- 修改 SYS/SYSTEM 密碼(預設 CHANGE_ON_INSTALL/MANAGER)
ALTER USER SYS IDENTIFIED BY "StrongP@ssw0rd1";
ALTER USER SYSTEM IDENTIFIED BY "An0therStr0ngP@ss";

-- 鎖定/過期預設不需帳號
ALTER USER OUTLN PASSWORD EXPIRE ACCOUNT LOCK;
ALTER USER DBSNMP PASSWORD EXPIRE ACCOUNT LOCK;
-- 11g+ 可用 SEC_CASE_SENSITIVE_LOGON=TRUE 強制大小寫敏感

密碼策略:Profile 實作複雜度與生命週期

-- 建立驗證函數(範例:長度≥8、含大小寫數字特殊字元)
CREATE FUNCTION VERIFY_FN(
  USERID VARCHAR2, PASSWORD VARCHAR2, OLD_PASSWORD VARCHAR2
) RETURN BOOLEAN IS
BEGIN
  IF LENGTH(PASSWORD) < 8 THEN RETURN FALSE; END IF;
  IF NOT REGEXP_LIKE(PASSWORD, '[A-Z]') THEN RETURN FALSE; END IF;
  IF NOT REGEXP_LIKE(PASSWORD, '[a-z]') THEN RETURN FALSE; END IF;
  IF NOT REGEXP_LIKE(PASSWORD, '[0-9]') THEN RETURN FALSE; END IF;
  IF NOT REGEXP_LIKE(PASSWORD, '[^A-Za-z0-9]') THEN RETURN FALSE; END IF;
  RETURN TRUE;
END;
/

-- 建立 Profile
CREATE PROFILE SECURE_PROF LIMIT
  FAILED_LOGIN_ATTEMPTS 5
  PASSWORD_LOCK_TIME 1/24      -- 鎖定 1 小時
  PASSWORD_LIFE_TIME 90        -- 90 天換一次
  PASSWORD_GRACE_TIME 7        -- 寬限期 7 天
  PASSWORD_REUSE_TIME 365      -- 1 年不可重複
  PASSWORD_REUSE_MAX 10
  PASSWORD_VERIFY_FUNCTION VERIFY_FN;

-- 套用至用戶
ALTER USER APP_USER PROFILE SECURE_PROF;

資源限制 Profile

CREATE PROFILE DEV_PROF LIMIT
  SESSIONS_PER_USER 2
  CPU_PER_SESSION 10000        -- 百分之一秒
  IDLE_TIME 30                 -- 分鐘
  CONNECT_TIME 480;            -- 分鐘

-- 啟用資源限制
ALTER SYSTEM SET RESOURCE_LIMIT=TRUE SCOPE=BOTH;

稽核與監控

-- 保護稽核軌跡
AUDIT DELETE ON SYS.AUD$ BY ACCESS;

-- 關鍵操作稽核
AUDIT CREATE TABLE, DROP USER, ALTER SYSTEM BY ACCESS;
AUDIT SELECT ON SCOTT.EMP BY ACCESS WHENEVER SUCCESSFUL;

-- 查看稽核記錄
SELECT * FROM DBA_AUDIT_TRAIL WHERE TIMESTAMP > SYSDATE-1;

最小權限原則檢查清單

  • 移除 PUBLIC 不必要的系統/物件權限
  • 角色而非直接授權給用戶
  • 定期審查 DBA_SYS_PRIVS, DBA_TAB_PRIVS, DBA_ROLE_PRIVS
  • 啟用 O7_DICTIONARY_ACCESSIBILITY=FALSE (預設) 防止非 SYS 存取字典基表
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved