DB2 權限體系分為資料庫級與物件級,支援顯式 GRANT/REVOKE、隱式自動授權、間接套件授權,v9 新增 LBAC (Label-Based Access Control) 行列級安全。
| 層級 | 權限 | 說明 |
|---|---|---|
| 資料庫級 | CREATETAB | 建立表 |
| BINDADD | 建立套件 | |
| CONNECT | 連線資料庫 | |
| CREATE_NOT_FENCED | 建立非隔離 UDF | |
| IMPLICIT_SCHEMA | 隱式建立結構描述 | |
| LOAD | 載入資料 | |
| QUIESCE_CONNECT | 存取靜默狀態資料庫 | |
| CREATE_EXTERNAL_ROUTINE | 建立外部程序 | |
| 物件級 | CONTROL | 表/視圖/索引/套件/別名/型別/UDF/序列 完全控制 + 授權他人 |
| DELETE | 刪除記錄 | |
| INSERT | 插入記錄 | |
| SELECT | 查詢 | |
| UPDATE | 更新記錄 | |
| ALTER | 修改表定義 | |
| INDEX | 建立索引 | |
| REFERENCES | 建立/刪除外鍵 | |
| BIND | 重新綁定套件 | |
| EXECUTE | 執行套件/程序/函數/方法 | |
| ALTERIN | 修改結構描述內物件 | |
| CREATEIN | 在結構描述建立物件 | |
| DROPIN | 刪除結構描述內物件 |
系統編目視圖:SYSCAT.TABAUTH, COLAUTH, INDEXAUTH, SCHEMAAUTH, ROUTINEAUTH, PACKAGEAUTH
-- 範例:授予 test1 查詢 gmilne.org GRANT SELECT ON TABLE gmilne.org TO USER test1 -- 授予群組插入權限 GRANT INSERT ON TABLE gmilne.org TO GROUP db2grp1 -- 授予所有用戶結構描述 DROPIN GRANT DROPIN ON SCHEMA gmilne TO ALL -- 撤銷 REVOKE SELECT ON TABLE gmilne.org FROM USER test1 REVOKE INSERT ON TABLE gmilne.org FROM GROUP db2grp1 REVOKE DROPIN ON SCHEMA gmilne FROM ALL
注意:從群組撤銷不影響直接授予個別用戶的相同權限。
| 命令 | 隱式授予權限 | 受惠者 |
|---|---|---|
| CREATE TABLE | 該表 CONTROL | 建立者 |
| CREATE SCHEMA | CREATEIN/ALTERIN/DROPIN + 授權他人 | 建立者 |
| CREATE VIEW | 視圖 CONTROL (需擁有所有基礎表 CONTROL) | 建立者 |
| CREATE DATABASE | 目錄表 SELECT、資料庫 IMPLICIT_SCHEMA、DBADM (含 CONNECT/CREATETAB/BINDADD/IMPLICIT_SCHEMA/CREATE_NOT_FENCED) | 建立者 / PUBLIC |
刪除物件時隱式權限自動撤銷;顯式撤銷高層權限**不**自動撤銷隱式權限。
EXECUTE 權限即可執行SELECT * FROM org、INSERT INTO test,用戶獲 org SELECT、test INSERT傳統做法:建立視圖限制存取。LBAC 提供原生行/列級安全策略。
CREATE SECURITY LABEL COMPONENT J_DEPT
TREE ('HR_EXECUTIVE' ROOT,
'MAN_D11_E21' UNDER 'HR_EXECUTIVE',
'A00' UNDER 'HR_EXECUTIVE', ...,
'D11' UNDER 'MAN_D11_E21',
'E21' UNDER 'MAN_D11_E21')
CREATE SECURITY POLICY J_DEPT_POLICY COMPONENTS J_DEPT WITH DB2LBACRULES RESTRICT NOT AUTHORIZED WRITE SECURITY LABEL
CREATE SECURITY LABEL J_DEPT_POLICY.EXECUTIVE COMPONENT J_DEPT 'HR_EXECUTIVE' GRANT SECURITY LABEL J_DEPT_POLICY.EXECUTIVE TO USER Jane FOR ALL ACCESS GRANT SECURITY LABEL J_DEPT_POLICY.MANAGE_D11_E21 TO USER Joe FOR ALL ACCESS GRANT SECURITY LABEL J_DEPT_POLICY.A00 TO USER Frank FOR READ ACCESS
ALTER TABLE EMP ADD COLUMN DEPT_TAG DB2SECURITYLABEL ADD SECURITY POLICY J_DEPT_POLICY
SECLABEL_BY_NAME 依 WORKDEPT 設定| 用戶 | 可見部門 | 權限 |
|---|---|---|
| Jane (執行官) | 所有 | ALL ACCESS |
| Joe (D11/E21 經理) | D11, E21 | ALL ACCESS (含子節點) |
| Frank (A00 組長) | A00 | READ ONLY |
Frank 嘗試 UPDATE 會報 SQL20402N 無 LBAC 憑證。
SYSCAT.*AUTH 視圖