Windows의 분산 트랜잭션 코디네이터 서비스의 새로운 기능

이 문서에서는 일부 Windows 보안 관련 업데이트 및 변경 내용과 해당 업데이트가 MS DTC(Microsoft Distributed Transaction Coordinator) 서비스에 미치는 영향에 대해 설명합니다.

원래 제품 버전: Windows
원본 KB 번호: 899191

요약

Windows Server 2003 SP1(서비스 팩 1) 및 Windows XP SP2(서비스 팩 2) 이후 일부 보안 관련 업데이트 및 변경 내용이 Windows에 도입되어 MS DTC 서비스에 영향을 줍니다.

이러한 변경 내용은 구성 요소 서비스 관리 도구에서 사용할 수 있는 업데이트된 보안 구성 대화 상자를 사용하여 액세스할 수 있습니다.

이러한 변경 내용은 DTC 트래픽이 네트워크를 장애 조치(failover)하는 기본 보안 설정에 적용됩니다. 이 경우 하나 이상의 오류 메시지 또는 오류 코드를 받을 수 있습니다.

보안 구성 대화 상자에서 설정을 수정하면 DTC 서비스가 네트워크를 통해 원격 컴퓨터와 통신하는 방법을 제어할 수 있습니다.

이 문서에서는 다음 운영 체제의 MS DTC 서비스의 새로운 기능에 대해 설명합니다.

  • Windows Server 2003 SP1(서비스 팩 1)
  • Windows XP SP2(서비스 팩 2)
  • 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. Component Services 관리 도구를 시작합니다. 이렇게 하려면 시작을선택하고 실행을 선택하고 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

상호 인증 필요

상호 인증 필요 옵션은 Windows에서 상호 인증에 대한 지원을 추가합니다. 상호 인증 필수는 현재 네트워크 통신에 사용할 수 있는 가장 큰 보안 모드를 설정합니다. Windows Server 2003 SP1을 실행하는 서버 컴퓨터와 함께 Windows XP SP2를 실행하는 클라이언트 컴퓨터에 이 트랜잭션 모드를 사용하는 것이 좋습니다.

상호 인증 필수 항목 은 아래의 다음 레지스트리 항목에 영향을 줍니다 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC.

  • 레지스트리 키 1

    • 값 이름: AllowOnlySecureRpcCalls
    • 값 형식: REG_DWORD
    • 값 데이터: 1
  • 레지스트리 키 2

    • 값 이름: FallbackToUnsecureRPCIfNecessary
    • 값 형식: REG_DWORD
    • 값 데이터: 0
  • 레지스트리 키 3

    • 값 이름: TurnOffRpcSecurity
    • 값 형식: REG_DWORD
    • 값 데이터: 0

상호 인증 필요를 사용하여 설정되는 기능은 들어오는 호출자 인증 필요를 사용하여 설정된 기능과 다릅니다. Transaction Manager Communication 아래에 나열된 세 가지 옵션은 다음과 같이 작동합니다.

  • 상호 인증 필수 트랜잭션 모드를 사용하려면 원격으로 액세스하는 구성 요소가 로컬 컴퓨터와 인증된 연결을 제공해야 합니다. 이 인증은 로컬 컴퓨터에서 가장하여 확인됩니다. 또한 두 DTC 서비스 간에 원격 액세스 통신이 수행되는 경우 이 인증 정보는 원격 트랜잭션 모드 컴퓨터의 호스트 이름과 일치하는 컴퓨터 계정을 지정해야 합니다.

  • 들어오는 호출자 인증 필수 트랜잭션 모드에서는 원격 연결만 인증해야 합니다. 또한 원격으로 액세스하는 구성 요소가 DTC 서비스인 경우 인증 정보는 컴퓨터 계정에 대한 정보여야 합니다.

  • 인증 필요 없음 트랜잭션 모드는 인증된 연결의 유효성을 검사하거나 인증된 연결이 설정되고 있는지 여부를 확인하지 않습니다.

클러스터된 환경에서 DTC 서비스의 컴퓨터 계정은 클러스터 노드의 호스트 이름을 지정합니다. 클러스터된 환경에서 DTC 인증은 트랜잭션 모드의 호스트 이름을 사용하지 않습니다. 클러스터된 환경에서 트랜잭션 모드의 호스트 이름은 가상 서비스의 이름입니다. 따라서 클러스터된 환경이나 이러한 컴퓨터와 트랜잭션을 협상하는 컴퓨터에서는 상호 인증 필수 트랜잭션 모드를 사용할 수 없습니다. Windows Server 2003 SP1을 실행하는 두 개의 비클러스터형 컴퓨터 또는 Windows XP SP2를 실행하는 두 컴퓨터 간에 상호 인증 필수 트랜잭션 모드를 사용할 수 있습니다.

