首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 9.5 安全新功能 (二):可信上下文 完整教學——建立、屬性匹配、用戶切換與三層架構應用

     編輯:DB2 教學

可信上下文核心價值

解決三層架構 (Web/App Server → DB2) 安全痛點:

  • 中介層以單一服務帳號連線,資料庫無法識別真實用戶
  • 所有操作使用服務帳號權限,無法實現細粒度存取控制
  • 稽核記錄只見服務帳號,無法追蹤真實操作者

可信上下文建立 DB2 與中介層的信任關係:連線屬性 (系統授權 ID、IP/網域、加密等級) 匹配定義 → 連線成為可信連線,中介層可切換當前用戶 ID (可選認證),後續操作使用真實用戶身份與權限,稽核可追蹤真人。

環境建置 (承接第一部份角色框架)

  • 同樣用戶/角色/表結構 (SAMPLE、DB2SEC SECADM 等)
  • 模擬遠端資料庫:Control Center 添加 127.0.0.1 hostname、別名 SAMPLER
  • 編輯 hosts 檔:127.0.0.1 localhost、192.168.73.134 host1.Admin.LUWent.com
  • 協議限制:僅支援 TCP/IP (IPv4/IPv6/DNS 格式)

可信上下文生命週期管理

建立 (CREATE TRUSTED CONTEXT)

-- 失敗:無效位址格式
CREATE TRUSTED CONTEXT MktgTrustedContext
BASED UPON CONNECTION USING SYSTEM AUTHID ALLY
ATTRIBUTES (ADDRESS 'qwerty', ENCRYPTION 'HIGH')
DEFAULT ROLE Mktg ENABLE;
-- SQL0644N ADDRESS 關鍵字值無效

-- 成功:使用有效位址
CREATE TRUSTED CONTEXT MktgTrustedContext
BASED UPON CONNECTION USING SYSTEM AUTHID ALLY
ATTRIBUTES (ADDRESS '127.0.0.1', ENCRYPTION 'HIGH')
DEFAULT ROLE Mktg ENABLE;
-- DB20000I 成功

限制:每個系統授權 ID 只能有一個可信上下文;本地資料庫無效。

修改 (ALTER TRUSTED CONTEXT)

-- 新增允許切換用戶 (無需認證)
ALTER TRUSTED CONTEXT MktgTrustedContext
ADD USE FOR STAN WITHOUT AUTHENTICATION;

-- 暫時禁用
ALTER TRUSTED CONTEXT MktgTrustedContext ALTER DISABLE;

-- 刪除
DROP TRUSTED CONTEXT MktgTrustedContext;

可信連線中切換用戶

限制:僅支援 DB2 CLI / JDBC 應用程式;必須在交易邊界 (建議顯式 COMMIT WORK) 進行。

實戰驗證流程

  1. 先確認 ALLY 無權限更新 LE_PENSIONS (預期失敗)
  2. 建立可信上下文 (如上),預設角色 Mktg
  3. 中介層以 ALLY 身份建立可信連線
  4. 切換至 STAN (已在 ADD USE FOR STAN 中授權,且 STAN 擁有 Sales 角色含更新權限)
  5. 以 STAN 身份執行更新 → 成功,稽核記錄顯示 STAN

關鍵設計考量

  • DEFAULT ROLE:連線建立時自動獲得的角色
  • ADD USE FOR user [WITH/WITHOUT AUTHENTICATION] ROLE role:可為個別切換用戶指定不同角色
  • PUBLIC:允許任意授權 ID 使用該上下文 (慎用)
  • 啟用/停用 (ENABLE/DISABLE) 可動態控制可用性

總結

可信上下文讓中介層「代理」真實用戶身份執行資料庫操作,兼顧連線池效能 (無需重建連線) 與細粒度安全/稽核,是三層架構資料庫安全的關鍵基礎設施。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved