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

Oracle 資料庫安全性管理核心措施與角色密碼保護實作

     編輯:Oracle 資料庫基礎

資料安全性核心目標

防止非法存取、避免資料遺失/洩露/破壞。Oracle 提供多層防護機制:

  • 使用者鑑別:帳號/密碼驗證,阻擋非授權登入。
  • 系統權限控管:授予 CONNECT、RESOURCE 等角色,限制操作範圍。
  • 物件權限控管:針對表、表空間、程序等授予 SELECT、UPDATE 等細粒度權限。
  • 稽核機制:追蹤資料存取與系統資源使用情況。
  • 視圖限制:透過 View 隱藏基表敏感欄位/列。

應用系統常見安全隱憂

  1. 假使用者模式:應用系統使用單一資料庫帳號連線,真實使用者帳密藏於程式碼或設定檔。駭客分析程式碼即可取得資料庫帳密,開發人員更可直接竊取。
  2. 真實使用者直接授權:將權限/角色直接給使用者,導致使用者可繞過應用系統用 SQL*Plus 直接操作資料庫,產生不符合業務邏輯的資料。

最佳實踐:密碼保護角色

利用 密碼保護角色,將角色名稱與密碼內嵌於應用程式中:

  • 使用者以自有帳號登入,預設僅擁有 CONNECT 權限(無操作權限)。
  • 應用程式啟動時執行 SET ROLE role_name IDENTIFIED BY password 激活角色,取得業務權限。
  • 應用程式外,角色未激活,使用者無法操作任何物件。
  • 開發人員不知使用者帳密,無法登入;即使推算出角色帳密,無使用者帳號也無法登入資料庫。

實作範例:薪資表權限控管

情境:使用者 xiayan 需查詢/更新 account.paytable,但不直接授權。

SQL 腳本

-- 1. 建立角色與密碼
CREATE ROLE checkerrole IDENTIFIED BY xm361001;
CREATE ROLE defaultrole IDENTIFIED BY defaultrole;

-- 2. 授予角色物件權限
GRANT SELECT, UPDATE ON account.paytable TO checkerrole;
GRANT CONNECT TO defaultrole;

-- 3. 建立使用者
CREATE USER xiayan IDENTIFIED BY xiayan;

-- 4. 授予角色給使用者
GRANT checkerrole TO xiayan;
GRANT defaultrole TO xiayan;

-- 5. 設定預設角色(登入即生效)
ALTER USER xiayan DEFAULT ROLE defaultrole;

-- 6. 登入流程
CONNECT xiayan/xiayan@Oracle;  -- 僅擁有 CONNECT 權限

-- 7. 應用程式激活業務角色
SET ROLE checkerrole IDENTIFIED BY xm361001;  -- 獲得 paytable SELECT/UPDATE 權限

進階建議

  • 角色密碼由應用管理人員定期輪換,避免硬編碼洩露。
  • 搭配 PROXY AUTHENTICATION(代理認證)進一步強化中介層安全性。
  • 啟用細粒度稽核(FGA)監控敏感表存取。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved