プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Serverセキュリティの管理
12c (12.2.1.3.0)
E90347-06
目次へ移動
目次

前
次

27 RDBMSセキュリティ・ストアの管理

WebLogic Serverでは、認可プロバイダ、ロール・マッピング・プロバイダ、資格証明マッピング・プロバイダおよび証明書レジストリ・プロバイダ用のデータ・ストアとして外部のRDBMSを使用するためのオプションが用意されています。このデータ・ストアはRDBMSセキュリティ・ストアと呼ばれますが、クラスタなどのドメイン内の複数のWebLogic Server インスタンスでSAML 2.0サービスを使用する場合には強くお薦めします。

本番環境のSAML 2.0セキュリティ・プロバイダは、RDBMSセキュリティ・ストアを必要とします。これは、それらが管理するデータを、データを共有するすべてのWebLogic Serverインスタンスの間で同期できるようにするためです。(開発環境のみの場合は、SAML 2.0セキュリティ・プロバイダでセキュリティ・ストアとしてLDAPを使用します)。

ノート:

RDBMSセキュリティ・ストアを使用するには、まず、ドメインを作成して外部RDBMSサーバーを構成します。ドメインを起動する前に、RDBMSセキュリティ・ストアで必要になる表をデータストア内に作成します。WebLogic Serverインストール・ディレクトリには、サポート対象のデータベースごとに、これらの表を作成する一連のSQLスクリプトが含まれています。

この章は次のトピックで構成されます。

RDBMSセキュリティ・ストアとして機能する、WebLogic Serverでサポートされる特定のデータベース・システムの最新の詳細情報は、Oracle Technology NetworkのOracle Fusion Middlewareのサポートされるシステム構成ページを参照してください。

RDBMSセキュリティ・ストアを使用するセキュリティ・プロバイダ

一部のWebLogicセキュリティ・プロバイダでは、ドメイン内に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セキュリティ・ストアのJMSトピックの構成など、いくつかのタスクを実行する必要があります。

次の各トピックでは、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のデータベース接続プロパティを構成する方法を示します。

Oracleのサンプル

例27-1に、RDBMSセキュリティ・ストア用にOracleを構成するサンプルを示します。

例27-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') 
MS-SQLのサンプル

例27-2に、RDBMSセキュリティ・ストア用にMS-SQLを構成するサンプルを示します。

例27-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') 
DB2のサンプル

例27-3に、RDBMSセキュリティ・ストア用にDB2を構成するサンプルを示します。

ノート:

DB2を選択する場合は、WebLogic Serverで提供されているDB2用のWebLogicタイプ4 JDBCドライバを選択するオプションがあります。ただし、このJDBCドライバを使用する場合は、追加のプロパティBatchPerformanceWorkaroundを指定してtrueに設定する必要があります。この構成でBatchPerformanceWorkaroundtrueに設定しない場合、WebLogic Serverは起動に失敗し、SecurityServiceExceptionメッセージが生成されます。

例27-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実装で設定される属性に変換されます。

これらの属性の詳細は、以下のトピックを参照してください。

データベース接続のテスト

RDBMSセキュリティを構成するときは、接続の適切な設定を確認するためにデータベース接続をテストするように強くお薦めします。データベース接続に問題があると、ドメインへのアクセスを制御するセキュリティ・プロバイダが必要なセキュリティ・ポリシーを取得できない場合に、ドメインを起動できなくなる可能性があります。

セキュリティ・データ・ストア内でのRDBMS表の作成

ドメインを起動する前に、データベース管理者はRDBMSセキュリティ・ストアで使用されるデータベース内にRDBMS表を作成するSQLスクリプトを実行する必要があります。以下のWebLogic Serverインストール・ディレクトリには、サポートされる各RDBMSシステム用に、これらの表を作成および削除するための一連のSQLスクリプトが用意されています。

WL_HOME/server/lib 

RDBMSセキュリティ・ストアとして機能するデータベース用の該当するSQLスクリプトを実行するときは、必ず、ドメイン作成時にRDBMSに対して指定したものと同じ接続プロパティ(アクセスするユーザーの資格証明、データベースURLなど)を指定してください。

表27-1に、各SQLスクリプトの名前を示します。

