プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server JTAアプリケーションの開発
12c (12.2.1)
E72527-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

7 ドメイン間およびドメイン内トランザクションのセキュアな通信の構成

次の項では、トランザクション時にサーバー間でセキュアな通信を構成する方法について説明します。

ドメイン間およびドメイン内トランザクションのセキュアな通信とは

分散トランザクションを管理するトランザクション・マネージャの場合、トランザクション・マネージャは、トランザクションを準備して、コミットまたはロールバックするためにすべての参加サーバーやリソースと通信できるようにしておく必要があります。通信チャネルの構成は、トランザクション・ルートが次のどちらであるかによって異なります。

  • ドメイン内 - トランザクション通信は、同じドメイン内のトランザクションに参加するサーバー間で行われます。セキュリティの相互運用モードを使用して、同じドメイン内のトランザクションに参加するサーバー間に、互換性のある通信チャネルを正しく構成する必要があります。「セキュリティの相互運用モード」を参照してください。

    参加サーバーを、defaultperformanceまたはcompatibilityのいずれかに設定します。

  • ドメイン間 - トランザクション通信は、同じドメイン内ではないトランザクションに参加するサーバー間で行われます。グローバル・トランザクションに参加するすべてのドメインについて、クロス・ドメイン・セキュリティまたはセキュリティの相互運用モードを使用し、互換性のある通信チャネルを適切に構成する必要があります。

通信チャネルは、悪質なサード・パーティがトランザクションの結果に影響を与える中間者攻撃を使用できず、1つ以上のドメイン間で管理制御を取得できないようにセキュアにしておく必要があります。

トランザクション通信の要件

トランザクション環境に通信チャネルを構成する場合、次の要件に注意してください。

  • ドメイン名およびすべての参加リソースの名前は一意でなければなりません。したがって、JDBCデータ・ソース、サーバー、またはドメインを、別のドメイン内や同じドメイン内のオブジェクトと同じ名前にすることはできません。

  • プロセスで使用されるすべてのドメインについて、クロス・ドメイン・セキュリティを構成するか、セキュリティの相互運用モードを設定します。どちらの設定もドメイン・レベルで設定されるため、ドメインがクロス・ドメイン・セキュリティとセキュリティの相互運用モードの両方が設定された混在モードになる可能性があります。

  • 中間者攻撃からトランザクションを保護するには、一方向SSLを構成して通信のセキュリティを強化します。

  • 次の2つの属性が両方とも次のように設定されているデータ・ソースは、グローバル・トランザクションには1つしか参加させることができません。この制約は、データ・ソースがどのドメインに構成されているかに関係なく適用されます。

    • 「ロギング・ラスト・リソース」または「2フェーズ・コミットのエミュレート」を選択しています。

    • データ・ソースで、非XAドライバを使用してデータベース接続を作成しています。


    注意:

    グローバル・トランザクションに複数のLLRまたはJTSリソースを参加させる場合は、命名の競合が原因となってグローバル・トランザクションが失敗します。

ドメイン間トランザクションに使用する通信を決定する方法

次の表を参考に、クロス・ドメイン・セキュリティまたはセキュリティの相互運用モードを使用するタイミングを決定します。

表7-1 チャネル構成の選択

チャネル構成 長所 短所

クロス・ドメイン・セキュリティ

  • 特定のユーザーがドメイン・ペア間の通信を確立するように構成されます。

  • SSLを使用する場合、中間者攻撃を防止します。

  • 構成がより複雑になります。

  • トランザクション・フローの変更(参加者、参加者ロール(コーディネータとリソースまたはサブコーディネータ)の変更、ドメインの追加や削除、トランザクション・ルートの変更など)には、構成の変更が必要です。

