Windows の分散トランザクション コーディネーター サービスの新機能

この記事では、Windows のセキュリティ関連の更新プログラムと変更と、それらが Microsoft 分散トランザクション コーディネーター (MS DTC) サービスにどのように影響するかについて説明します。

元の製品バージョン: Windows
元の KB 番号: 899191

概要

Windows Server 2003 Service Pack 1 (SP1) と Windows XP Service Pack 2 (SP2) 以降、一部のセキュリティ関連の更新プログラムと変更が Windows に導入され、MS DTC サービスに影響します。

これらの変更にアクセスするには、コンポーネント サービス管理ツールで使用できる更新された [セキュリティ構成] ダイアログ ボックスを使用します。

これらの変更は、DTC トラフィックがネットワークをフェールオーバーする原因となる既定のセキュリティ設定に対して行われます。 このような状況では、1 つ以上のエラー メッセージまたはエラー コードが表示される場合があります。

[ セキュリティ構成 ] ダイアログ ボックスの設定を変更すると、DTC サービスがネットワーク経由でリモート コンピューターと通信する方法を制御できます。

この記事では、次のオペレーティング システムの MS DTC サービスの新機能について説明します。

  • Windows Server 2003 Service Pack 1 (SP1)
  • Windows XP Service Pack 2 (SP2)
  • Windows Vista
  • Windows Server 2008
  • Windows 7
  • Windows Server 2008 R2
  • Windows 8
  • Windows Server 2012
  • Windows 8.1
  • Windows Server 2012 R2

DTC サービスは、トランザクションで保護された 2 つ以上のリソースを更新するトランザクションを調整します。 トランザクションで保護されたリソースには、データベース、メッセージ キュー、およびファイル システムが含まれます。 これらのトランザクションで保護されたリソースは、1 台のコンピューター上に配置することも、多くのネットワークコンピューター間で分散することもできます。

セキュリティ構成を使用してネットワーク通信を管理する

Windows では、DTC サービスを使用すると、コンピューター間のネットワーク通信をより詳細に制御できます。 既定では、すべてのネットワーク通信が無効になっています。 これらの通信設定を管理できるように、[DTC セキュリティ構成] ダイアログ ボックスが強化されました。 [ セキュリティ構成] ダイアログ ボックスを表示するには、次の手順に従います。

  1. コンポーネント サービス管理ツールを起動します。 これを行うには、[ スタート] を選択し、[ 実行] を選択 し、「dcomcnfg.exe」 と入力し、[ OK] を選択します
  2. コンポーネント サービス管理ツールのコンソール ツリーで、[ コンポーネント サービス] を展開し、[ コンピューター] を展開し、[ マイ コンピューター] を右クリックして、[プロパティ] を選択 します
  3. [ MSDTC ] タブを選択し、[ セキュリティ構成] を選択します。

セキュリティ構成の新しいオプション

次の情報では、[ セキュリティ構成] ダイアログ ボックスで使用できる新しいオプションについて説明します。 この情報では、[ セキュリティ構成 ] ダイアログ ボックスの新しいオプションの影響を受けるレジストリ エントリについても説明します。

ネットワーク DTC アクセス

[ネットワーク DTC アクセス チェック] ボックスを使用すると、DTC サービスがネットワークにアクセスできるかどうかを判断できます。 ネットワーク DTC トランザクションを有効にするには、[ネットワーク DTC アクセス チェック] ボックスを [ネットワーク DTC アクセス チェック] ボックスの下にある他のチェック ボックスの 1 つと一緒に選択する必要があります。

[ネットワーク DTC アクセス チェック] ボックスは、次のレジストリ エントリに影響します。

  • レジストリ パス: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
  • 値名: NetworkDtcAccess
  • 値の種類: REG_DWORD
  • 値データ: 0 (既定値)

注:

サーバー クラスターの [ネットワーク DTC アクセス チェック] ボックスは、MS DTC リソース レジストリ キーの共有クラスター レジストリ キーの値に影響します。 MS DTC の共有クラスターのレジストリ キーは、場所にあります HKEY_LOCAL_MACHINE\Cluster\Resources\<MSDTC resource GUID>

既定では、レジストリ エントリの NetworkDtcAccess 値は 0 に設定されています。 値 0 を指定すると、レジストリ エントリが NetworkDtcAccess オフになります。 レジストリ エントリを NetworkDtcAccess 有効にするには、このレジストリ値を 1 に設定します。

受信を許可する

