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

Oracle 用戶權限查詢與授權實戰:SESSION_PRIVS、GRANT 與 SYS 管理員操作

     編輯:Oracle 資料庫基礎

查看當前會話擁有的系統權限

SELECT * FROM session_privs;

典型輸出(部分):

PRIVILEGE
------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE ANY DIRECTORY
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
DEBUG CONNECT SESSION

授權操作標準流程

1. 以 SYSDBA 連接

SQL> CONN sys/password@host:port/service AS SYSDBA

2. 授予系統權限

-- 授予建立會話權限(最基本)
GRANT CREATE SESSION TO conquer;

-- 常用組合授權
GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE TO conquer;
GRANT UNLIMITED TABLESPACE TO conquer;  -- 分配無限表空間配額

3. 授予對象權限

GRANT SELECT, INSERT, UPDATE ON schema.table_name TO conquer;

4. 角色授權(推薦生產環境)

-- 建立業務角色
CREATE ROLE app_read_only;
GRANT SELECT ON schema.table1 TO app_read_only;
GRANT SELECT ON schema.table2 TO app_read_only;

-- 授予用戶角色
GRANT app_read_only TO conquer;

權限審計與回收

  • 查看用戶系統權限:SELECT * FROM dba_sys_privs WHERE grantee = 'CONQUER';
  • 查看用戶對象權限:SELECT * FROM dba_tab_privs WHERE grantee = 'CONQUER';
  • 查看用戶角色:SELECT * FROM dba_role_privs WHERE grantee = 'CONQUER';
  • 回收權限:REVOKE CREATE TABLE FROM conquer;

安全最佳實踐

  1. 最小權限原則:僅授予業務必需權限,避免 DBA、ANY 權限濫用。
  2. 角色化管理:按職能建立角色(APP_DEV、APP_READ、DW_ETL),用戶授角色而非離散權限。
  3. 定期審計:季度核對 DBA_SYS_PRIVS、DBA_TAB_PRIVS,清理離職/專案結束用戶權限。
  4. 密碼策略:啟用 Profile 限制密碼複雜度、過期時間、失敗鎖定。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved