1

私は現在、バックグラウンドで Oracle データベースのエンド ユーザー名を知る必要がある監査作業に取り組んでいます。

アプリケーションは、Oracle 認証を使用してアクセスを許可し、アプリケーション内の機能に対する権限を処理します。また、基盤となるデータへのアクセスを (正しく) 処理し、エンド ユーザーの資格情報がデータ レイヤーに保持されるようにします。

(Oracle 監査を使用して) アプリケーションを監査しようとすると、接続プールのユーザー ID と Websphere サーバー名しか取得できません。

Reauthentication (接続プールが完全に使用されるまで正しいユーザー ID をログに記録しない)、WAS.clientinfo (プレーン オール ' はエンド ユーザー資格情報を DB に渡さない) を使用するための提案を検索して見つけました。 Guardium への参照が見つかりました (これは機能しますが、恐ろしく高価です)。

エンド ユーザー情報をデータ レイヤーに渡すにはどうすればよいですか? これが構成の変更によるものなのか、サードパーティ製品によるものなのかは気にしません。機能する限り、評価できます。

4

2 に答える 2

0

これを読んだことがありますか。

http://www.ibm.com/developerworks/websphere/techjournal/0506_barghouthi/0506_barghouthi.html

これは古いものですが、内容のほとんどは今日でも有効だと思います

HTH

于 2012-09-27T05:18:15.993 に答える
0

実際、最初の接続では再認証は行われません。ただし、Oracle11gDataStoreHelper を拡張する DataStoreHelper を実装する場合は、次の 2 つのメソッドを実装する必要があります。

  1. 再認証時に呼び出される doConnectionSetupPerTransaction。
  2. 最初の接続で呼び出される doConnectionSetup。

どちらでも、WSSubject.getCallerPrincipal() を呼び出して、現在のアプリケーション ユーザーを取得できます。次に、conn.unwrap(OracleConnection.class).setEndToEndMetrics() API を使用できます。

Oracle 12c データベースと JDBC ドライバーを使用している場合は、OracleConnection.setEndToEndMetrics の代わりに Connection.setClientInfo を使用できます。

于 2016-06-06T14:20:43.580 に答える