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

WebSphere Federation Server V9.5:端到端聯合可信上下文實現身份傳遞與安全強化

     編輯:DB2 教學

前言

現代企業應用架構普遍採用多層模型,用戶請求經由應用服務器、聯合服務器等中間層傳遞至後端數據庫。傳統模式下,所有請求均以單一應用程序用戶(如 APP_USER)身份通過單一連接訪問數據源,導致最終用戶身份丟失、審計困難、權限過度授予及安全瓶頸等問題。WebSphere Federation Server V9.5 引入端到端聯合可信上下文,利用聯合服務器與數據源內建的可信上下文機制,實現了在可信環境中跨層傳遞最終用戶身份,無需重複驗證,兼顧安全與性能。

核心優勢

  • 身份斷言透明化:最終用戶身份(如 Bob、Alice)可在同一物理連接上經由應用服務器→聯合服務器→遠程數據源完整傳遞,支持精準授權與審計。
  • 最小權限原則:每位用戶僅擁有完成任務所需權限,避免單一高權限應用賬號成為安全單點故障。
  • 連接重用提升性能:不同用戶身份在同一入站/出站可信連接上切換,無需頻繁建立/銷毀連接;配合 WITHOUT AUTHENTICATION 選項可進一步減少驗證開銷。
  • 簡化密碼維護:可信用戶映射無需存儲遠程密碼,降低憑證管理複雜度。

典型場景:保險理賠系統

某保險應用部署於應用服務器,需整合遠程 DB2(人壽理賠)與 Oracle(家庭理賠)數據源。傳統模式下,所有查詢均以 APP_USER 身份執行,無法區分具體用戶操作。啟用端到端可信上下文後:

  1. 應用啟動時,APP_USER 建立顯式可信連接完成初始化。
  2. 用戶 Bob 登錄,入站/出站用戶 ID 切換為 BOB,其請求以 Bob 權限在 DB2/Oracle 執行並審計。
  3. 事務提交後,連接切換至 Alice 身份處理下一請求,以此類推。

配置步驟詳解

1. 遠程數據源配置

DB2 for LUW/z/OS

安全管理員(SECADM)在遠程 DB2 創建可信上下文,定義聯合服務器 IP 為信任屬性,允許 PUBLIC 無驗證重用:

CREATE TRUSTED CONTEXT MY_DB2_TCX
  BASED UPON CONNECTION USING SYSTEM AUTHID APP_USER
  ATTRIBUTES (ADDRESS '9.44.111.222')
  WITH USE FOR PUBLIC WITHOUT AUTHENTICATION
  ENABLE;

Oracle

配置代理驗證,允許指定用戶通過 APP_USER 代理連接:

ALTER USER MARY GRANT CONNECT THROUGH APP_USER;
ALTER USER ALICE GRANT CONNECT THROUGH APP_USER;
ALTER USER BOB GRANT CONNECT THROUGH APP_USER;

2. 聯合服務器可信上下文

在 WebSphere Federation Server 定義信任應用服務器連接的上下文:

CREATE TRUSTED CONTEXT MY_WFS_TCX
  BASED UPON CONNECTION USING SYSTEM AUTHID APP_USER
  ATTRIBUTES (ADDRESS '9.44.111.111')
  WITH USE FOR PUBLIC WITHOUT AUTHENTICATION
  ENABLE;

3. 聯合服務器數據源與用戶映射

創建 DRDA Wrapper 與 Server 對象訪問遠程 DB2:

CREATE WRAPPER drda;
CREATE SERVER udb1 TYPE db2/udb VERSION 9.5 WRAPPER drda
  AUTHORIZATION "APP_USER" PASSWORD "secret" OPTIONS (DBNAME 'remotedb');

用戶映射策略:

  • 本地/遠程用戶 ID 密碼相同(如 MARY、ALICE):無需映射,直接重用可信連接。
  • ID 不同(如 JOE → JOESMITH):創建可信用戶映射(需 SECADM 權限),指定 USE_TRUSTED_CONTEXT 'Y',無需 REMOTE_PASSWORD:
CREATE USER MAPPING FOR JOE SERVER udb1
  OPTIONS (REMOTE_AUTHID 'JOESMITH', USE_TRUSTED_CONTEXT 'Y');

若本地/遠程認證均不同,則需同時指定 REMOTE_AUTHID 與 REMOTE_PASSWORD。

4. 應用程序使用模式 (CLI/ODBC/JDBC/XA)

關鍵 API 序列:

  1. SQLSetConnectAttr(..., SQL_ATTR_USE_TRUSTED_CONTEXT, SQL_TRUE) 啟用可信連接屬性。
  2. SQLConnect 以 APP_USER 建立入站可信連接(需密碼)。
  3. 首次訪問遠程數據源自動建立出站可信連接(同為 APP_USER)。
  4. 事務邊界處 SQLEndTran(COMMIT) 後,SQLSetConnectAttr(..., SQL_ATTR_TRUSTED_CONTEXT_USERID, "BOB") 切換入站用戶;後續遠程請求自動切換出站用戶為 BOB(無需密碼)。
/* 切換用戶示例 */
SQLEndTran(SQL_HANDLE_DBC, hdbc1, SQL_COMMIT);
SQLSetConnectAttr(hdbc1, SQL_ATTR_TRUSTED_CONTEXT_USERID, "BOB", SQL_IS_POINTER);
SQLExecDirect(hstmt, "SELECT * FROM claims", SQL_NTS); /* 以 BOB 身份執行 */

故障排查指南

可信連接建立失敗 (SQL20360W)

  • 確認客戶端使用 TCP/IP(本機連接默認 IPC 需強制 TCP/IP)。
  • 檢查聯合服務器可信上下文是否已 ENABLE。
  • 數據庫認證類型不可為 CLIENT。
  • 驗證信任屬性(IP、加密級別)與連接請求匹配。

用戶切換失敗 (SQL1060N / SQL20361N)

  • 用戶需擁有 CONNECT 權限。
  • 可信上下文 WITH USE FOR 子句需包含目標用戶或 PUBLIC。
  • 若需驗證,應用必須提供正確憑證。
  • 切換必須在事務邊界(已 COMMIT/ROLLBACK)。
  • 確認可信上下文對象未被禁用/刪除/修改。

可信用戶映射操作錯誤

  • 創建/修改/刪除 USE_TRUSTED_CONTEXT 映射均需 SECADM 權限。
  • 僅允許修改可信映射的 REMOTE_PASSWORD(不可為空)。

適用範圍與限制

  • 支持身份斷言的數據源:DB2 LUW V9.5+、DB2 for z/OS V9+、Oracle。其他數據源僅支持普通非可信連接,切換用戶時會斷開重連,需提供密碼,無性能優勢。
  • 顯式可信連接 僅可通過 CLI、ODBC、JDBC、XA 等支持的 API 請求。

總結

WebSphere Federation Server V9.5 的端到端聯合可信上下文通過保留最終用戶身份跨層傳遞,解決了多層架構中長期存在的身份丟失、審計盲區、過度授權與單點安全風險,同時利用連接重用顯著提升吞吐量,是構建安全、高效、可審計的企業級數據訪問層的關鍵特性。

傳統四層模型問題場景 端到端聯合可信上下文完整場景

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