表27-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

RDBMSセキュリティ・ストアのJMSトピックの構成

複数のWebLogic Serverインスタンスを含むドメイン、またはクラスタ内にRDBMSセキュリティ・ストアを構成する場合は、以下のタスクを実行することを強くお薦めします。

  1. そのドメインでJMS通知を有効にします。
  2. RDBMSセキュリティ・ストアで使用できるJMSトピックを構成します。

JMS通知を使用すると、RDBMSセキュリティ・ストアに格納され、レルム内のセキュリティ・プロバイダによって管理されるセキュリティ・データを、ドメイン内のすべてのサーバー・インスタンスにわたって同期化することができます。

ノート:

RDBMSセキュリティ・ストアが複数サーバーのドメインやクラスタリングされたドメインで構成されているときに、そのストアで使用できるJMSトピックを構成しない場合は、セキュリティ・ポリシーの作成やセキュリティ構成の更新を慎重に行う必要があります。JMSトピックを構成しない場合、セキュリティの更新内容に従ってすべてのサーバー・インスタンスが一貫して機能するにはドメインの再起動が必要になる可能性があります。

JMS通知を有効にするには、RDBMSセキュリティ・ストアが構成されているドメインを起動して、以下のいずれかの方法でRDBMSSecurityStoreMBeanの属性を構成します。

  • WebLogic Scripting Tool

  • WebLogic Server管理コンソールの「セキュリティ・レルム」「RealmName」「RDBMSセキュリティ・ストア」ページ

JMS通知を有効にするために設定する必要があるRDBMSSecurityStoreMBeanの属性について表27-2で説明します。

表27-2 JMSトピックを構成するためのRDBMSSecurityStoreMBeanの属性

属性名 説明
JMSTopic

通知のパブリッシュ先のJMSトピック、および他のJVMから送信される通知のサブスクライブ先のJMSトピック。ターゲットとなるJMSトピックはあらかじめデプロイされている必要があります。

JMSTopicConnectionFactory

JMSトピックを検索するために使用するjavax.jms.TopicConnectionFactoryインスタンスのJNDI名。

『Oracle WebLogic Server JMSリソースの管理』の接続ファクトリの構成に関するトピックでは、javax.jms.TopicConnectionFactoryインスタンスである、WebLogic JMS接続ファクトリweblogic.jms.ConnectionFactoryについて説明しています。接続ファクトリの構成については、このトピックを参照してください。

NotificationProperties

JNDI InitialContextの作成時に渡すキーと値のプロパティのカンマ区切りのリスト。形式はxxKey=xxValue, xxKey=xxValue。以下のプロパティを指定する必要があります。

  • java.naming.provider.url — 使用するサービス・プロバイダの構成情報を指定するためのプロパティ。このプロパティの値にはURL文字列を含める必要があります。たとえば:

    iiops://localhost:7002
  • java.naming.factory.initial — 使用する初期コンテキスト・ファクトリを指定するためのプロパティ。このプロパティの値は、初期コンテキストを作成するファクトリの完全修飾クラス名にします。たとえば:

    weblogic.jndi.WLInitialContextFactory
JNDIUserName

JNDIにアクセスするセキュリティ・レルム内の有効なユーザーのID。

JNDIPassword

JNDIUserName属性で指定したユーザー名のパスワード。

JMSExceptionReconnectAttempts

JMSシステムが深刻な接続エラーを検出した場合に試行される再接続の回数。デフォルトは0で、エラーはログに記録されるが再接続は試行されません。

次のトピックを参照してください。

障害発生時のJMS接続リカバリの構成

通常、複数ノード・ドメインの各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セキュリティ・ストアを使用しないセキュリティ・プロバイダのデータは、それらのプロバイダが通常デフォルトで使用するストアに自動的にインポートされます。

セキュリティ・レルムから別のセキュリティ・レルムに個々のセキュリティ・プロバイダを選択的に移行することもできます。ただし、RDBMSセキュリティ・ストアを使用するドメインにセキュリティ・データを移行する場合は、セキュリティ・レルムのデータを1回の操作で移行することをお薦めします。

セキュリティ・レルムの移行の詳細は、以下のトピックを参照してください。