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

Oracle 使用者存取控制實戰:權限、角色與資料庫連結

     編輯:Oracle 資料庫基礎

建立安全精細的 Oracle 權限管理體系

Oracle 安全性分為系統安全 (實例存取、資源配額) 與資料安全 (物件操作權限)。本文系統整理使用者建立、系統/物件權限授予、角色管理、權限回收、資料庫連結等核心操作,構建最小權限原則的防護體系。

核心權限架構

類別代表權限適用對象
系統權限CREATE USER, DROP ANY TABLE, SELECT ANY TABLE, CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE VIEW, CREATE PROCEDURE使用者/角色
物件權限SELECT, INSERT, UPDATE, DELETE, EXECUTE, REFERENCES, ALL特定資料庫物件 (表、視圖、序列等)

實戰操作指令集

1. 建立使用者與基本授權

-- 建立使用者
CREATE USER app_user IDENTIFIED BY strong_password
  DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON users;

-- 應用開發基本權限
GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE VIEW, CREATE PROCEDURE TO app_user;

2. 物件權限精細授權

-- 授予特定表的查詢/修改權限
GRANT SELECT, INSERT, UPDATE ON scott.emp TO app_user;

-- 授予所有權限並允許轉授
GRANT ALL ON scott.dept TO app_user WITH GRANT OPTION;

3. 角色簡化權限管理

-- 建立角色
CREATE ROLE app_readonly;
CREATE ROLE app_developer;

-- 角色授權
GRANT SELECT ON scott.emp TO app_readonly;
GRANT SELECT, INSERT, UPDATE, DELETE ON scott.emp TO app_developer;
GRANT CREATE TABLE, CREATE VIEW TO app_developer;

-- 使用者授予角色
GRANT app_developer TO app_user;

4. 密碼管理與權限回收

-- 修改密碼
ALTER USER app_user IDENTIFIED BY new_strong_password;

-- 回收物件權限 (CASCADE CONSTRAINTS 連帶移除參考完整性)
REVOKE SELECT, INSERT ON scott.emp FROM app_user CASCADE CONSTRAINTS;

-- 回收系統權限
REVOKE CREATE TABLE FROM app_user;

資料庫連結跨實例存取

-- 建立公開資料庫連結
CREATE PUBLIC DATABASE LINK hq.acme.com USING 'sales';

-- 透過連結查詢遠端物件
SELECT * FROM scott.emp@hq.acme.com;
  • USING 指定遠端服務名稱 (tnsnames.ora 定義)
  • 連結擁有者可為 PUBLIC (所有使用者) 或 PRIVATE (特定使用者)
  • 遠端操作受遠端資料庫權限控制

權限稽核查詢視圖

  • DBA_SYS_PRIVS:系統權限
  • DBA_TAB_PRIVS:物件權限
  • DBA_ROLE_PRIVS:角色授予
  • ROLE_SYS_PRIVS / ROLE_TAB_PRIVS:角色擁有權限

最佳實務原則

  • 遵循最小權限原則:僅授予業務必要權限
  • 善用角色分層:ReadOnly / Developer / DBA 等
  • 定期審核 DBA_USERS 狀態、DBA_TAB_PRIVS 異常授權
  • 強制密碼複雜度與輪換策略 (Profile 設定)
  • 稽核敏感操作:AUDIT SELECT TABLE, INSERT TABLE BY ACCESS;

系統化的權限管理是資料庫安全的基石,配合稽核與監控構建纵深防禦。

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