首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java EE 應用實現資料庫端用戶審計:JDBC 4.0 與廠商擴展 API 實戰指南

     編輯:Java 相關知識

企業級應用常面臨審計需求:資料庫端必須記錄「哪位前端登入用戶執行了什麼 SQL」。但應用通常共用單一資料庫帳號連線,導致用戶身份無法傳遞至資料庫層。本文介紹輕量級方案:透過資料庫連線攜帶用戶標識,在資料庫端完成審計。

核心模式:會話級標識傳遞

  1. 開啟資料庫會話(取得連線)
  2. 設定用戶標識(ClientUser 等屬性)
  3. 執行資料庫操作
  4. 清除連線上的標識(關鍵步驟,防止連線池複用時身份洩漏)
  5. 關閉會話

JDBC 4.0 標準 API(Java 6+)

java.sql.Connection 新增:

void setClientInfo(String name, String value)
void setClientInfo(Properties properties)

支援屬性:ApplicationName、ClientUser(前端用戶 ID)、ClientHostname。常用模式:

Connection conn = getConnection();
conn.setClientInfo("ClientUser", currentUserId);
// do something
conn.setClientInfo("ClientUser", null); // 清除
conn.close();

廠商專屬 API 實作

DB2(com.ibm.db2.jcc.DB2Connection)

conn.setDB2ClientUser("loginUser");
// 操作...
conn.setDB2ClientUser(null);

查看命令:db2 get snapshot for applications on databasealias(開放平台)或 -DISPLAY THREAD(*) DETAIL(z/OS)。

Oracle 11g R1 前(oracle.jdbc.driver.OracleConnection)

conn.setClientIdentifier(clientId);
// 操作...
conn.clearClientIdentifier(clientId);

資料庫端查詢:SELECT client_identifier FROM v$session。開啟審計:AUDIT SELECT TABLE BY SESSION,再查 DBA_AUDIT_TRAIL 獲取 SQL 文本。

WebSphere 數據源環境(com.ibm.websphere.rsadapter.WSConnection)

WSConnection wsconn = (WSConnection) conn;
Properties props = new Properties();
props.setProperty(WSConnection.CLIENT_ID, clientId);
wsconn.setClientInformation(props);
// 操作...
wsconn.setClientInformation(null);

支援屬性:CLIENT_ID、CLIENT_APPLICATION_NAME、CLIENT_ACCOUNTING_INFO 等。

整合 ORM 框架

iBatis/MyBatis

自訂 SqlMapClient 實作,在各方法中手動取得連線、設定標識、開啟 Session、提交/回滾、清除標識。再透過 Wrapper 類暴露增強後的實例。

Hibernate

在事務開啟後透過 session.connection() 取得底層連線,轉型為廠商特定類型(OracleConnection/DB2Connection),設定/清除標識:

tx = sess.beginTransaction();
conn = sess.connection();
OracleConnection oraconn = (OracleConnection) conn;
oraconn.setClientIdentifier(clientId);
// do work
oraconn.clearClientIdentifier(clientId);
tx.commit();

總結

本方案源自真實客戶場景,涵蓋 JDBC 4.0 標準、主流資料庫廠商擴展、應用服務器包裝連線、主流 ORM 框架整合四大場景,提供可直接落地的程式碼範例,助力滿足合規審計需求。

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