[受信チェックを許可する] ボックスを使用すると、リモート コンピューターから発信された分散トランザクションをローカル コンピューターで実行できるかどうかを判断できます。 既定では、この設定はオフです。 この設定を有効にするには、[ネットワーク DTC Access チェック] ボックスをクリックして、次のレジストリ エントリを 1 に設定します。

  • レジストリ パス: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
  • 値名: NetworkDtcAccess
  • 値の種類: REG_DWORD

この設定を無効にするには、[ネットワーク DTC アクセス チェック] ボックスをオフにして、このレジストリ エントリを 0 に設定します。

[受信チェックを許可する] ボックスは、 の下の次のREG_DWORDレジストリ エントリHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Securityの両方に影響します。

  • NetworkDtcAccessTransactions
  • NetworkDtcAccessInbound

送信を許可する

[送信チェックを許可する] ボックスを使用すると、ローカル コンピューターがトランザクションを開始し、そのトランザクションをリモート コンピューターで実行できるかどうかを判断できます。 この設定を有効にするには、[ネットワーク DTC Access チェック] ボックスを選択して、次のレジストリ エントリを 1 に設定します。

  • レジストリ パス: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
  • 値名: NetworkDtcAccess
  • 値の種類: REG_DWORD

この設定を無効にするには、[ネットワーク DTC Access チェック] ボックスをオフにして、このレジストリ エントリを 0 に設定します。

[送信チェックを許可する] ボックスは、 の下の次のREG_DWORDレジストリ エントリHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Securityの両方に影響します。

  • NetworkDtcAccessTransactions
  • NetworkDtcAccessOutbound

相互認証が必要

[相互認証が必要] オプションは、Windows での相互認証のサポートを追加します。 [相互認証が必要] は 、現在ネットワーク通信に使用できる最大のセキュリティ モードを設定します。 このトランザクション モードは、Windows XP SP2 を実行しているクライアント コンピューターと、Windows Server 2003 SP1 を実行しているサーバー コンピューターに推奨されます。

[相互認証が必要] は 、 の下の次のレジストリ エントリに影響します HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC

  • レジストリ キー 1

    • 値名: AllowOnlySecureRpcCalls
    • 値の種類: REG_DWORD
    • 値のデータ: 1
  • レジストリ キー 2

    • 値名: FallbackToUnsecureRPCIfNecessary
    • 値の種類: REG_DWORD
    • 値のデータ: 0
  • レジストリ キー 3

    • 値名: TurnOffRpcSecurity
    • 値の種類: REG_DWORD
    • 値のデータ: 0

相互認証必須を使用して設定される機能は、着信呼び出し元認証の必須を使用して設定される機能とは異なります。 [トランザクション マネージャー通信] の下に表示される 3 つのオプションは、次のように動作します。

  • 相互認証が必要なトランザクション モードでは、ローカル コンピューターとの認証された接続を提供するために、リモートでアクセスするコンポーネントが必要です。 この認証は、ローカル コンピューターでの偽装によって検証されます。 さらに、2 つの DTC サービス間でリモート アクセス通信を実行する場合、この認証情報では、リモート トランザクション モード コンピューターのホスト名と一致するコンピューター アカウントを指定する必要があります。

  • 着信呼び出し元認証が必要なトランザクション モードでは、リモート接続の認証のみが必要です。 さらに、リモートでアクセスするコンポーネントが DTC サービスである場合、認証情報はコンピューター アカウント用である必要があります。

  • 認証不要トランザクション モードでは、認証された接続が検証されず、認証された接続が確立されているかどうかを確認できません。

クラスター環境では、DTC サービスのコンピューター アカウントによってクラスター ノードのホスト名が指定されます。 クラスター化された環境では、DTC 認証ではトランザクション モードのホスト名は使用されません。 クラスター環境では、トランザクション モードのホスト名は仮想サービスの名前です。 そのため、クラスター化された環境や、そのようなコンピューターとトランザクションをネゴシエートしているコンピューターでは、 相互認証必須 トランザクション モードを使用できません。 Windows Server 2003 SP1 を実行している 2 台の非クラスター化コンピューター間、または Windows XP SP2 を実行している 2 台のコンピューター間で、 相互認証が必要な トランザクション モードを使用できます。

クラスター環境の Windows Server 2003 ベースのコンピューター間で 、着信呼び出し元認証必須 トランザクション モードを使用します。

