Windows 中的分布式事务处理协调器服务中的Windows

本文介绍一Windows安全性相关的更新和更改,以及这些更改对 MS DTC (Microsoft 分布式事务处理协调器) 的影响。

原始产品版本:  Windows
原始 KB 编号:   899191

摘要

从 Windows Server 2003 Service Pack 1 (SP1) 和 Windows XP Service Pack 2 (SP2) 开始,Windows 引入了一些与安全相关的更新和更改,并影响 MS DTC 服务。

可以使用组件服务管理工具中提供的更新后的安全配置对话框来访问这些更改。

对导致 DTC 流量通过网络进行故障转移的默认安全设置进行了这些更改。 在这种情况下,您可能会收到一条或多条错误消息或错误代码。

通过修改" 安全配置" 对话框中的设置,可以帮助控制 DTC 服务如何通过网络与远程计算机通信。

本文介绍以下操作系统中 MS DTC 服务中的新功能:

  • WindowsServer 2003 Service Pack 1 (SP1)
  • WindowsXP 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 服务协调更新两个或多个受事务保护的资源的事务。 受事务保护的资源包括数据库、邮件队列和文件系统。 这些受事务保护的资源可能位于一台计算机上,也可能分布在许多网络计算机上。

使用安全配置管理网络通信

在Windows中,DTC 服务可让你更加控制计算机之间的网络通信。 默认情况下,禁用所有网络通信。 DTC 安全配置 对话框已增强,以便你可以管理这些通信设置。 若要查看" 安全配置" 对话框,请按照以下步骤操作:

  1. 启动组件服务管理工具。 为此,请选择"开始",选择 " 运行 ",dcomcnfg.exe, 然后选择"确定 "。
  2. 在"组件服务"管理工具的控制台树中,展开"组件服务",展开"计算机",右键单击"我的 计算机",然后选择"属性"。
  3. 选择 "MSDTC" 选项卡,然后选择"安全配置"。

安全配置中的新选项

以下信息介绍了"安全配置"对话框中 提供的新 选项。 此信息还介绍了受"安全配置"对话框中新选项 影响的注册表 项。

网络 DTC 访问

通过 "网络 DTC 访问 "复选框,可以确定 DTC 服务是否可以访问网络。 必须 选中"网络 DTC 访问 "复选框以及"网络 DTC 访问"复选框下的其他复选框之一,才能启用网络 DTC 事务。

" 网络 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 访问 "复选框,将以下注册表项设置为 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 访问 "复选框,将以下注册表项设置为 1:

  • 注册表路径: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
  • 值名称: NetworkDtcAccess
  • 值类型:REG_DWORD

若要禁用此设置,请清除" 网络 DTC 访问 "复选框,以将此注册表项设置为 0。

" 允许出站 "复选框会影响以下两REG_DWORD注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security

  • NetworkDtcAccessTransactions
  • NetworkDtcAccessOutbound

需要相互身份验证

The Mutual Authentication Required option adds support for mutual authentication in Windows. 相互身份验证 必需 设置当前可用于网络通信的最大安全模式。 对于运行 XP SP2 的客户端计算机和运行 Windows Server 2003 SP1 的服务器计算机,我们建议Windows此事务模式。

相互身份验证 必需 会影响以下注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC

  • 注册表项 1

    • 值名称: AllowOnlySecureRpcCalls
    • 值类型:REG_DWORD
    • 值数据:1
  • 注册表项 2

    • 值名称: FallbackToUnsecureRPCIfNecessary
    • 值类型:REG_DWORD
    • 值数据:0
  • 注册表项 3

    • 值名称: TurnOffRpcSecurity
    • 值类型:REG_DWORD
    • 值数据:0

使用"必需相互身份验证"设置的功能与使用"所需的传入呼叫者身份验证 "设置的功能不同。 事务管理器"通信 "下列出的 三个选项的行为如下所示:

  • The Mutual Authentication Required transaction mode requires the remotely accessing component to provide an authenticated connection with the local computer. 在本地计算机上通过模拟验证此身份验证。 此外,如果在两个 DTC 服务之间执行远程访问通信,则此身份验证信息必须指定与远程事务模式计算机的主机名匹配的计算机帐户。

  • The Incoming Caller Authentication Required transaction mode only requires the remote connection to be authenticated. 此外,如果远程访问组件是 DTC 服务,则身份验证信息必须为计算机帐户。

  • " 不需要身份验证 "事务模式不验证已验证的连接或验证是否已建立经过身份验证的连接。