セキュリティの相互運用モード

  • 構成が非常に簡単です。

  • セキュリティの相互運用モードの構成時にトランザクション・フローを理解する必要はありません。

  • defaultモードで管理チャネルを使用すると、中間者攻撃の防止になります。

  • グローバル・トランザクションへの参加サーバーがあるすべてのドメインで、同じドメイン信頼が使用されます。これは、ドメイン・ペア間のみで信頼が確立されるクロス・ドメイン・セキュリティの場合より安全性が低くなります。

  • compatibilityに設定すると、ドメイン間信頼によって、ドメイン間での管理者権限が付与されます。つまり、ドメイン間で信頼が確立されている場合、ドメインAの管理者にはドメインBの管理者権限があります。

  • performanceに設定されている場合、ドメイン間のドメイン信頼の設定は必須ではありません。

  • 一部の構成では、中間者攻撃の可能性がわずかにあります。


セキュアなチャネル通信の構成

次の各項では、サーバー間でセキュアな通信チャネルを構成する方法を説明します。

セキュリティの相互運用モード

セキュリティの相互運用モードを使用すると、同一ドメイン内(ドメイン内)または別ドメイン内(ドメイン間)の参加者とのグローバル・トランザクションで、サーバー間に、互換性のある通信チャネルを構成できます。信頼は、あるWebLogic Serverインスタンスのサブジェクトのプリンシパルが別のインスタンスのプリンシパルとして受け入れられるよう、すべてのドメインのセキュリティ資格証明に同じ値を設定することで、トランザクションに参加するすべてのドメイン間で確立されます。「セキュリティの相互運用モード」の一部の設定はドメイン信頼に依存しており、安全性が低くなります。

次の手順に従って、セキュリティの相互運用モードを構成します。

  1. セキュリティの相互運用モードの構成

  2. ドメイン信頼を確立する

セキュリティの相互運用モードの構成

参加しているすべてのサーバーの「セキュリティの相互運用モード」パラメータを同じ値に設定する必要があります。

有効な値は次のとおりです。

  • 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コンテナには、クロス・ドメイン・セキュリティのソリューションは実装されていません。)

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

クロス・ドメイン・セキュリティを構成する際の重要な考慮事項

クロス・ドメイン・セキュリティを構成する際には、以下のガイドラインを考慮に入れてください。


注意:

ドメイン間通信のクロス・ドメイン・セキュリティを有効にしてあり、トランザクションに参加するWebLogicサーバーが同一ドメインにある場合は(ドメイン内通信)、トランザクション通信のため、セキュリティの相互運用モードをperformanceに設定することをお薦めします。

  • クロス・ドメイン・セキュリティでは、ドメイン信頼は必須ではありません。

  • トランザクションに参加するすべてのドメイン・ペアについて、資格証明マッパーを正しく構成する必要があります - CrossDomainConnectorセキュリティ・ロールに属する資格証明のセットを設定しなければなりません。資格証明マッピングが正しくないと、参加ドメイン間のトランザクションは失敗します。『Oracle WebLogic Serverセキュリティの管理 12c (12.2.1)』のクロス・ドメイン・セキュリティの資格証明マッピングの構成に関する項を参照してください。

  • クロス・ドメイン・セキュリティをサポートしない(またはクロス・ドメイン・セキュリティが無効になっている)WebLogicドメインと相互運用するには、それらのドメインを、クロス・ドメイン・セキュリティが有効になっているすべての参加WebLogic Serverドメインの「除外するドメイン名」リストに追加する必要があります。「除外するドメイン名」およびCrossDomainSecurityEnabledフラグの構成が、すべての参加ドメインで統一されていない場合、トランザクションのブランチは失敗します。

  • Cross Domain Security Enabledフラグが無効になっているか、ドメインがExcluded Domain Namesリストに含まれている場合は、セキュリティの相互運用モードを使って参加ドメインとの通信チャネルが確立されます。

  • クロス・ドメイン・セキュリティの有効化フラグが有効になっており、トランザクションに参加するリモートまたはローカルのサーバーがある場合は、リモート・サーバーとのRMI通信にはクロス・ドメイン・セキュリティが使用されますが、ローカル・ドメイン内の参加サーバーとのRMI通信にはセキュリティの相互運用モードが使用されます。

  • 「クロス・ドメイン・セキュリティの有効化」フラグの有効/無効の設定を切り替えると、しばらくの間トランザクションや他のリモート呼出しが失敗することがあります。トランザクションにおいてコミット・リクエストが失敗した場合は、構成の変更が完了した後にコミットが再試行されます。トランザクションのRMI呼出しが失敗した場合は、トランザクションがタイムアウトしてロールバックされます。ロールバックは、AbandonTimeoutSecondsが経過するまで再試行されます。

