在 Linux 與 UNIX 平台部署 DB2 UDB 時,作業系統層級的使用者與群組架構是安全與運維的基石。DB2 安裝精靈預設會建立四組帳號,理解各角色職責與權限邊界,對於後續權限最小化、審計合規與故障排除至關重要。
四大核心角色總覽
| 角色 | 預設帳號 | 預設群組 | 核心職責 | 權限層級 |
| 安裝用戶 | root | system/root | 執行 DB2 安裝、修補程式套用、核心參數調整 | OS 最高權限 |
| DAS 用戶 | dasusr1 | dasadm1 | 運行 DB2 Administration Server 進程,支援 GUI 管理工具 | 受限服務帳號 |
| 實例擁有者 | db2inst1 | db2iadm1 | 控制實例所有進程、擁有資料庫檔案系統、執行備份/恢復 | 實例最高權限 |
| Fenced 用戶 | db2fenc1 | db2fadm1 | 在獨立記憶體空間執行 UDF/存儲過程,隔離主引擎崩潰風險 | 最低權限沙箱帳號 |
角色深度解析
1. 安裝用戶
- 必須為 root:唯有 root 擁有寫入系統目錄、綁定低埠口、載入核心擴充模組的權限
- 安裝完成後,日常運維不應使用 root 操作 DB2 指令
2. 實例擁有者 —— 核心運維角色
- 家目錄下建立實例目錄結構(
~/sqllib、~/db2dump 等)
- 控制
db2sysc、db2wdog、db2acd 等核心進程
- 擁有所有資料庫容器、日誌檔、備份影像的檔案系統權限
- 最佳實務:僅隸屬
db2iadm1 群組,不加入 wheel、root 等高權限群組
- 名稱衝突時安裝精靈會自動附加數字(db2inst1、db2inst2...)
3. DAS 用戶 —— 圖形化管理橋樑
- 每台實體機器僅需一組 DAS,可管理該主機上所有實例
- 啟動/停止指令:
su - dasusr1 -c "db2admin start" / db2admin stop
- 必須與實例擁有者不同帳號,權限分離原則
- DB2 Control Center、Data Studio 等 GUI 工具透過 DAS 代理執行管理作業
4. Fenced 用戶 —— 安全隔離沙箱
- 用途:執行
FENCED / NOT FENCED 屬性的 UDF 與存儲過程
FENCED 程式在 db2fmp(fenced mode process)獨立進程中運行,崩潰不影響主引擎 db2sysc
- 生產環境強制分離:不可使用實例擁有者作為 fenced 用戶
- 測試環境或不使用 UDF/存儲過程時,可共用實例擁有者帳號(建立實例時省略
-u 參數)
- 建立新實例時必須指定:
db2icrt -u db2fenc1 newinst
群組權限矩陣
| 群組 | 成員 | 授權範圍 |
| db2iadm1 | db2inst1 | SYSADM、SYSCTRL、SYSMAINT(實例級權限) |
| dasadm1 | dasusr1 | DAS 管理權限 |
| db2fadm1 | db2fenc1 | 無 DB2 內建權限,僅 OS 層級進程隔離 |
安全強化建議
- 帳號鎖定:安裝完成後鎖定 root 直接登入,強制使用
su - 切換身分
- 最小權限原則:實例擁有者家目錄權限
750,群組 db2iadm1 可讀,其他無權限
- 審計追蹤:啟用 OS 層級
auditd 監控關鍵檔案(db2sysc、db2nodes.cfg、容器檔案)變更
- 定期輪換:服務帳號密碼每 90 天輪換,同步更新 DB2 內部認證(
db2 update dbm cfg using SYSADM_GROUP 等)
常見部署拓撲
# 單實例單資料庫(開發/測試)
root 安裝
└─ db2inst1 (db2iadm1) ── 實例 ── 資料庫
└─ db2fenc1 (db2fadm1) ── fenced 進程
└─ dasusr1 (dasadm1) ─── DAS
# 多實例生產環境
root 安裝
└─ db2inst_prod (db2iadm1_prod) ── 核心業務實例
└─ db2inst_rpt (db2iadm1_rpt) ── 報表實例
└─ db2fenc1 (db2fadm1) ───────── 共用 fenced(或每實例專屬)
└─ dasusr1 (dasadm1) ─────────── 共用 DAS