클러스터형 환경에서 Windows Server 2003 기반 컴퓨터 간에 들어오는 호출자 인증 필수 트랜잭션 모드를 사용합니다.

다음 조건 중 하나 이상이 true인 인증 필요 없음 트랜잭션 모드를 사용합니다.

  • 네트워크 액세스는 Microsoft Windows 2000을 실행하는 컴퓨터 간에 있습니다.
  • 네트워크 액세스는 상호 신뢰가 구성되지 않은 두 도메인 간에 있습니다.
  • 네트워크 액세스는 작업 그룹의 구성원인 컴퓨터 간에 수행됩니다.

들어오는 호출자 인증 필요

들어오는 호출자 인증 필요 를 사용하려면 로컬 DTC 서비스가 암호화된 메시지만 사용하여 원격 DTC 서비스와 통신해야 합니다. 들어오는 연결만 인증됩니다. Windows Server 2003 SP1, Windows XP SP2 이상 버전의 Windows만 이 기능을 지원합니다. 따라서 원격 DTC 서비스가 Windows Server 2003 SP1, Windows XP SP2 이상을 실행하는 컴퓨터에서 실행되는 경우에만 이 옵션을 사용하도록 설정합니다.

들어오는 호출자 인증 필수 는 아래 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 서비스가 실행되는 상황을 resolve 수도 있습니다. 또한 인증 필요 없음을 사용하여 DTC 서비스가 작업 그룹의 구성원인 컴퓨터에서 실행되는 상황을 resolve 수 있습니다.

인증 필요 없음 은 아래의 다음 레지스트리 항목에 영향을 줍니다 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 액세스 검사 상자를 클릭하여 선택합니다.

  • 요구 사항에 따라 트랜잭션 관리자 통신에서 다음 검사 상자 중 하나 또는 둘 다를 선택하려면 클릭합니다.

    • 인바운드 허용
    • 아웃바운드 허용

Windows의 일부로 이러한 설정을 프로그래밍 방식으로 변경하려는 경우 설정하려는 설정에 해당하는 레지스트리 설정을 직접 수정할 수 있습니다. 레지스트리 설정을 수정한 후 DTC 서비스를 다시 시작해야 합니다.

이러한 설정을 변경하도록 레지스트리를 수동으로 수정하지 않는 것이 좋습니다. 이러한 레지스트리 설정을 수동으로 수정하는 경우 Windows Server 2003 SP1 기반 서버 클러스터의 클러스터 서비스에 문제가 발생할 수 있습니다.

Windows 방화벽은 DTC 트래픽을 차단합니다.

중요

이러한 단계는 보안 위험을 증가시킬 수 있습니다. 또한 이러한 단계를 수행하면 컴퓨터 또는 네트워크가 악의적인 사용자 또는 바이러스와 같은 악성 소프트웨어의 공격에 더 취약할 수 있습니다. 이 문서에서 설명하는 프로세스는 프로그램이 특정 프로그램 기능을 사용하거나 구현하도록 설계된 대로 작동할 수 있도록 하는 것이 좋습니다. 이러한 변경을 하기 전에 특정 환경에서 이 프로세스를 구현하는 것과 관련된 위험을 평가하는 것이 좋습니다. 이 프로세스를 구현하기로 결정한 경우 시스템을 보호하는 데 도움이 되는 적절한 추가 단계를 수행합니다. 이 프로세스가 실제로 필요한 경우에만 이 프로세스를 사용하는 것이 좋습니다.

Windows 방화벽을 사용하는 경우 Windows 방화벽 설정의 예외 목록에 DTC 서비스를 추가해야 합니다. 이렇게 하려면 다음과 같이 하십시오.

  1. 시작을 선택하고 실행을 선택하고 firewall.cpl입력한 다음 확인을 선택합니다.
  2. Windows 방화벽 대화 상자에서 예외 탭을 선택한 다음 프로그램 추가를 선택합니다.
  3. 찾아보기를 선택하고 를 찾은 다음 C:\Windows\System32\msdtc.exe열기를 선택합니다.
  4. 확인을 선택하고 이 검사 상자가 아직 선택되지 않은 경우 프로그램 및 서비스 목록에서msdtc.exe검사 상자를 선택한 다음 확인을 선택합니다.

변경되거나 추가된 설정

다음 표에서는 이전 버전의 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