[WLS] Data Source Security Part 1

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/data_source_security_part_1

Oracle walletを使ってデータソースのセキュリティ資格証明を格納する方法について数件の記事を書いてきましたが、今後WebLogic Server (WLS) のデータソースで利用可能な様々な種類のセキュリティに関する記事を書く予定にしています。思っている以上にたくさんのオプションがありますよ!
この領域では、WLS 10.3.6で様々な機能強化がなされています。
WLS 12.1.2でリリース予定の機能強化ポイントがあり、完全を期すため、ここに含める予定にしていますが、ティーザー広告を意図しているわけではありません。Oracleサポート担当者に問い合わせると、現時点ではWLS 10.3.6に帯するマイナーパッチとして入手することができます。
現在のセキュリティ関連のドキュメントは、いくつかの場所に分散しており、誤った記載があったり、いくつかのトピックが含まれていなかったりします。また、これらの機能の適用方法に関するナレッジが書き留められていないように思われます。これらの記事の目標は、統一された様式でWLSデータソースのセキュリティについて説明し、利用可能な機能を使用する方法をご紹介することです。

WebLogicデータソースセキュリティオプションの概要

デフォルトでは、単一のデータベースユーザとパスワードをデータソースに定義します。パスワード等はデータソースディスクリプタに格納したり、Oracle walletを使うことができます。これは非常にシンプルかつ効率的なやり方です。接続プール中のコネクション全てをこのユーザが保持し、接続を割り当てる際に特別な処理はありません。つまり、均質な接続プールであり、任意のリクエストでセキュリティの観点(アフィニティのような別の側面があります)から任意の接続を取得することができます。アプリケーションのエンドユーザに関係なく、プール中の全ての接続は同じセキュリティ資格証明を使ってDBMSにアクセスします。データソースディスクリプタ(もしくはwallet)から利用可能なので、接続を取得する際に追加の情報は不要です。
java.sql.Connection conn = mydatasource.getConnection();
[注意]
[プロパティ]フィールドに名前と値のペアでパスワードを入力することができます(これは本番環境では許可されません)し、データソースディスクリプタの[パスワード]フィールドにパスワードを入力することができます。 [パスワード]フィールドの値は、物理的なデータベース接続を作成する際にJDBCドライバに渡されるプロパティで定義された任意のパスワードをオーバーライドします。パスワードは構成ファイル中で暗号化され(モジュールファイルのjdbc-driver-paramsタグ中のpassword-encrypted属性として格納されます)、管理コンソールに隠されるので、プロパティ文字列にはパスワードプロパティの代わりにPassword属性を使用することをお勧めします。 [プロパティ]および[パスワード]フィールドは、管理コンソールのデータソース作成ウィザードもしくは[データソースの構成]タブにあります。
JDBC APIを使って、次のようにデータベースのユーザー名とパスワードをプログラムで指定することもできます。
java.sql.Connection conn = mydatasource.getConnection("user", "password");
JDBCの仕様によれば、データベースのユーザーと関連づけられているパスワードを取ることになっていますが、ベンダーによって違った実装をしています。 WLSは、デフォルトでは、アプリケーションサーバのユーザとパスワードとして扱います。このペアを認証して、有効なユーザーであるか、そのユーザーがWLSのセキュリティパーミッションチェックに使用されるかどうかを確認します。その後、デフォルトではデータベースユーザとパスワードをデータソース資格証明マッパーを使ってマッピングします。それゆえ、このAPIは仕様に準拠していますが、データベースの資格証明をアプリケーションコードから一段階離しています。詳細や根拠については後述します。
デフォルトのアプローチは単純ですが、ただ一つのデータベースユーザが全ての作業を実行することを意味するため、少なくともデータベースレベルでは、誰が実際に更新しているのかわかりませんし、SQLの操作を実行ユーザで制限できません。データベースにさせるのではなく、アプリケーションコードにユーザ毎のロジックが必要になります。
データベースの操作に関するユーザごとの情報を提供するよう構成できる様々なWLSデータソースの機能があります。

WebLogicデータソースセキュリティのオプション

下表はWebLogicデータソースでデータベースセキュリティ資格証明を構成するために利用可能な機能を示しています。また、各機能が互いに機能の親和性に関する情報も記載しています。
機能
説明
利用可
利用不可
ユーザ認証
(デフォルト)
デフォルトのgetConnection(user, password) の挙動を示す。入力を検証し、ディスクリプタのユーザ、パスワードを利用する。 クライアントIDの設定 プロキシセッション
IDプーリング
データベース資格証明の利用
データベース資格証明の利用 資格証明マッパーを使わずに、指定されたユーザとパスワードを直接利用する。 クライアントIDの設定
プロキシセッション
IDプーリング
ユーザ認証
マルチデータソース
クライアントIDの設定 接続に関連するクライアントIDプロパティを設定する(Oracle、DB2のみ) 全ての機能で利用可
プロキシセッション 接続に関連する軽量なプロキシユーザを設定する(Oracleのみ) クライアントIDの設定
データベース資格証明の利用
IDプーリング
ユーザ認証
IDプーリング 指定ユーザが保持する異種の接続プール クライアントIDの設定
データベース資格証明の利用
プロキシセッション
ユーザ認証
ラベリング
マルチデータソース
Active GridLink

これらすべての機能は、XAおよび非XAドライバの両方で使用可能であることに注意してください。
現時点では、プロキシ·セッションとデータベース資格情報の利用オプションは、管理コンソールの[データソースの構成]タブの[Oracle]タブにあります(おっと、たとえデータベース資格証明の利用機能はOracleデータベースだけのためでなくてもです)。残りの機能は、管理コンソールの[データソースの構成]タブの[ID]タブにあります(将来的には全て1カ所にまとめる予定です)。
後続の記事では、これらの機能についてより詳細に説明します。全体像を確認する場合はこの表にたち戻って下さい。

0 件のコメント:

コメントを投稿