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

Oracle 用戶權限管理全攻略:從建立用戶到 SYSDBA 認證機制深度解析

     編輯:Oracle 資料庫基礎

前言

Oracle 作為多使用者系統,透過完善的權限體系保障資料安全。本文系統整理使用者/角色建立、系統/物件權限授予回收、預定義角色、以及最高權限 SYSDBA/SYSOPER 的兩種認證模式配置細節。

一、三層安全策略

  • 系統層級:授予 CREATE TABLESPACE、CREATE USER、ALTER USER、DROP USER 等 80+ 系統權限。
  • 物件層級:針對特定表/視圖/序列授予 SELECT、INSERT、UPDATE、DELETE、EXECUTE、REFERENCES、INDEX 等操作權限。
  • 使用者層級:密碼驗證 + 角色機制。角色將相關權限打包,簡化授權管理。

二、使用者生命週期管理

建立使用者

CREATE USER jxzy IDENTIFIED BY jxzy_passWord
DEFAULT TABLESPACE system
QUOTA 5M ON system;

修改使用者(密碼/表空間/配額/設定檔)

ALTER USER jxzy IDENTIFIED BY jxzy_pw
QUOTA 10M ON system;

刪除使用者

DROP USER jxzy CASCADE;  -- 連同物件一併刪除

三、系統權限管理

-- 授予含遞移授權選項
GRANT CREATE USER, ALTER USER, DROP USER TO jxzy_new WITH ADMIN OPTION;
-- 回收(無級聯回收)
REVOKE CREATE USER, ALTER USER, DROP USER FROM jxzy_new;
-- 查詢已授予系統權限
SELECT * FROM sys.dba_sys_privs;

四、物件權限管理

-- 細粒度授予(欄位級)
GRANT SELECT, INSERT(office_num, office_name), UPDATE(desc) ON Office_organization
TO new_administrator WITH GRANT OPTION;  -- 級聯授權

-- 全權限授予
GRANT ALL ON Office_organization TO new_administrator;

-- 回收(具級聯效果)
REVOKE UPDATE ON Office_organization FROM new_administrator;
REVOKE ALL ON Office_organization FROM new_administrator;

-- 查詢物件權限
SELECT * FROM sys.dba_tab_privs;

五、角色管理

預定義角色

  • CONNECT:CREATE SESSION、CREATE TABLE、CREATE VIEW 等基本開發權限(10g 後僅保留 CREATE SESSION)。
  • RESOURCE:CREATE PROCEDURE、CREATE TRIGGER、CREATE TABLE 等,隱含 UNLIMITED TABLESPACE(潛在風險)。
  • DBA:所有系統權限。
  • EXP_FULL_DATABASE/IMP_FULL_DATABASE:匯出/匯入權限。

自訂角色範例

CREATE ROLE ICDYW NOT IDENTIFIED;
GRANT DBA, EXP_FULL_DATABASE, IMP_FULL_DATABASE TO ICDYW;
GRANT ICDYW TO ICDMAIN WITH ADMIN OPTION;

六、SYSDBA/SYSOPER 最高權限認證機制

僅 SYSDBA 可執行 STARTUP、SHUTDOWN、RECOVER、ARCHIVELOG 等關鍵操作,連 DBA 角色也無法執行。認證方式有二:

1. 作業系統認證

  • Windows:建立 ORA_<SID>_DBA 或 ORA_DBA 群組,將 OS 用戶加入。sqlnet.ora 設 SQLNET.AUTHENTICATION_SERVICES=(NTS),init.ora 設 REMOTE_LOGIN_PASSWORDFILE=NONE。登入:CONNECT / AS SYSDBA。
  • Unix/Linux:建立 dba 群組,Oracle 軟體擁有者加入。init.ora 設 REMOTE_LOGIN_PASSWORDFILE=NONE。登入同 CONNECT / AS SYSDBA。

2. 密碼檔認證

  • 建立密碼檔:orapwd file=... password=... entries=...。
  • init.ora 設 REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE(單實例專用,可加入多超級用戶)或 SHARED(多實例共用,僅限 SYS/INTERNAL)。
  • sqlnet.ora 設 SQLNET.AUTHENTICATION_SERVICES=(NONE)。
  • 登入:CONNECT SYS/password AS SYSDBA。

七、關鍵注意事項

  1. Win2000 上安裝 8.1.6 常發生憑證檢索失敗,改 SQLNET.AUTHENTICATION_SERVICES=NONE 強制密碼檔模式可解。
  2. 安裝完成後立即修改預設密碼:internal/oracle、sys/change_on_install、system/manager。
  3. 密碼檔模式下可動態新增超級用戶:GRANT SYSDBA TO SCOTT,登入時需加 AS SYSDBA。
  4. 查詢現有超級用戶:SELECT * FROM v$pwfile_users。
  5. 擴充 ENTRIES 需重建密碼檔(關庫、刪檔、重建、開庫、重新授權)。
  6. INTERNAL 密碼遺失:ALTER USER SYS IDENTIFIED BY 新密碼 或重建密碼檔。

結語

權限管理遵循「最小權限原則」,善用角色簡化授權,嚴守 SYSDBA 實體與邏輯雙重防線,是資料庫安全的基石。

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