セキュアなドメイン間通信とドメイン内通信およびトランザクションの際のサーバー間でのセキュアな通信を構成する方法について学習します。
トランザクション通信では、参加サーバーが同じドメイン内にある場合、ドメイン内通信です。サーバーが同じドメイン内ではないトランザクションに参加している場合、それはドメイン間通信です。
分散トランザクションを管理するトランザクション・マネージャの場合、トランザクション・マネージャは、トランザクションを準備して、コミットまたはロールバックするためにすべての参加サーバーやリソースと通信できるようにしておく必要があります。通信チャネルの構成は、トランザクション・ルートが次のどちらであるかによって異なります。
ドメイン内 - トランザクション通信は、同じドメイン内のトランザクションに参加するサーバー間で行われます。セキュリティの相互運用モードを使用して、同じドメイン内のトランザクションに参加するサーバー間に、互換性のある通信チャネルを正しく構成する必要があります。「セキュリティの相互運用モード」を参照してください。
参加サーバーを、default
、performance
またはcompatibility
のいずれかに設定します。
ドメイン間 - トランザクション通信は、同じドメイン内ではないトランザクションに参加するサーバー間で行われます。グローバル・トランザクションに参加するすべてのドメインについて、クロス・ドメイン・セキュリティまたはセキュリティの相互運用モードを使用し、互換性のある通信チャネルを適切に構成する必要があります。
通信チャネルは、悪質なサード・パーティがトランザクションの結果に影響を与える中間者攻撃を使用できず、1つ以上のドメイン間で管理制御を取得できないようにセキュアにしておく必要があります。
トランザクション環境に通信チャネルを構成する場合の特定の要件があります。
ドメイン名およびすべての参加リソースの名前は一意でなければなりません。したがって、サーバーまたはドメインを、別のドメイン内や同じドメイン内のオブジェクトと同じ名前にすることはできません。
プロセスで使用されるすべてのドメインについて、クロス・ドメイン・セキュリティを構成するか、セキュリティの相互運用モードを設定します。どちらの設定もドメイン・レベルで設定されるため、ドメインがクロス・ドメイン・セキュリティとセキュリティの相互運用モードの両方が設定された混在モードになる可能性があります。
中間者攻撃からトランザクションを保護するには、一方向SSLを構成して通信のセキュリティを強化します。
次の2つの属性が両方とも次のように設定されているデータ・ソースは、グローバル・トランザクションには1つしか参加させることができません。この制約は、データ・ソースがどのドメインに構成されているかに関係なく適用されます。
「ロギング・ラスト・リソース」または「2フェーズ・コミットのエミュレート」を選択しています。
データ・ソースで、非XAドライバを使用してデータベース接続を作成しています。
注意:
グローバル・トランザクションに複数のLLRまたはJTSリソースを参加させる場合は、命名の競合が原因となってグローバル・トランザクションが失敗します。
次の表を参考に、クロス・ドメイン・セキュリティまたはセキュリティの相互運用モードを使用するタイミングを決定します。
表8-1 チャネル構成の選択
チャネル構成 | 長所 | 短所 |
---|---|---|
クロス・ドメイン・セキュリティ |
|
|
セキュリティの相互運用モード |
|
|
サーバー間でのセキュアな通信チャネルを構成する方法を学習します。
セキュリティの相互運用モード
を使用すると、同一ドメイン内(ドメイン内)または別ドメイン内(ドメイン間)の参加者とのグローバル・トランザクションで、サーバー間に、互換性のある通信チャネルを構成できます。信頼は、あるWebLogic Serverインスタンスのサブジェクトのプリンシパルが別のインスタンスのプリンシパルとして受け入れられるよう、すべてのドメインのセキュリティ資格証明に同じ値を設定することで、トランザクションに参加するすべてのドメイン間で確立されます。「セキュリティの相互運用モード」の一部の設定はドメイン信頼に依存しており、安全性が低くなります。
次の手順に従って、セキュリティの相互運用モードを構成します。
参加しているすべてのサーバーの「セキュリティの相互運用モード」
パラメータを同じ値に設定する必要があります。
有効な値は次のとおりです。
default - トランザクション・コーディネータでは、カーネルIDを使用して管理チャネル(有効になっている場合)を介して呼出しを行います。管理チャネルが構成されていない場合のセキュリティの相互運用モード
の動作は、performanceを使用する場合と同じになります。
performance - トランザクション・コーディネータでは、常にanonymous
を使用して呼出しを行います。このような設定では、悪質な第三者が中間者攻撃を試みてトランザクションの結果に影響を及ぼす可能性があるため、リモート・ドメイン内にあるサーバーとの通信時にセキュリティ上のリスクが生まれます。
compatibility - トランザクション・コーディネータでは、カーネルIDで非セキュアなチャネルを使用して呼出しを行います。このモードは、セキュリティの相互運用モード
をサポートしていないWebLogic Serverサーバーと対話する場合に必要です。中間者攻撃が成功すると、攻撃者は双方のドメインに対する管理制御権を得ることができるため、セキュリティ上のリスクが高くなります。この設定は、強固なネットワーク・セキュリティが設置されているときにのみ使用します。
参加サーバーのセキュリティの相互運用モード
を構成するには、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのセキュリティの相互運用モードの構成に関する項を参照してください。
注意:
ドメイン内のトランザクション通信に管理チャネルを使用する場合は、他のセキュリティ機能は提供されません。ドメイン内通信の場合は、セキュリティの相互運用モード
をperformanceに設定してください。
セキュリティの相互運用モード
の一部の設定については、ドメイン信頼を構成する必要があります。
すべての参加ドメインのセキュリティ資格証明を同じ値に設定することにより、ドメイン信頼を確立します。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのドメイン間の信頼の有効化に関する項を参照してください。
ドメイン信頼を確立すると、すべてのドメインで同じ資格証明が使用されます。環境内のドメインの1つが信頼されなくなった場合は、残りのすべてのドメインでドメイン信頼を再構成する必要があります。
注意:
セキュリティの相互運用モード
がperformance
に設定されている場合は、ドメイン間のドメイン信頼の設定は必要ありません。
クロス・ドメイン・セキュリティでは、資格証明マッパーを使用することで、グローバル・トランザクションにおけるリモート・サーバー間に、互換性のある通信チャネルを構成できます。トランザクションに参加するすべてのドメイン・ペアについて、資格証明マッパーを1つずつ構成します。各ドメイン・ペアには、CrossDomainConnector
セキュリティ・ロールに属する、異なる資格証明一式があります。
この場合、複雑な構成が必要になりますが、クロス・ドメイン・セキュリティを使用すると、各ドメイン間の信頼を調整できます。WebLogic Serverドメイン間のクロス・ドメイン・セキュリティに関する項で説明されているように、JMS、JTA、MDB、WANレプリケーションなどのサブシステムでは、クロス・ドメイン・セキュリティが実装されています。(EJBコンテナには、クロス・ドメイン・セキュリティのソリューションは実装されていません。)
次のトピックを参照してください。
『Oracle WebLogic Serverセキュリティの管理』のWebLogic Serverドメイン間のクロス・ドメイン・セキュリティの有効化に関する項
『Oracle WebLogic Serverセキュリティの管理』のクロス・ドメイン・セキュリティ用の資格証明マッピングの構成に関する項
クロス・ドメイン・セキュリティを構成する際には、以下のガイドラインを考慮に入れてください。
注意:
ドメイン間通信のクロス・ドメイン・セキュリティを有効にしてあり、トランザクションに参加するWebLogicサーバーが同一ドメインにある場合は(ドメイン内通信)、トランザクション通信のため、セキュリティの相互運用モードをperformanceに設定することをお薦めします。
クロス・ドメイン・セキュリティでは、ドメイン信頼は必須ではありません。
トランザクションに参加するすべてのドメイン・ペアについて、資格証明マッパーを正しく構成する必要があります - CrossDomainConnector
セキュリティ・ロールに属する資格証明のセットを設定しなければなりません。資格証明マッピングが正しくないと、参加ドメイン間のトランザクションは失敗します。『Oracle WebLogic Serverセキュリティの管理』のクロス・ドメイン・セキュリティ用の資格証明マッピングの構成に関する項を参照してください。
クロス・ドメイン・セキュリティをサポートしない(またはクロス・ドメイン・セキュリティが無効になっている)WebLogicドメインと相互運用するには、それらのドメインを、クロス・ドメイン・セキュリティが有効になっているすべての参加WebLogic Serverドメインの「除外するドメイン名」
リストに追加する必要があります。「除外するドメイン名」
およびCrossDomainSecurityEnabled
フラグの構成が、すべての参加ドメインで統一されていない場合、トランザクションのブランチは失敗します。
Cross Domain Security Enabled
フラグが無効になっているか、ドメインがExcluded Domain Names
リストに含まれている場合は、セキュリティの相互運用モードを使って参加ドメインとの通信チャネルが確立されます。
クロス・ドメイン・セキュリティの有効化
フラグが有効になっており、トランザクションに参加するリモートまたはローカルのサーバーがある場合は、リモート・サーバーとのRMI通信にはクロス・ドメイン・セキュリティが使用されますが、ローカル・ドメイン内の参加サーバーとのRMI通信にはセキュリティの相互運用モード
が使用されます。
「クロス・ドメイン・セキュリティの有効化」
フラグの有効/無効の設定を切り替えると、しばらくの間トランザクションや他のリモート呼出しが失敗することがあります。トランザクションにおいてコミット・リクエストが失敗した場合は、構成の変更が完了した後にコミットが再試行されます。トランザクションのRMI呼出しが失敗した場合は、トランザクションがタイムアウトしてロールバックされます。ロールバックは、AbandonTimeoutSeconds
が経過するまで再試行されます。
トランザクションに参加する複数のサーバーでは、相互にクロス・ドメインの資格証明マッピングを設定します。
ドメイン信頼とは異なり、クロス・ドメイン・セキュリティの構成は推移的ではありません。つまり、A
がB
を信頼し、B
がC
を信頼していても、それによってA
がC
を信頼しているということにはなりません。
以下のシナリオについて考察します。
DomainAにはServer1があります(コーディネータ)
DomainBにはServer2があります(サブコーディネータ)
DomainCにはServer3とServer4があります(Server3はサブコーディネータ)
DomainDにはServer5があります(トランザクションには参加しません)
このシナリオでクロス・ドメインの資格証明マッピングを設定するには、次の操作を行います。
DomainAにおいてDomainBのクロス・ドメイン・セキュリティを設定します。
DomainBにおいてDomainAのクロス・ドメイン・セキュリティを設定します。
DomainAにおいてDomainCのクロス・ドメイン・セキュリティを設定します。
DomainCにおいてDomainAのクロス・ドメイン・セキュリティを設定します。
DomainBにおいてDomainCのクロス・ドメイン・セキュリティを設定します。
DomainCにおいてDomainBのクロス・ドメイン・セキュリティを設定します。
DomainDはトランザクションに参加しないため、クロス・ドメインの資格証明マッピングを使用する必要はありません。ただし、「トランザクションへの参加に基づいて除外リストにドメインを追加する」にある、より詳細な説明を参照してください。
これらをわかりやすい形で表したのが、表8-2です。表のセルに「はい」と記されているのは、それに対応するドメインの組合せに対してクロス・ドメイン・セキュリティを構成する必要があることを表したものです。
表8-2 参加ドメインが3つの場合のクロス・ドメイン・セキュリティの設定
- | DomainA | DomainB | DomainC | DomainD |
---|---|---|---|---|
DomainA |
NA |
はい |
はい |
いいえ |
DomainB |
はい |
NA |
はい |
いいえ |
DomainC |
はい |
はい |
NA |
いいえ |
DomainD |
いいえ |
いいえ |
いいえ |
NA |
その上でクロス・ドメイン・セキュリティの構成にDomainDを追加し、DomainEを追加しないでおいた場合は、クロス・ドメインの資格証明マップは表8-3のようになります。表のセルに「はい」と記されているのは、それに対応するドメインの組合せに対してクロス・ドメイン・セキュリティを構成する必要があることを表したものです。
表8-3 参加ドメインが5つの場合のクロス・ドメイン・セキュリティの設定
- | DomainA | DomainB | DomainC | DomainD | DomainE |
---|---|---|---|---|---|
DomainA |
NA |
はい |
はい |
はい |
いいえ |
DomainB |
はい |
NA |
はい |
はい |
いいえ |
DomainC |
はい |
はい |
NA |
はい |
いいえ |
DomainD |
はい |
はい |
はい |
NA |
いいえ |
DomainE |
いいえ |
いいえ |
いいえ |
いいえ |
NA |
除外リストでは、クロス・ドメイン・セキュリティが構成されているドメインのサーバーと、クロス・ドメイン・セキュリティがサポートされていないか、有効になっていない別のドメインのサーバーがトランザクションに参加するためのメカニズムが提供されます。
クロス・ドメイン・セキュリティが構成されていないドメインのサーバーが、クロス・ドメイン・セキュリティが構成されているドメインのサーバーと一緒にトランザクションに参加する場合、クロス・ドメイン・セキュリティが構成されているドメインの除外リストに該当ドメインを追加します。「クロス・ドメイン・セキュリティを構成する場合の重要な考慮事項」の説明に従い、セキュリティの相互運用モードを使用して、参加ドメインの通信チャネルを確立します
クロス・ドメイン・セキュリティが構成されているドメインすべての除外リストにドメインを追加する必要はありません。ただし、除外リストへ追加する必要があるケースでは、ドメインとのトランザクションへの参加を明示的に行う必要があります。
注意:
クロス・ドメイン・セキュリティが有効になっていないすべてのドメインの名前を除外ドメインのリストに追加するほうが便利です。トランザクションに参加しないドメインのみを除外する場合、トランザクションについてのみ除外すれば十分です。『Oracle WebLogic Serverセキュリティの管理』のクロス・ドメイン・セキュリティからのドメインの除外に関する項で説明されているように、クロス・ドメイン・セキュリティが有効になっていないすべてのドメインを除外するほうが、より一般的です。以下のシナリオについて考察します。
トランザクション#1:
DomainAにはServer1があります(コーディネータ)
DomainBにはServer2があります(サブコーディネータ)
DomainCにはServer3とServer4があります(Server3はサブコーディネータ)
DomainDにはServer5があります(トランザクションには参加せず、クロス・ドメイン・セキュリティは構成されていません)
トランザクション#2:
DomainBにはServer6があります(コーディネータ)
DomainDにはServer5があります(サブコーディネータで、クロス・ドメイン・セキュリティは構成されていません)
この場合、トランザクション#2のためにDomainDをDomainBの除外リストに追加する必要があります。
DomainAおよびDomainCのサーバーとのトランザクションには参加していないため、これら2つのドメインの除外リストにはDomainDを含める必要はありません。
トランザクションにリモート・ドメインとローカル・ドメインの両方の参加サーバーがある場合は、クロス・ドメイン・セキュリティとセキュリティの相互運用モードの両方を構成する必要があります。
注意:
ドメイン間通信については、これら両方が構成されている場合、必ずセキュリティの相互運用モードよりクロス・ドメイン・セキュリティが優先されます。トランザクション通信に管理チャネルが使用されるようにセキュリティの相互運用モードが設定されている場合は、ドメイン間通信にはクロス・ドメイン・セキュリティが使用されます。
次のケースについて検討します。
Domain A
とDomain B
という2つのドメインがあり、それぞれに次のようなサーバーがあるとします。
Domain A
: ServerA1
、ServerA2
、ServerA3
Domain B
: ServerB1
、ServerB2
、ServerB3
さらに、ServerA1
、ServerA2
、ServerB1
、ServerB3
がグローバル・トランザクションに参加しているとします。
Domain A
のセキュリティを次のように設定します。
クロス・ドメイン・セキュリティ: 有効化
セキュリティの相互運用モード: performance
グローバル信頼はなし
Domain B
のセキュリティを次のように設定します。
クロス・ドメイン・セキュリティ: 有効化
セキュリティの相互運用モード: performance
グローバル信頼はなし
表8-4に、結果として発生するトランザクションがどのように実行されるかを示します。
表8-4 リモート・サーバーとローカル・サーバーによるトランザクション
- | ServerB1 | ServerB3 | ServerA1 | ServerA2 |
---|---|---|---|---|
ServerA1 |
クロス・ドメイン・セキュリティ |
クロス・ドメイン・セキュリティ |
NA |
セキュリティの相互運用モード |
ServerA2 |
クロス・ドメイン・セキュリティ |
クロス・ドメイン・セキュリティ |
セキュリティの相互運用モード |
NA |
ServerB1 |
NA |
セキュリティの相互運用モード |
クロス・ドメイン・セキュリティ |
クロス・ドメイン・セキュリティ |
ServerB3 |
セキュリティの相互運用モード |
NA |
クロス・ドメイン・セキュリティ |
クロス・ドメイン・セキュリティ |