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

SQL Server 與 Oracle 資料庫安全性異同深度解析(二)

     編輯:關於SqlServer

前言

接續上篇「角色授權、細粒度權限、獨立授權」三大面向,本文聚焦使用者建立與連線權限、物件授權、系統授權三大實戰差異。

一、使用者建立後預設無連線權限(Oracle 特有)

-- Oracle
CREATE USER test IDENTIFIED BY test111;  -- 純數字密碼會被拒絕(密碼複雜度驗證)
-- 嘗試連線
CONNECT test/test111;
-- 錯誤:使用者缺乏 CREATE SESSION 權限

必須額外授權:

GRANT CREATE SESSION TO test;  -- 或 GRANT CONNECT TO test (舊版角色)

差異點:SQL Server 建立登入/使用者後預設即可連線(視預設資料庫與權限),Oracle 採「最小權限」原則,建立使用者 ≠ 可連線,須額外授 CREATE SESSION。這讓習慣 SQL Server 的 DBA 初次接觸 Oracle 時常踩坑。

二、物件授權:普通使用者也能「轉授」權限

場景

  • test 擁有 product 表 SELECT 權限。
  • test1 無任何權限。
  • 需求:test 將 product 的 SELECT 授予 test1(test 非 DBA)。

SQL Server:做不到

權限管理集中於 DBA,普通使用者無 GRANT OPTION 概念(僅透過角色間接實現)。

Oracle:支援 WITH GRANT OPTION

  1. DBA 授權並開啟轉授:
    GRANT SELECT ON product TO test WITH GRANT OPTION;
  2. test 登入轉授:
    GRANT SELECT ON product TO test1;

若 DBA 未加 WITH GRANT OPTION,test 執行轉授會報錯「權限不足」。

特性細節

  • 逐物件、逐操作授權:test 僅能轉授被明確賦予 WITH GRANT OPTION 的物件與操作(如僅 SELECT,不能轉授 UPDATE/DELETE)。
  • 適用對象廣:表、視圖、預存程序、序列等均支援。
  • 權限鏈可追溯:DBA_TAB_PRIVS 記錄 GRANTOR,審計清晰。

評價:打破權限管理集中化,提高大型系統設計彈性,但需嚴格管控防止權限蔓延。

三、系統授權:將管理權限同樣細分轉授

類似物件授權,但針對系統級權限(CREATE USER、DROP USER、ALTER SYSTEM 等)。同樣需 WITH ADMIN OPTION 並逐項授權,不支援批次授權。

總結對照表

特性SQL ServerOracle
建立使用者後預設連線是(視預設資料庫)否,需 GRANT CREATE SESSION
密碼複雜度預設檢查無有(拒絕純數字等弱密碼)
普通使用者轉授物件權限不支援支援 (WITH GRANT OPTION)
系統權限轉授透過固定伺服器/資料庫角色支援 (WITH ADMIN OPTION),逐項授權
權限粒度較粗(如用戶管理為單一權限)極細(建立/刪除用戶可分離)

Oracle 的安全設計哲學是「預設拒絕、顯式授權、細粒度轉授」,適合高合規、多租戶環境;SQL Server 偏向「角色集中管理、易用性優先」,適合中小型企業快速部署。選型時應依組織治理模式決定。

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