次の条件の 1 つ以上が当てはまる場合は、 認証不要 トランザクション モードを使用します。

  • ネットワーク アクセスは、Microsoft Windows 2000 を実行しているコンピューター間です。
  • ネットワーク アクセスは、相互信頼が構成されていない 2 つのドメイン間にあります。
  • ネットワーク アクセスは、作業グループのメンバーであるコンピューター間です。

着信呼び出し元認証が必要

着信呼び出し元認証が必要です 。ローカル DTC サービスは、暗号化されたメッセージのみを使用してリモート DTC サービスと通信する必要があります。 受信接続のみが認証されます。 この機能は、Windows Server 2003 SP1、Windows XP SP2、およびそれ以降のバージョンの Windows でのみサポートされています。 そのため、リモート DTC サービスが Windows Server 2003 SP1、Windows XP SP2、またはそれ以降のバージョンの Windows を実行しているコンピューターで実行されている場合にのみ、このオプションを有効にします。

[着信呼び出し元認証が必要] は 、 の下の次のレジストリ エントリに HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC影響します。

  • レジストリ キー 1

    • 値名: AllowOnlySecureRpcCalls
    • 値の種類: REG_DWORD
    • 値のデータ: 0
  • レジストリ キー 2

    • 値名: FallbackToUnsecureRPCIfNecessary
    • 値の種類: REG_DWORD
    • 値のデータ: 1
  • レジストリ キー 3

    • 値名: TurnOffRpcSecurity
    • 値の種類: REG_DWORD
    • 値のデータ: 0

着信呼び出し元認証が必要な詳細については、「相互認証が必要」セクションを参照してください。

認証は必要ありません

認証は必要ありません 。これにより、以前のバージョンの Windows オペレーティング システム間でオペレーティング システムの互換性が有効になります。 このオプションを有効にすると、DTC サービス間のネットワーク通信は、認証されていない通信や、セキュリティで保護された通信チャネルを確立できない場合は暗号化されていない通信にフォールバックできます。

注:

リモート DTC サービスが Microsoft Windows 2000 を実行しているコンピューター、または Windows XP SP2 より前のバージョンの Windows XP を実行しているコンピューターで実行されている場合は、この設定を使用することをお勧めします。

[ 認証不要 ] を使用して、信頼関係が確立されていないドメイン内のコンピューターで DTC サービスが実行されている状況を解決することもできます。 さらに、 認証不要 を使用して、作業グループのメンバーであるコンピューターで DTC サービスが実行されている状況を解決できます。

[認証不要] は 、 の下の次のレジストリ エントリに HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC影響します。

  • レジストリ キー 1

    • 値名: AllowOnlySecureRpcCalls
    • 値の種類: REG_DWORD
    • 値のデータ: 0
  • レジストリ キー 2

    • 値名: FallbackToUnsecureRPCIfNecessary
    • 値の種類: REG_DWORD
    • 値のデータ: 0
  • レジストリ キー 3

    • 値名: TurnOffRpcSecurity
    • 値の種類: REG_DWORD
    • 値のデータ: 1

注:

サーバー クラスターでは、これらのレジストリ エントリは共有クラスター レジストリにあります。

新しいオプションの重要性

[ セキュリティ構成] ダイアログ ボックスで使用できる新しいオプションを使用すると、発信または受信ネットワーク通信にセキュリティ設定を適用できます。 既定では、Windows をインストールした後、コンピューターはネットワーク トラフィックを受け入れません。 したがって、コンピューターは悪意のあるユーザーによるネットワーク アクセスに対して脆弱ではありません。 さらに、ネットワーク経由で送信されるプロトコルは、より安全に暗号化され、相互に認証された通信モードをサポートするように更新されます。 これにより、悪意のあるユーザーが DTC サービス間の通信を傍受して引き継ぐ可能性を減らすことができます。

Windows でのネットワーク通信の変更

DTC サービスから送信されるネットワーク通信または DTC サービスに送信されるネットワーク通信が無効になっています。 たとえば、COM+ オブジェクトが DTC トランザクションを使用してリモート コンピューター上にある Microsoft SQL Server データベースを更新しようとすると、このトランザクションは成功しません。 逆に、リモート コンピューターのコンポーネントが DTC トランザクションを使用してアクセスしようとするSQL Server データベースをコンピューターがホストしている場合、このトランザクションは成功しません。

DTC サービスに関連する問題を次に示します。

ネットワーク接続の問題が原因でトランザクションが失敗する

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリをバックアップおよび復元する方法の詳細については、「Windows でレジストリをバックアップおよび復元する方法」を参照してください。

