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 | 特定資料庫物件 (表、視圖、序列等) |
-- 建立使用者
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;
-- 授予特定表的查詢/修改權限
GRANT SELECT, INSERT, UPDATE ON scott.emp TO app_user;
-- 授予所有權限並允許轉授
GRANT ALL ON scott.dept TO app_user WITH GRANT OPTION;
-- 建立角色
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;
-- 修改密碼
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 定義)DBA_SYS_PRIVS:系統權限DBA_TAB_PRIVS:物件權限DBA_ROLE_PRIVS:角色授予ROLE_SYS_PRIVS / ROLE_TAB_PRIVS:角色擁有權限DBA_USERS 狀態、DBA_TAB_PRIVS 異常授權AUDIT SELECT TABLE, INSERT TABLE BY ACCESS;系統化的權限管理是資料庫安全的基石,配合稽核與監控構建纵深防禦。