クロス・ドメイン・セキュリティは推移的ではない

トランザクションに参加する複数のサーバーでは、相互にクロス・ドメインの資格証明マッピングを設定します。ドメイン信頼とは異なり、クロス・ドメイン・セキュリティの構成は推移的ではありません。つまり、ABを信頼し、BCを信頼していても、それによってACを信頼しているということにはなりません。

以下のシナリオについて考察します。

  • DomainAにはServer1があります(コーディネータ)

  • DomainBにはServer2があります(サブコーディネータ)

  • DomainCにはServer3とServer4があります(Server3はサブコーディネータ)

  • DomainDにはServer5があります(トランザクションには参加しません)

このシナリオでクロス・ドメインの資格証明マッピングを設定するには、次の操作を行います。

  1. DomainAにおいてDomainBのクロス・ドメイン・セキュリティを設定します。

  2. DomainBにおいてDomainAのクロス・ドメイン・セキュリティを設定します。

  3. DomainAにおいてDomainCのクロス・ドメイン・セキュリティを設定します。

  4. DomainCにおいてDomainAのクロス・ドメイン・セキュリティを設定します。

  5. DomainBにおいてDomainCのクロス・ドメイン・セキュリティを設定します。

  6. DomainCにおいてDomainBのクロス・ドメイン・セキュリティを設定します。

DomainDはトランザクションに参加しないため、クロス・ドメインの資格証明マッピングを使用する必要はありません。ただし、「トランザクションへの参加に基づいて除外リストにドメインを追加する」にある、より詳細な説明を参照してください。

これらをわかりやすい形で表したのが、表7-2です。表のセルに「はい」と記されているのは、それに対応するドメインの組合せに対してクロス・ドメイン・セキュリティを構成する必要があることを表したものです。

表7-2 参加ドメインが3つの場合のクロス・ドメイン・セキュリティの設定

-- DomainA DomainB DomainC DomainD

DomainA

NA

はい

はい

いいえ

DomainB

はい

NA

はい

いいえ

DomainC

はい

はい

NA

いいえ

DomainD

いいえ

いいえ

いいえ

NA


その上でクロス・ドメイン・セキュリティの構成にDomainDを追加し、DomainEを追加しないでおいた場合は、クロス・ドメインの資格証明マップは表7-3のようになります。表のセルに「はい」と記されているのは、それに対応するドメインの組合せに対してクロス・ドメイン・セキュリティを構成する必要があることを表したものです。

表7-3 参加ドメインが5つの場合のクロス・ドメイン・セキュリティの設定


DomainA DomainB DomainC DomainD DomainE

DomainA

NA

はい

はい

はい

いいえ

DomainB

はい

NA

はい

はい

いいえ

DomainC

はい

はい

NA

はい

いいえ

DomainD

はい

はい

はい

NA

いいえ

DomainE

いいえ

いいえ

いいえ

いいえ

NA


トランザクションへの参加に基づいて除外リストにドメインを追加する

除外リストでは、クロス・ドメイン・セキュリティが構成されているドメインのサーバーと、クロス・ドメイン・セキュリティがサポートされていないか、有効になっていない別のドメインのサーバーがトランザクションに参加するためのメカニズムが提供されます。

クロス・ドメイン・セキュリティが構成されていないドメインのサーバーが、クロス・ドメイン・セキュリティが構成されているドメインのサーバーと一緒にトランザクションに参加する場合、クロス・ドメイン・セキュリティが構成されているドメインの除外リストに該当ドメインを追加します。「クロス・ドメイン・セキュリティを構成する場合の重要な考慮事項」の説明に従い、セキュリティの相互運用モードを使用して、参加ドメインの通信チャネルを確立します。

