[WLS] Data Source Security Part 2

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

Part 1では、デフォルトのセキュリティの振る舞いと、振る舞いを変更するために利用可能な様々なオプションをご紹介しました。理解する上でキモとなるトピックの一つは、直接データベースユーザとパスワードの値を使う場合と、WLSユーザとパスワードを関連するデータベースの値にマッピングする場合の違いです。データベースの資格証明の直接の利用は、お客様からのフィードバックに基づいてWLSに最近追加されたものです。この記事ではトレードオフをご紹介します。

資格証明のマッピング vs データベースの資格証明

各WLSデータソースには、キーをマップ、この場合WLSユーザをセキュリティ資格情報(ユーザとパスワード)マップするための機構である資格証明マップがあります。デフォルトでは、接続を取得するときにユーザ名とパスワードが指定されている場合、それらはWLSユーザのクレデンシャルとして扱われ、検証され、データソースに関連付けられている資格マップを使用して、データベースのユーザとパスワードに変換されます。一致するエントリがデータソースの資格証明マップで見つからない場合、データソース定義に関連付けられているユーザとパスワードが使用されます。このデフォルトの機構を考慮して、デフォルトのユーザにどの権限が付与されているか注意する必要があります。対して、無効なデフォルトユーザを定義して、偶然突破できないようにしておくことができます(この場合、プールの初期サイズとしてゼロに設定し、有効なユーザだけがプールに存在できるようにしておく必要があります)。
資格証明マップでエントリを作成するには…
  1. まず、WLSユーザを作成します。管理コンソールで、[セキュリティ・レルム]に移動してレルムを選択します(例:myrealm)。[ユーザーとグループ]>[ユーザー]を選択して、[新規]をクリックします。
  2. 次に、マップを作成します。管理コンソールで、[サービス]>[データ・ソース]からデータソースを選択し、[セキュリティ]>[資格証明マッピング]で[新規]をクリックします。詳細は以下のドキュメントをご覧下さい。
資格証明マッピングのメリットは以下の通りです。
  1. データベースユーザ、パスワードをプログラムにハードコーディングする必要がなく、WLSユーザやパスワードに加えてデータベースユーザ、パスワードを求められることがなくなる
  2. WLSセキュリティとデータベース設定の間に抽象化レイヤを提供するため、多くのWLS資格証明をより小さなデータベース資格証明とマッピングできる。それによって、WLSのユーザが追加されたり削除されたりした場合には、中間層の構成を更新するだけでよくなる。
データソースへのアクセス権を持つユーザの数を減らして、ユーザ保守のオーバーヘッドを減らすことができます。例えば、サーブレットが事前定義された、データソースへのアクセスのための特別なWLSユーザとパスワードを1個持っていて、getConnection(user, password)の呼び出しでコード中にハードコーディングされていると仮定しましょう。すべてのWebLogicユーザがサーブレットに記載されている特定のDBMSへのアクセスを享受することができますが、どのユーザもデータソースへの一般的なアクセス権を持っている必要がありません。例えば、そこに不正アクセスから保護する必要がある"Sales"というDBMSがあるとしましょう。しかし、そこには誰もが必要とするいくつかの日々のデータが含まれています。Salesデータソースは、アクセスを制限しており、サーブレットの中では接続要求に特定のデータソースアクセスの資格証明がハードコードされています。それは、その接続を使って任意の呼び出し元にのみ一般的に必要な日々の情報を配信します。サーブレットは、他のデータを明らかにすることはできませんし、WebLogicユーザは、データソースへの他のアクセスを取得できません。これは、多くの大規模なアプリケーションが取るアプローチで、WLSのデフォルトのマッピング動作の背景の論拠です。

資格証明マッピングのデメリットは以下の通りです。
  1. ユーザ数が多いと管理(作成、更新、削除)が難しい。WLSTスクリプトやカスタムJMXクライアントユーティリティを使って資格証明マップエントリを管理可能。
  2. 資格証明マップをデータソース間で共有できないため、重複する可能性が高い。
一部のアプリケーションでは、資格マップを使用せずに、getConnection(user, password)に渡される資格証明をデータベースの資格証明として扱い、(資格マップを通らずに)それを使ってデータベース接続の認証をする場合があります。これは、[データベース資格証明の使用]を有効にすると利用できます。詳細はOracle WebLogic Server管理コンソールのオンラインヘルプの [Oracleパラメータの構成]を参照してください。
Oracle Fusion Middleware Oracle WebLogic Server Administration Console Online Help 12c Release 1 (12.1.1)
Configure Oracle parameters
http://docs.oracle.com/cd/E24329_01/apirefs.1211/e24401/taskhelp/jdbc/jdbc_datasources/ConfigureOracleParameters.html
[データベース資格証明の使用]オプションは現在のところマルチデータソース構成をサポートしていません。有効にすると、次の属性について、汎用データソースとActive GridLink·データソースの資格証明マッピングをオフにします。
  1. [アイデンティティ・ベースの接続プールを有効化] (このオプションは10.3.6.0以後で利用可能)
  2. [Oracleプロキシ・セッション] (このオプションは10.3.6.0以後で利用可能)
  3. [接続時にクライアントIDを設定](このオプションは10.3.6以後で利用可能)。データーソーススキーマで、クライアントIDの設定機能は[資格証明マッピングを有効化]とわかりづらく命名されていることに注意して下さい(訳注:WLS12.1.1では[接続時にクライアントIDを設定]という表現になっています)。ドキュメントやコンソールでは[クライアントIDを設定]として言及しています。
資格証明マッピングの振る舞いとデータベース資格証明の利用についてまとめます。
  • 資格証明マップを使う場合、データベースにアクセスする必要があるユーザについてデータベースユーザに各WLSユーザをマッピングする必要がある。そうでない場合は、データソースのデフォルトのユーザを使用する。接続を取得する際に常にユーザ、パスワードを指定する場合は、そのような特定ユーザの資格マップエントリがだけを必要とする。
  • ユーザ、パスワードを指定せずにデータベースの資格情報を使う場合、デフォルトユーザとデータソースディスクリプタ内のパスワードを常に使用する。接続を取得するときにユーザ、パスワードを指定すると、そのユーザを資格情報のために使用する。WLSユーザはデータソース接続プロセスに一切関与しない。

0 件のコメント:

コメントを投稿