在群集环境中,DTC 服务的计算机帐户指定群集节点的主机名。 在群集环境中,DTC 身份验证不使用事务模式的主机名。 在群集环境中,事务模式的主机名是虚拟服务的名称。 因此,不能在 群集环境中或在 与此类计算机协商事务的任何计算机上使用"需要相互身份验证"事务模式。 您可以在两台运行Windows Server 2003 SP1 的非群集计算机之间或在两台运行 Windows XP SP2 的计算机之间使用相互身份验证所需的事务模式。

在群集 环境中,在基于 Windows Server 2003 的计算机之间使用所需的传入呼叫者身份验证事务模式。

使用 "不需要身份验证" 事务模式,其中满足以下一个或多个条件:

  • 网络访问位于运行 Microsoft Windows 2000 的计算机之间。
  • 网络访问位于未配置相互信任的两个域之间。
  • 网络访问位于作为工作组成员的计算机之间。

需要传入呼叫者身份验证

需要传入呼叫者 身份验证需要本地 DTC 服务,才能使用加密消息与远程 DTC 服务进行通信。 仅对传入连接进行身份验证。 只有 Windows Server 2003 SP1、Windows XP SP2 和更高版本Windows支持此功能。 因此,仅在运行 Windows Server 2003 SP1、Windows XP SP2 或更高版本的 Windows 的计算机上运行远程 DTC 服务时,才启用此选项。

传入呼叫者身份验证 必 填会影响以下注册表项 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+ 对象Microsoft SQL Server DTC 事务更新远程计算机中的数据库,则此事务不会成功。 相反,如果计算机承载SQL Server远程计算机的组件尝试使用 DTC 事务访问的数据库,则此事务不会成功。

以下问题与 DTC 服务相关:

由于网络连接问题,事务失败

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 若要详细了解如何备份和还原注册表,请参阅如何在 Windows 中备份和还原注册表

如果 DTC 事务由于网络连接问题而失败,请单击"安全配置"对话框中的 以下复选框:

  • 单击以选中 "网络 DTC 访问 "复选框。

  • 单击"事务管理器通信"下的以下一个或两个 复选框,具体取决于 您的要求:

    • 允许入站
    • 允许出站

如果要以编程方式更改这些设置作为设置的一Windows,可以直接修改与要设置的设置对应的注册表设置。 修改注册表设置后,必须重新启动 DTC 服务。

建议您不要手动修改注册表以更改这些设置。 如果手动修改这些注册表设置,你可能会在基于 Windows Server 2003 SP1 的服务器群集上遇到群集服务问题。

Windows防火墙阻止 DTC 流量

重要

这些步骤可能会增加安全风险。 这些步骤也可能使计算机或网络更容易受到恶意用户或恶意软件(如病毒)的攻击。 我们建议执行本文介绍的过程,以使程序能够按其设计运行或实现特定的程序功能。 在进行更改之前,建议您评估与在你的特定环境中实施此过程相关的风险。 如果决定实现此过程,请执行任何适当的附加步骤来帮助保护系统。 建议仅在确实需要此过程时使用此过程。

如果使用 Windows 防火墙,则必须将 DTC 服务添加到防火墙设置中的Windows列表中。 为此,请按照下列步骤操作:

  1. 选择 "开始",选择"运行**",firewall.cpl,** 然后选择"确定 "。
  2. "Windows 防火墙"对话框中,选择"例外" 选项卡,然后选择"添加程序"。
  3. 选择 "浏览",找到并选择 C:\Windows\System32\msdtc.exe ,然后选择"打开 "。
  4. 选择 "确定",msdtc.exe"程序和服务"列表中选中此复选框,然后选择"确定 "。

设置或添加的项

下表介绍了自 Windows XP SP2 以来从早期版本的 WINDOWS 中更改的注册表Windows。

项名 位置 以前的默认值 WindowsXP 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:
    事务管理器已禁用对远程/网络事务的支持。
    #定义XACT_E_NETWORK_TX_DISABLED HRESULT_TYPEDEF ( 0x8004D024L)

  • 错误代码 2

    MessageId:XACT_E_PARTNER_NETWORK_TX_DISABLED
    MessageText:
    合作伙伴事务管理器已禁用其对远程/网络事务的支持。
    #定义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