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

Oracle 管理員用戶 SYS 與 SYSTEM 深度解析:權限邊界與安全強化指南

     編輯:Oracle 資料庫基礎

核心賬戶職責劃分

賬戶角色定位核心權限與對象默認口令(安裝即必改)
SYS 數據庫「根用戶」,擁有最高特權 擁有所有數據字典基表、V$ 動態視圖、內部包/過程/類型;創建 DBA/CONNECT/RESOURCE 等標準角色;唯一可訪問特定內部字典表(如 USER$, OBJ$) CHANGE_ON_INSTALL
SYSTEM 日常 DBA 運維默認賬戶 擁有所有數據庫對象完全權限;許多第三方工具依賴 SYSTEM 連接;不擁有字典基表,無法授權字典對象 MANAGER

安全風險與最佳實踐

為什麼避免日常以 SYS 登錄?

SYS 擁有不受約束的系統特權(SYSDBA),任何誤操作(如 DROP TABLE sys.user$)均可導致實例不可用。審計追蹤也難以區分「人為失誤」與「惡意破壞」。

推薦運維賬戶體系

  1. 創建具名 DBA 賬戶:CREATE USER dba_zhang IDENTIFIED BY complex_pwd; GRANT DBA TO dba_zhang; 實現「人、賬、責」三統一。
  2. 禁用/鎖定默認賬戶:ALTER USER sys ACCOUNT LOCK; ALTER USER system ACCOUNT LOCK; 僅在緊急恢復時臨時解鎖。
  3. 密碼文件管理:
      - 僅 REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE 允許除 SYS 外用戶進入密碼文件。
      - 定期輪換密碼文件,控制 ENTRIES 上限。
      - 禁用 SHARED 模式避免多實例共享風險。

密碼文件操作速查

# 創建密碼文件 (Linux/Unix)
orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=StrongPwd entries=10

# 授予/收回 SYSDBA
GRANT SYSDBA TO dba_zhang;
REVOKE SYSDBA FROM dba_zhang;

# 查看密碼文件成員
SELECT * FROM v$pwfile_users;

特殊場景:禁止登錄技巧

利用 ALTER USER xxx IDENTIFIED BY VALUES 'invalid_lowercase_string'; 將存儲密碼設置為無效小寫雜湊值,Oracle 無法生成匹配的加密串,從而實現「賬號存在但不可登錄」的凍結效果,優於 ACCOUNT LOCK 的審計可見性。

總結

SYS 是「神」,SYSTEM 是「相」,日常運維應由「具名大臣」執行。嚴格管控密碼文件、最小化特權暴露、建立可審計的操作鏈路,是 Oracle 數據庫安全基線的核心。

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