RDBMSセキュリティ・ストアと呼ばれるこのデータ・ストアを本番環境で使用すると、SAML 2.0セキュリティ・プロバイダで管理するデータを、それらを共有するすべてのWebLogic Serverインスタンスの間で同期させることができます。(開発環境のみの場合は、SAML 2.0セキュリティ・プロバイダでセキュリティ・ストアとしてLDAPを使用します)。
注意:
RDBMSセキュリティ・ストアを使用するには、まず、ドメインを作成して外部RDBMSサーバーを構成します。ドメインを起動する前に、RDBMSセキュリティ・ストアで必要になる表をデータストア内に作成します。WebLogic Serverインストール・ディレクトリには、サポート対象のデータベースごとに、これらの表を作成する一連のSQLスクリプトが含まれています。
この章は次のトピックで構成されます。
RDBMSセキュリティ・ストアとして機能する、WebLogic Serverでサポートされる特定のデータベース・システムの最新の詳細情報は、Oracle Technology NetworkのOracle Fusion Middlewareのサポートされるシステム構成ページを参照してください。
以下のセキュリティ・プロバイダは、ドメイン内にRDBMSセキュリティ・ストアが構成されている場合は、そのストアを使用します。
XACML認可プロバイダ
XACMLロール・マッピング・プロバイダ
SAML 1.1の以下のプロバイダ
SAML IDアサーション・プロバイダV2
SAML資格証明マッピング・プロバイダV2
SAML 2.0の以下のプロバイダ
SAML 2.0 IDアサーション・プロバイダ
SAML 2.0資格証明マッピング・プロバイダ
WebLogic資格証明マッピング・プロバイダ
PKI資格証明マッピング・プロバイダ
証明書レジストリ
ドメイン内にRDBMSセキュリティ・ストアが構成されている場合、セキュリティ・レルム内に作成されている上記のいずれかのセキュリティ・プロバイダのインスタンスは、自動的にRDBMSセキュリティ・ストアのみをデータストアとして使用し、組込みLDAPサーバーは使用しません。ドメイン内に構成されている上記のリスト以外のWebLogicセキュリティ・プロバイダは、それぞれのデフォルト・ストアを使用します。たとえば、デフォルト認証プロバイダは組込みLDAPサーバーを使用します。
RDBMSセキュリティ・ストアはドメインの作成時に構成することをお薦めします。WebLogic ServerにはRDBMSSecurityStoreMBean
が用意されています。これはWebLogic Scripting Tool (WLST)からRDBMSセキュリティ・ストアを構成するためのインタフェースです。(構成ウィザードには、RDBMSセキュリティ・ストアを構成する機能はありません。)
ドメインでRDBMSセキュリティ・ストアを作成して構成するには、以下の節で説明するタスクを完了します。
ドメインでRDBMSセキュリティ・ストアを使用するには、ドメインの作成時にRDBMSセキュリティ・ストアを構成することをお薦めします。RDBMSセキュリティ・ストアを使用するように既存のドメインを変更することはできますが、データベース接続が正しく構成されていない場合、ドメインへのアクセスを許可するために必要なポリシーが使用できず、ドメインを使用できなくなる可能性があるため、お薦めしません。
RDBMSセキュリティ・ストアを構成するには、WebLogic Scripting Tool (WLST)をオフラインで使用します。(構成ウィザードには、RDBMSセキュリティ・ストアを構成する機能はありません。)RDBMSセキュリティ・ストアを作成および構成するためのオプションはRDBMSSecurityStoreMBean
で提供されています。
また、次の項で説明するように、RDBMSセキュリティ・ストアとして機能するデータベースの接続プロパティを構成する必要があります。
RDBMSセキュリティ・ストアを構成するときに、次の項目を指定する必要があります。
RDBMSのタイプ
RDBMSセキュリティ・ストアを含むことをサポートされるデータベースの詳細は、Oracle Technology NetworkのOracle Fusion Middlewareのサポートされるシステム構成を参照してください。
RDBMSに接続するためのJDBCドライバとクラス名
RDBMSの名前、ホスト、ポート、およびURL
RDBMSシステムにアクセスできるドメイン・ユーザーのユーザー名とパスワード
注意:
この項で提供されるWLSTの例では、わかりやすいように、RDBMSシステム・ユーザーのユーザー名とパスワードの資格証明をクリア・テキストで渡しています。通常はWLSTコマンドにクリア・テキストのパスワードを入力しないでください。特に、クリア・テキストのパスワードが含まれるWLSTスクリプトをディスクに保存することは避けてください。このような状況では、暗号化されたパスワードを渡すメカニズムをかわりに使用する必要があります。
RDBMSシステムに渡す必要のある任意のプロパティ(オプション)
JDBCドライバの接続プロパティ属性で指定するパラメータはカンマ区切りのリストにする必要があります。
以下のサンプルでは、WLSTを使用してOracle、MS-SQL、およびDB2のデータベース接続プロパティを構成する方法を示します。
例26-1に、RDBMSセキュリティ・ストア用にOracleを構成するサンプルを示します。
例26-1 RDBMSセキュリティ・ストア用のOracleの構成
create('base_domain','SecurityConfiguration') cd('/SecurityConfiguration/base_domain') a=get('DefaultRealm') cd('Realm/myrealm') rdbms = create("myRDBMSSecurityStore", "RDBMSSecurityStore") rdbms.setUsername('user1') rdbms.setPasswordEncrypted('password') rdbms.setConnectionURL('jdbc:oracle:thin:@hostname.domain:port:sid') rdbms.setDriverName('oracle.jdbc.OracleDriver') rdbms.setConnectionProperties('user=user1,portNumber=1521,SID=yoursid,serverName=hostname.domain')
例26-2に、RDBMSセキュリティ・ストア用にMS-SQLを構成するサンプルを示します。
例26-2 RDBMSセキュリティ・ストア用のMS-SQLの構成
create('base_domain','SecurityConfiguration')
cd('/SecurityConfiguration/base_domain')
a=get('DefaultRealm')
cd('Realm/myrealm')
rdbms = create("myRDBMSSecurityStore", "RDBMSSecurityStore")
rdbms.setUsername('garnett')
rdbms.setPassword('password')
rdbms.setConnectionURL('jdbc:bea:sqlserver://avitek6:1433')
rdbms.setDriverName('weblogic.jdbc.sqlserver.SQLServerDriver')
rdbms.setConnectionProperties('user=garnett,portNumber=1433,databaseName=wls3,serverName=avitek6')
例26-3に、RDBMSセキュリティ・ストア用にDB2を構成するサンプルを示します。
注意:
DB2を選択する場合は、WebLogic Serverで提供されているDB2用のWebLogicタイプ4 JDBCドライバを選択するオプションがあります。ただし、このJDBCドライバを使用する場合は、追加のプロパティBatchPerformanceWorkaround
を指定してtrue
に設定する必要があります。この構成でBatchPerformanceWorkaround
をtrue
に設定しない場合、WebLogic Serverは起動に失敗し、SecurityServiceExceptionメッセージが生成されます。
例26-3 RDBMSセキュリティ・ストア用のDB2の構成
create('base_domain','SecurityConfiguration')
cd('/SecurityConfiguration/base_domain')
a=get('DefaultRealm')
cd('Realm/myrealm')
rdbms = create("myRDBMSSecurityStore", "RDBMSSecurityStore")
rdbms.setUsername('brady')
rdbms.setPassword('password')
rdbms.setConnectionURL('jdbc:bea:db2://avitek3:50000')
rdbms.setDriverName('weblogic.jdbc.db2.DB2Driver')
rdbms.setConnectionProperties('user=brady,portNumber=50000,databaseName=wls,serverName=avitek3,batchPerformanceWorkaround=true')
DB2用のWebLogic Type 4 JDBCドライバの接続プロパティの指定の詳細は、『Oracle WebLogic Server JDBCアプリケーションの開発』のDataDirectドキュメントの使用に関する項を参照してください。
RDBMSセキュリティ・ストアは、内部的にはDB2用のWebLogic Type 4 JDBCドライバを使用してデータベースに接続してやり取りします。RDBMSSecurityStoreMBean
で設定された属性はjavax.sql.DataSource
実装で設定される属性に変換されます。
これらの属性の詳細は、以下のトピックを参照してください。
RDBMSSecurityStoreMBean
で設定できる属性の詳細は、Oracle WebLogic Server MBeanリファレンスのRDBMSSecurityStoreMBeanに関する項を参照してください。
ドメインを起動する前に、データベース管理者はRDBMSセキュリティ・ストアで使用されるデータベース内にRDBMS表を作成するSQLスクリプトを実行する必要があります。以下のWebLogic Serverインストール・ディレクトリには、サポートされる各RDBMSシステム用に、これらの表を作成および削除するための一連のSQLスクリプトが用意されています。
WL_HOME/server/lib
RDBMSセキュリティ・ストアとして機能するデータベース用の該当するSQLスクリプトを実行するときは、必ず、ドメイン作成時にRDBMSに対して指定したものと同じ接続プロパティ(アクセスするユーザーの資格証明、データベースURLなど)を指定してください。
表26-1に、各SQLスクリプトの名前を示します。
表26-1 RDBMSデータ・ストア表を作成および削除するためのSQLスクリプト
RDBMSシステム | データ・ストア表の作成 | データ・ストア表の削除 |
---|---|---|
Oracle 9i、10g、11g |
rdbms_security_store_oracle.sql |
rdbms_security_store_oracle_remove.sql |
MS-SQL 2000、2005 |
rdbms_security_store_sqlserver.sql |
rdbms_security_store_sqlserver_remove.sql |
DB2 9.2、9.5 |
rdbms_security_store_db2.sql |
rdbms_security_store_db2_remove.sql |
Derby |
rdbms_security_store_derby.sql |
rdbms_security_store_derby_remove.sql |
複数のWebLogic Serverインスタンスを含むドメイン、またはクラスタ内にRDBMSセキュリティ・ストアを構成する場合は、以下のタスクを実行することを強くお薦めします。
JMS通知を使用すると、RDBMSセキュリティ・ストアに格納され、レルム内のセキュリティ・プロバイダによって管理されるセキュリティ・データを、ドメイン内のすべてのサーバー・インスタンスにわたって同期化することができます。
注意:
RDBMSセキュリティ・ストアが複数サーバーのドメインやクラスタリングされたドメインで構成されているときに、そのストアで使用できるJMSトピックを構成しない場合は、セキュリティ・ポリシーの作成やセキュリティ構成の更新を慎重に行う必要があります。JMSトピックを構成しない場合、セキュリティの更新内容に従ってすべてのサーバー・インスタンスが一貫して機能するにはドメインの再起動が必要になる可能性があります。
JMS通知を有効にするには、RDBMSセキュリティ・ストアが構成されているドメインを起動して、以下のいずれかの方法でRDBMSSecurityStoreMBean
の属性を構成します。
WebLogic Scripting Tool
WebLogic Server管理コンソールの「セキュリティ・レルム」→「RealmName」→「RDBMSセキュリティ・ストア」ページ
JMS通知を有効にするために設定する必要があるRDBMSSecurityStoreMBean
の属性について表26-2で説明します。
表26-2 JMSトピックを構成するためのRDBMSSecurityStoreMBeanの属性
属性名 | 説明 |
---|---|
JMSTopic |
通知のパブリッシュ先のJMSトピック、および他のJVMから送信される通知のサブスクライブ先のJMSトピック。ターゲットとなるJMSトピックはあらかじめデプロイされている必要があります。 |
JMSTopicConnectionFactory |
JMSトピックを検索するために使用する 『Oracle WebLogic Server JMSリソースの管理』の接続ファクトリの構成に関するトピックでは、 |
NotificationProperties |
JNDI InitialContextの作成時に渡すキーと値のプロパティのカンマ区切りのリスト(形式はxx
|
JNDIUserName |
JNDIにアクセスするセキュリティ・レルム内の有効なユーザーのID。 |
JNDIPassword |
|
JMSExceptionReconnectAttempts |
JMSシステムが深刻な接続エラーを検出した場合に試行される再接続の回数。デフォルトは0で、エラーはログに記録されるが再接続は試行されません。 |
詳細は、以下のトピックを参照してください。
Oracle WebLogic Server管理コンソール・オンライン・ヘルプのトピックの構成に関する項
『Oracle WebLogic Server JMSリソースの管理』の基本JMSシステム・リソースの構成に関する項
Oracle WebLogic Server管理コンソール・オンライン・ヘルプのRDBMSセキュリティ・ストアの構成に関する項
Oracle WebLogic Server MBeanリファレンスのRDBMSSecurityStoreMBeanに関する項
通常、複数ノード・ドメインの各WebLogic Serverインスタンスに含まれているWebLogicセキュリティ・サービスは起動時にJMSサーバーに接続します。RDBMSセキュリティ・ストアを使用するセキュリティ・プロバイダがセキュリティ・データを変更した場合は、JMSを介してすべてのWebLogic Serverインスタンスに通知され、各WebLogic ServerインスタンスのWebLogicセキュリティ・サービスで使用されているローカル・キャッシュは、その変更を反映するために同期化されます。
正常に起動されたWebLogic ServerインスタンスでJMS接続が失敗すると、そのサーバー・インスタンスに関連付けられたWebLogicセキュリティ・サービスはJMS接続のリカバリ・プロセスを開始します。リカバリ・プロセスでは次の再接続の試行までに1秒間スリープします。JMSExceptionReconnectAttempts
プロパティで構成された再接続の試行回数に達した後もJMS接続エラーが続く場合、リカバリ・プロセスは停止します。再接続はそれ以上試行されません。つまり、あるWebLogic Serverインスタンスでセキュリティ・データが変更されても、他のWebLogic ServerインスタンスのWebLogicセキュリティ・サービスで管理されているローカル・キャッシュはその変更を反映するために同期化されません。ただし、他の手段(サーバーの再起動など)でJMS接続が正常に回復されると、それらのキャッシュは同期化されます。
WebLogic Serverインスタンスの起動時にJMS接続が正常に開始されない場合は、再接続を試行するタイマー・タスクが自動的に開始されます。接続が正常に行われると、タイマー・タスクは取り消されます。このタイマー・タスクに関する2つのシステム・プロパティを構成できます。
com.bea.common.security.jms.initialConnectionRecoverInterval
接続リカバリ・タスクを実行するまでの遅延を指定します(ミリ秒単位)。デフォルト値は1000で、接続リカバリ・プロセスは1秒間遅延した後に実行されます。
com.bea.common.security.jms.initialConnectionRecoverAttempts
タイマー・タスクを取り消すまでに試行される再接続の最大回数を指定します。デフォルト値は3600で、再接続が3600回試行されるとタイマー・タスクは取り消されます。それ以上の再接続は試行されません。
上記のシステム・プロパティで指定した値を掛け合わせると、接続ポーリングの最大期間を計算できます。たとえば、2つのプロパティのデフォルト値を掛け合わせると(1000ミリ秒の遅延に3600回の再接続試行回数を掛ける)、最大ポーリング期間は1時間となります。
RDBMSセキュリティ・ストアを使用するドメインをアップグレードするには、RDBMSセキュリティ・ストアを構成した新しいドメインを作成することをお薦めします。新しいドメインを作成した後で、古いドメインのセキュリティ・レルムからセキュリティ・データをエクスポートして、新しいドメインのセキュリティ・レルムにインポートする必要があります。RDBMSセキュリティ・ストアを使用するドメインのセキュリティ・レルムにセキュリティ・データをインポートすると、RDBMSセキュリティ・ストアを使用するセキュリティ・プロバイダのデータは、自動的にそのデータ・ストアにロードされます。RDBMSセキュリティ・ストアを使用しないセキュリティ・プロバイダのデータは、それらのプロバイダが通常デフォルトで使用するストアに自動的にインポートされます。
セキュリティ・レルムから別のセキュリティ・レルムに個々のセキュリティ・プロバイダを選択的に移行することもできます。ただし、RDBMSセキュリティ・ストアを使用するドメインにセキュリティ・データを移行する場合は、セキュリティ・レルムのデータを1回の操作で移行することをお薦めします。
セキュリティ・レルムの移行の詳細は、以下のトピックを参照してください。
Oracle WebLogic Server管理コンソール・オンライン・ヘルプのセキュリティ・レルムからのデータのエクスポートに関する項およびセキュリティ・レルムへのデータのインポートに関する項