ネットワーク接続の問題が原因で DTC トランザクションが失敗した場合は、[セキュリティ構成] ダイアログ ボックスで次のチェック ボックスをクリックして選択します。

  • [ネットワーク DTC Access チェック] ボックスをクリックして選択します。

  • [Transaction Manager Communication]\(トランザクション マネージャー通信\) の下にある次のチェック ボックスの一方または両方を、要件に応じてクリックして選択します。

    • 受信を許可する
    • 送信を許可する

Windows の一部としてこれらの設定をプログラムで変更する場合は、設定する設定に対応するレジストリ設定を直接変更できます。 レジストリ設定を変更した後、DTC サービスを再起動する必要があります。

これらの設定を変更するには、レジストリを手動で変更しないことをお勧めします。 これらのレジストリ設定を手動で変更すると、Windows Server 2003 SP1 ベースのサーバー クラスターのクラスター サービスに問題が発生する可能性があります。

Windows ファイアウォールによって DTC トラフィックがブロックされる

重要

これらの手順により、セキュリティ リスクが高まる可能性があります。 これらの手順により、コンピューターやネットワークが、悪意のあるユーザーやウイルスなどの悪意のあるソフトウェアによる攻撃に対して脆弱になる可能性もあります。 この記事で説明するプロセスは、プログラムが設計どおりに動作できるようにするため、または特定のプログラム機能を実装できるようにするために推奨されます。 これらの変更を行う前に、特定の環境でのこのプロセスの実装に関連するリスクを評価することをお勧めします。 このプロセスを実装する場合は、システムの保護に役立つ適切な追加の手順を実行します。 このプロセスを実際に必要とする場合にのみ、このプロセスを使用することをお勧めします。

Windows ファイアウォールを使用する場合は、Windows ファイアウォール設定の例外リストに DTC サービスを追加する必要があります。 これを行うには、次の手順を実行します。

  1. [ スタート] を選択 し、[実行] を選択 し、「firewall.cpl」と入力し、[OK] を選択 します
  2. [ Windows ファイアウォール ] ダイアログ ボックスで、[ 例外 ] タブを選択し、[ プログラムの追加] を選択します。
  3. [ 参照] を選択し、 を見つけて選択し、 C:\Windows\System32\msdtc.exe[ 開く] を選択します。
  4. [OK] を選択し、このチェック ボックスがまだ選択されていない場合は、[プログラムとサービス] の一覧で [msdtc.exeチェック] ボックスを選択し、[OK] を選択します

変更または追加される設定

次の表では、以前のバージョンの Windows から Windows XP SP2 以降に変更されたレジストリ エントリについて説明します。

エントリ名 場所 以前の既定値 Windows XP SP2 の既定値 使用可能な値
NetworkDtcAccess HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security 1 0 0 または 1
NetworkDtcAccessTransactions KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security 1 0 0 または 1
NetworkDtcAccessInbound HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security 該当なし 0 0 または 1
NetworkDtcAccessOutbound HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security 該当なし 0 0 または 1
AllowOnlySecureRpcCalls HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC 該当なし 1 0 または 1
FallbackToUnsecureRPCIfNecessary HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC 該当なし 0 0 または 1
TurnOffRpcSecurity HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC 該当なし 0 0 または 1

注:

これらの変更は、Windows Server 2003 SP1 ベースのサーバー クラスター上の共有クラスター レジストリに表示されます。

DTC サービスの変更に関連付けられているエラー コード

コンピューター間で DTC トランザクションを実行すると、次のいずれかのエラー コードが表示されることがあります。

  • エラー コード 1

    MessageId: XACT_E_NETWORK_TX_DISABLED
    MessageText:
    トランザクション マネージャーは、リモート/ネットワーク トランザクションのサポートを無効にしました。
    #define XACT_E_NETWORK_TX_DISABLED HRESULT_TYPEDEF(0x8004D024L)

  • エラー コード 2

    MessageId: XACT_E_PARTNER_NETWORK_TX_DISABLED
    MessageText:
    パートナー トランザクション マネージャーは、リモート/ネットワーク トランザクションのサポートを無効にしました。
    #define XACT_E_PARTNER_NETWORK_TX_DISABLED HRESULT_TYPEDEF(0x8004D025L)

適用対象

  • Windows Server 2012 R2
  • Windows 8.1
  • Windows 8
  • Windows 7
  • Windows Vista
  • Windows Server 2008
  • Windows Server 2003
  • Windows XP