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

Oracle 用戶授權陷阱:CONNECT/RESOURCE 角色隱藏風險與最小權限實踐

     編輯:Oracle 資料庫基礎

前言

授權看似簡單,濫授卻隱藏重大風險。Oracle 9i 及之前版本的預定義角色 CONNECT、RESOURCE 存在設計缺陷,若不加審視直接授予,極易導致安全漏洞或資源耗盡。本文剖析風險根源並給出防範對策。

一、CONNECT 角色:不只是「連線」

9i 中 CONTAIN 角色包含以下系統權限:

  • ALTER SESSION
  • CREATE CLUSTER
  • CREATE DATABASE LINK
  • CREATE SEQUENCE
  • CREATE SESSION
  • CREATE SYNONYM
  • CREATE TABLE
  • CREATE VIEW

風險案例:ALTER SESSION 的破壞力

  1. 觸發 Bug 癱瘓資料庫:惡意用戶執行 ALTER SESSION SET cursor_sharing=FORCE,再送出已知會觸發 cursor_sharing=FORCE 下 Bug 的查詢,導致實例崩潰。
  2. 佔用過量記憶體拖垮效能:執行 ALTER SESSION SET hash_area_size=超大值,配合特定查詢佔滿 PGA,嚴重影響整體效能。

好消息:Oracle 10g 已修正,CONNECT 僅保留 CREATE SESSION。

二、RESOURCE 角色:隱藏的 UNLIMITED TABLESPACE

RESOURCE 角色除 CREATE TABLE、CREATE PROCEDURE 等開發權限外,隱含 UNLIMITED TABLESPACE 系統權限(10g 為相容性保留)。

風險案例:撐爆 SYSTEM 表空間

惡意用戶在 SYSTEM 表空間建立大表,快速耗盡系統表空間導致資料庫掛點。此權限無法透過 DBA_SYS_PRIVS 直接查見,極具隱蔽性。

三、最小權限原則實踐建議

  1. 拒絕預定義角色:生產環境勿直接授予 CONNECT、RESOURCE、DBA。
  2. 自訂精準角色:依業務角色建立角色,僅授予必要系統/物件權限。
    範例:GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE TO app_dev_role;
  3. 配額替代 UNLIMITED:使用 ALTER USER ... QUOTA 500M ON users 精確控制空間,拒絕 UNLIMITED TABLESPACE。
  4. 定期審計:查詢 DBA_SYS_PRIVS、DBA_TAB_PRIVS、DBA_ROLE_PRIVS 核對實際授權。

結語

「授權謹慎再謹慎」不是口號,而是防範內部威脅與操作失誤的鋼鐵法則。拆解預定義角色、落實最小權限,才能在便利與安全間取得平衡。

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