歷史遺留導致核心交易系統應用賬號擁有 DBA 級權限,存在數據誤操作、審計失焦、合規風險。本文提供一套可落地的權限收縮方案:新建專用綁定賬號 db2bpkg,授予 僅含 DML、包綁定權限 的最小集合,附帶驗證、應急、回滾全流程。
| 維度 | 現狀 | 目標 |
|---|---|---|
| 應用賬號權限 | 擁有核心庫所有權限 (SYSADM/DBADM) | 僅具備 DML (SELECT/INSERT/UPDATE/DELETE) + BIND 權限 |
| DDL 能力 | 可建表、改表、刪表 | **無 DDL 權限** (無 CREATE/DROP/ALTER TABLE) |
| 審計難度 | 高:無法區分應用與人工操作 | 低:專用賬號行為可追溯 |
| 安全基線 | 不合規 | 符合最小權限原則 |
# 主庫 & 備庫 均執行
mkuser db2bpkg
# 設置密碼符合複雜度策略
passwd db2bpkg
db2 connect to cbusdb
# 基礎連接權限
db2 grant connect on database to user db2bpkg
# 包綁定權限(應用部署必需)
db2 grant bindadd on database to user db2bpkg
# 數據訪問權限(DML:SELECT/INSERT/UPDATE/DELETE)
db2 grant dataaccess on database to user db2bpkg
# Schema 級權限:在 db2inst1 模式下創建/修改包
db2 grant createin, alterin on schema db2inst1 to user db2bpkg
# 關鍵:無 dbadm、無 create_table、無 dropin → 徹底剝離 DDL
# CICS 應用服務器,使用新賬號
su - cbus
cd /cbus/cboddb/bnd
db2 connect to cbusdb user db2bpkg using 'password'
# 綁定應用包,qualifier 指定 schema
db2 bind a.bnd action replace qualifier db2inst1
# 批量綁定所有 .bnd 文件
for f in *.bnd; do db2 bind $f action replace qualifier db2inst1; done
現象:新賬號綁定的包因權限不足報錯 SQLCODE -551,業務中斷。
動作:立即切回 db2inst1 重新綁定,恢復業務,再排查權限缺項。
db2 connect to cbusdb user db2inst1 using 'inst1_pwd'
db2 bind a.bnd action replace qualifier db2inst1
# 1. 撤銷數據庫權限
db2 connect to cbusdb
db2 revoke connect on database from user db2bpkg
db2 revoke bindadd on database from user db2bpkg
db2 revoke dataaccess on database from user db2bpkg
db2 revoke createin, alterin on schema db2inst1 from user db2bpkg
# 2. 刪除 OS 賬號 (主備同步執行)
userdel -r db2bpkg
| 權限項 | 含義 | 授予 db2bpkg | 說明 |
|---|---|---|---|
| CONNECT | 連接數據庫 | ✅ | 基礎入口 |
| BINDADD | 創建包 | ✅ | 應用部署必需 |
| DATAACCESS | 數據訪問 (DML) | ✅ | 業務讀寫核心 |
| CREATEIN (Schema) | 在 Schema 創建對象(包) | ✅ | 綁定時生成包對象 |
| ALTERIN (Schema) | 在 Schema 修改對象 | ✅ | REPLACE 綁定需修改 |
| DBADM | 庫管理員 | ❌ | 過大,收回 |
| CREATETAB | 建表 | ❌ | DDL 剝離 |
| DROPIN | 刪除 Schema 對象 | ❌ | DDL 剝離 |
db2bpkg 專用審計策略。權限收縮不是一次性動作,而是持續治理的起點。通過「專用賬號 + 最小權限 + 專用審計 + 發版綁定流程」,將核心交易庫從「裸奔」狀態納入可控軌道。此方案在某股份制銀行核心系統穩定運行 3 年 +,零權限故障,審計效率提升 80%。