DB2 安全體系建立在 **認證 → 授權 → 特權** 三層防線之上。本文系統梳理五大權限級別 (SYSADM/SYSCTRL/SYSMAINT/DBADM/LOAD)、認證類型、授權命令與實戰配置範例,助您構建最小權限原則的生產環境安全基線。
驗證「你是誰」。DB2 支援多種認證類型,由資料庫管理器配置參數 AUTHENTICATION 控制:
| 類型 | 認證發生位置 | 密碼傳輸 | 適用場景 |
|---|---|---|---|
| SERVER | 伺服器端 | 明文 | 內網高信任環境 |
| SERVER_ENCRYPT | 伺服器端 | 客戶端加密後傳輸 | **生產環境推薦** |
| CLIENT | 客戶端 | 不傳輸密碼 | 舊版兼容、極高性能要求 |
| KERBEROS | Kerberos KDC | 票據制 | 企業單點登入 (Windows 2000+) |
| KRB_SERVER_ENCRYPT | Kerberos 或 SERVER_ENCRYPT 回退 | 視協商結果 | 混合環境過渡 |
| 權限 | 核心能力 | 典型命令示例 | 授予命令 |
|---|---|---|---|
| SYSADM | 最高權限:實例全生命週期、所有資料庫對象、安全配置、授予其他 SYS* | db2stop/start、update dbm cfg、grant dbadm | db2 update dbm cfg using SYSADM_GROUP grp1 |
| SYSCTRL | 管控操作:啟停實例、建刪庫/表空間、備份恢復、runstats、更新 DB CFG,**不可訪問用戶數據** | db2start/stop、create/drop database、backup/restore | db2 update dbm cfg using SYSCTRL_GROUP grp2 |
| SYSMAINT | 維護子集:啟停、備份恢復、runstats、更新 DB CFG,**不可建刪庫/表空間、不可訪問數據** | db2start/stop、backup/restore、runstats | db2 update dbm cfg using SYSMAINT_GROUP grp3 |
注意:修改 DBM CFG 後必須 db2stop; db2start 生效;若當前用戶不在目標群組,重啟後將無法再停啟實例——請預先加入群組或保留備用 SYSADM 帳號。
| 權限 | 核心能力 | 限制 | 授予示例 |
|---|---|---|---|
| DBADM | 近似庫主:建刪表、grant/revoke 任意特權、runstats、隱含所有對象特權 | 不可 drop database、建刪表空間、備份恢復、更新 DB CFG | db2 grant dbadm on database to user tst1 db2 grant dbadm on database to group grp1 |
| LOAD | 執行 LOAD 命令(高速裝載) | 需搭配表級 INSERT/DELETE 特權 | db2 grant load on database to user tst1 db2 grant insert on table sales to user tst1 |
特權控制「你能對哪個對象做什麼」,主要分類:
# 典型最小權限授予模式
db2 grant select on table hr.employees to role analyst_role;
db2 grant insert, update(salary) on table hr.employees to user payroll_app;
db2 grant execute on procedure hr.adjust_salary to user mgr_app;
# 當前會話擁有的權限與特權
db2 get authorizations
# 系統目錄查詢特定用戶/群組特權
select * from syscat.tabauth where grantee = 'TST1';
select * from syscat.dbauth where grantee = 'GRP1';
AUTHENTICATION=SERVER_ENCRYPT,禁用 CLIENT。db2audit 記錄 SECMAINT、OBJMAINT、EXECUTE 類事件,定期導出分析。db2 connect ... new password 強制輪換。DB2 安全 = **認證確認身份 + 授權界定管理能力 + 特權鎖定數據訪問**。掌握五大權限邊界、善用角色與審計,即可構建符合合規與最小權限的防禦體系。