クロス・ドメイン・セキュリティが構成されているドメインすべての除外リストにドメインを追加する必要はありません。ただし、除外リストへ追加する必要があるケースでは、ドメインとのトランザクションへの参加を明示的に行う必要があります。


注意:

クロス・ドメイン・セキュリティが有効になっていないすべてのドメインの名前を除外ドメインのリストに追加するほうが便利です。トランザクションに参加しないドメインのみを除外する場合、トランザクションについてのみ除外すれば十分です。『Oracle WebLogic Serverセキュリティの管理 12c (12.2.1)』のクロス・ドメイン・セキュリティからのドメインの除外に関する項で説明されているように、クロス・ドメイン・セキュリティが有効になっていないすべてのドメインを除外するほうが、より一般的です。

以下のシナリオについて考察します。

  • トランザクション#1:

    • DomainAにはServer1があります(コーディネータ)

    • DomainBにはServer2があります(サブコーディネータ)

    • DomainCにはServer3とServer4があります(Server3はサブコーディネータ)

    • DomainDにはServer5があります(トランザクションには参加せず、クロス・ドメイン・セキュリティは構成されていません)

  • トランザクション#2:

    • DomainBにはServer6があります(コーディネータ)

    • DomainDにはServer5があります(サブコーディネータで、クロス・ドメイン・セキュリティは構成されていません)

この場合、トランザクション#2のためにDomainDをDomainBの除外リストに追加する必要があります。

DomainAおよびDomainCのサーバーとのトランザクションには参加していないため、これら2つのドメインの除外リストにはDomainDを含める必要はありません。

クロス・ドメイン・セキュリティと、セキュリティの相互運用モードの組合せの構成

トランザクションにリモート・ドメインとローカル・ドメインの両方の参加サーバーがある場合は、クロス・ドメイン・セキュリティとセキュリティの相互運用モードの両方を構成する必要があります。


注意:

ドメイン間通信については、これら両方が構成されている場合、必ずセキュリティの相互運用モードよりクロス・ドメイン・セキュリティが優先されます。トランザクション通信に管理チャネルが使用されるようにセキュリティの相互運用モードが設定されている場合は、ドメイン間通信にはクロス・ドメイン・セキュリティが使用されます。

次のケースについて検討します。

  1. Domain ADomain Bという2つのドメインがあり、それぞれに次のようなサーバーがあるとします。

    • Domain A: ServerA1ServerA2ServerA3

    • Domain B: ServerB1ServerB2ServerB3

  2. さらに、ServerA1ServerA2ServerB1ServerB3がグローバル・トランザクションに参加しているとします。

  3. Domain Aのセキュリティを次のように設定します。

    • クロス・ドメイン・セキュリティ: 有効化

    • セキュリティの相互運用モード: performance

    • グローバル信頼はなし

  4. Domain Bのセキュリティを次のように設定します。

    • クロス・ドメイン・セキュリティ: 有効化

    • セキュリティの相互運用モード: performance

    • グローバル信頼はなし

表7-4に、結果として発生するトランザクションがどのように実行されるかを示します。

表7-4 リモート・サーバーとローカル・サーバーによるトランザクション


ServerB1 ServerB3 ServerA1 ServerA2

ServerA1

クロス・ドメイン・セキュリティ

クロス・ドメイン・セキュリティ

NA

セキュリティの相互運用モード

ServerA2

クロス・ドメイン・セキュリティ

クロス・ドメイン・セキュリティ

セキュリティの相互運用モード

NA

ServerB1

NA

セキュリティの相互運用モード

クロス・ドメイン・セキュリティ

クロス・ドメイン・セキュリティ

ServerB3

セキュリティの相互運用モード

NA

クロス・ドメイン・セキュリティ

クロス・ドメイン・セキュリティ