Oracle 物件權限控制精確到「誰能對什麼物件做什麼操作」。共有 9 種權限 (ALTER、DELETE、EXECUTE、INDEX、INSERT、READ、REFERENCES、SELECT、UPDATE) 可授予 10 類物件 (Table、View、Sequence、Procedure、Function、Package、Type、Directory、Library、Operator/Indextype)。本文提供完整權限-物件矩陣表、各權限語意詳細說明、ALL 關鍵字展開清單,並以 ALTER 權限為例深度解析操作範圍。
| 權限 \ 物件 | Table | View | Sequence | Procedure | Function | Package | Type | Directory | Library | Operator/Indextype |
|---|---|---|---|---|---|---|---|---|---|---|
| ALTER | Y | Y | ||||||||
| DELETE | Y | Y | ||||||||
| EXECUTE | Y | Y | Y | Y | Y | Y | ||||
| INDEX | Y | |||||||||
| INSERT | Y | Y | ||||||||
| READ | Y | |||||||||
| REFERENCES | Y | |||||||||
| SELECT | Y | Y | ||||||||
| UPDATE | Y | Y |
ALTER TABLE (更名、增刪欄位、修改型別/大小、分區轉換)、LOCK TABLE。ALTER SEQUENCE (調整最小值、遞增值、快取大小)。DELETE FROM table/view。View 需符合可更新條件。CREATE INDEX ON table。INSERT INTO table/view。View 需符合可更新條件。UTL_FILE 讀取、BFILENAME 存取目錄下檔案。FOREIGN KEY REFERENCES table)。UPDATE table/view SET ...。View 需符合可更新條件。GRANT ALL ON table TO user; 等同於:
| 物件類型 | ALL 包含權限 |
|---|---|
| TABLE | SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, REFERENCES |
| VIEW | SELECT, INSERT, UPDATE, DELETE (無 INDEX/ALTER/REFERENCES) |
| SEQUENCE | SELECT, ALTER |
| PROCEDURE/FUNCTION/PACKAGE | EXECUTE |
| TYPE | EXECUTE |
| DIRECTORY | READ |
-- 單一權限
GRANT SELECT ON scott.emp TO hr_user;
-- 多權限
GRANT SELECT, INSERT, UPDATE ON scott.emp TO hr_user;
-- 全部權限
GRANT ALL ON scott.emp TO hr_user;
-- 欄位級授權 (僅 Table/View 支援)
GRANT UPDATE (sal, comm) ON scott.emp TO hr_user;
-- WITH GRANT OPTION (可轉授)
GRANT SELECT ON scott.emp TO hr_user WITH GRANT OPTION;
REVOKE SELECT ON scott.emp FROM hr_user;
REVOKE ALL ON scott.emp FROM hr_user;
-- 注意:CASCADE CONSTRAINTS 只用於 REVOKE REFERENCES/ALTER 導致外來鍵/索引級聯刪除
-- 我授予他人的權限
SELECT * FROM USER_TAB_PRIVS_MADE;
-- 他人授予我的權限
SELECT * FROM USER_TAB_PRIVS_RECD;
-- 所有物件權限 (需 DBA)
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'HR_USER';
GRANT ALL,明確列出所需權限 (如 SELECT, INSERT)。APP_READ, APP_WRITE),再授予角色給使用者。UPDATE 權限。DBA_TAB_PRIVS 產出權限矩陣,對照業務需求清單。READ 權限 (僅查詢,不含 SELECT ... FOR UPDATE),可用於更精細的唯讀控制。掌握 9×10 權限矩陣,即能精準設計符合最小權限原則的物件授權策略,避免過度授權帶來的安全風險。