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

Oracle 資料庫安全基石(上):架構認知、備份恢復、賬號治理與密碼文件全生命周期

     編輯:Oracle 資料庫基礎

引言:安全始於理解架構

Oracle 9i 發布時宣稱「絕對安全」,旋即被曝 9iAS 緩衝區溢位。資料庫安全無銀彈,唯有建立在體系架構深度理解之上的分層防護才能經受考驗。本文系統梳理核心架構、三大備份模式、賬號治理規範與密碼文件全生命周期管理。

一、Oracle RDBMS 核心架構組件

  • 實例:後台進程 (PMON/SMON/DBWn/LGWR/CKPT/ARCn/RECO 等) + SGA (共享池/緩存/大池/Java池/流池/結果緩存)
  • SYSTEM 表空間:數據字典、系統回滾段、核心元數據,嚴禁業務對象入駐
  • 業務表空間:按應用域劃分 (APP_DATA、APP_INDEX、APP_LOB、UNDO_TBS、TEMP_TBS)
  • 聯機重做日志組:至少 2 組,每組多成員,循環寫入,LGWR 同步持久化
  • 歸檔日志:ARCHIVELOG 模式下 ARCn 生成,支撐介質恢復/Data Guard/邏輯備份
  • 控制文件/參數文件/密碼文件:元數據與啟動配置,多路鏡像、異地備份

二、重做日誌機制與運行模式

三、三大標準備份技術深度對比

1. 邏輯備份:Export/Import (Data Pump expdp/impdp)

  • 模式:表級、用戶級、全庫級
  • 增量策略:完全 (Complete) → 增量 → 累計,構建循環窗口
  • 恢復順序:完全導入 → 最近累計導入 → 最近增量導入
  • 優勢:跨版本/平台遷移、單對象恢復、壓縮/並行/加密 (Data Pump)
  • 劣勢:大數據量耗時長、不捕獲未提交事務、需足夠臨時表空間

2. 物理冷備份

  • 前提:SHUTDOWN NORMAL/IMMEDIATE/TRANSACTIONAL
  • 拷貝:所有數據文件、控制文件、聯機日志、SPFILE/PFILE
  • 優勢:極簡、極快、極安全、無分裂塊風險
  • 劣勢:需停機、僅能恢復至備份點、無法單表恢復、大庫耗時長

3. 物理熱備份 (User-Managed)

  • 前提:ARCHIVELOG 模式
  • 核心流程:
    1. ALTER TABLESPACE ts BEGIN BACKUP
    2. OS 拷貝該表空間所有數據文件
    3. ALTER TABLESPACE ts END BACKUP
    4. 同步備份歸檔日志 (ALTER SYSTEM ARCHIVE LOG CURRENT)
    5. 備份控制文件 ALTER DATABASE BACKUP CONTROLFILE TO '...'
  • 風險:分裂塊 (需 RMAN 規避)、操作序列錯誤導致不可恢復、極度依賴人工規範
  • 現代建議:全面遷移至 RMAN,利用塊級增量、自動標籤、目錄管理、腳本化

四、賬號治理規範:從默認弱點到最小權限體系

高風險默認賬號清單

模式歸檔能力恢復粒度業務影響
NOARCHIVELOG不支持僅冷備份時間點需停機備份,不可接受數據丟失的系統禁用
ARCHIVELOG支持任意時間點 (PITR)7×24 核心業務標配,需規劃歸檔目標、備份策略、空間管理
賬號默認口令風險權限處置動作
SYSCHANGE_ON_INSTALLSYSDBA 所有權限強密碼、禁用遠程、審計所有操作
SYSTEMMANAGERDBA 角色、管理權限強密碼、僅作備用管理賬號
DBSNMPDBSNMPUNLIMITED TABLESPACE、CREATE PUBLIC SYNONYM鎖定/修改密碼、收回系統權限、限制配額
SCOTTTIGERUNLIMITED TABLESPACE、豐富對象權限示例環境保留,生產環境刪除
OUTLNOUTLN計劃穩定性權限鎖定、收回非必要權限

sql*plus 開發賬號規範三維模型

  1. 存儲隔離:每應用獨立表空間 (物理文件分盤區、配額限制)、索引與數據分離、臨時表空間獨立
  2. 認證強化:用戶名≠密碼、密碼 ≥12 位複雜度、定期輪換、Profile 綁定驗證函數
  3. 權限最小化:僅授予業務必需對象權限 (SELECT/INSERT/UPDATE/DELETE)、角色封裝、拒絕 DBA/RESOURCE 等高權角色

特殊需求賬號模板

-- 只讀報表賬號
CREATE USER rpt_user IDENTIFIED BY "Str0ngP@ss#2024"
  DEFAULT TABLESPACE rpt_ts QUOTA 5G ON rpt_ts
  TEMPORARY TABLESPACE temp_ts
  PROFILE secure_profile;
GRANT CREATE SESSION TO rpt_user;
GRANT SELECT ON schema.fact_sales TO rpt_user;
GRANT SELECT ON schema.dim_customer TO rpt_user;

五、密碼文件全生命周期管理

創建與初始化

orapwd file=$ORACLE_HOME/dbs/orapwORCL password=SysStr0ngP@ss entries=20 force=y
  • force=y 覆蓋現有文件 (11.2+)
  • entries 預留特權用戶擴展空間

參數控制模式

ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;
-- 需重啟生效

特權用戶授權與同步 (自動維護)

-- 授予 SYSDBA 自動寫入密碼文件 (EXCLUSIVE 模式下)
GRANT SYSDBA TO dba_user;
-- 收回自動移除
REVOKE SYSDBA FROM dba_user;

查看與審計

SELECT * FROM V$PWFILE_USERS;
-- USERNAME  SYSDB SYSOP SYSAS SYSBK SYSDG SYSKM SYSRAC
-- SYS       TRUE  TRUE  FALSE FALSE FALSE FALSE FALSE
-- DBA_USER  TRUE  FALSE FALSE FALSE FALSE FALSE FALSE

擴容與遷移

  1. 查詢 V$PWFILE_USERS 導出現有特權用戶
  2. 關閉實例,刪除舊文件
  3. 執行 orapwd 創建新文件 (更大 entries)
  4. 啟動實例,重新授予特權 (自動同步)

RAC/Data Guard 同步策略

  • RAC:共享存儲掛載密碼文件,或各節點手動同步 (建議共享)
  • Data Guard:主庫密碼文件變更後,需手動複製至備庫 (12c+ 支持自動同步 PASSWORD_FILE_META)

六、應用級密碼管理創新:自動化輪換與加密存儲

痛點:人工修改密碼頻繁、易錯、應用配置同步延遲。解決方案:

  1. 建立密碼管理表 (加密存儲) + 存儲函數 (自定義加密算法)
  2. 應用啟動觸發器動態解密獲取當前密碼建立連接
  3. DBA 定期更新密碼表,應用無感知輪換
  4. 配合 PRODUCT_USER_PROFILE 限制 SQL*Plus 直連風險
-- 簡化加密函數示例
CREATE OR REPLACE FUNCTION encrypt_pwd(p_plain VARCHAR2) RETURN VARCHAR2 DETERMINISTIC IS
BEGIN RETURN RAWTOHEX(DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW(p_plain,'AL32UTF8'), DBMS_CRYPTO.HASH_SH256)); END;

結語

安全基石在於:架構清晰、備份可靠、賬號純淨、密碼受控。將上述規範固化為自動化腳本、納入合規基線、持續巡檢演練,方能構建經得起時間與攻擊考驗的 Oracle 安全體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved