다음을 통해 공유


방법: SQL Server 장애 조치(Failover) 클러스터에 Kerberos 인증 활성화

업데이트: 2007년 9월 15일

Kerberos는 클라이언트/서버 응용 프로그램을 위한 강력한 인증을 제공하기 위해 디자인된 네트워크 인증 프로토콜입니다. Kerberos는 기업 전체의 네트워크 인증 보안을 강화하면서 상호 운용성의 기반을 제공합니다.

Microsoft SQL Server 2005 독립 실행형 인스턴스 또는 Microsoft Windows 2000 서비스 팩 3(SP3)에서 실행되고 있는 장애 조치(Failover) 클러스터 인스턴스에 Kerberos 인증을 사용할 수 있습니다. SQL Server 2005는 일반적인 Microsoft Windows 2000 Active Directory 도메인 설치의 일부로서 이 기능을 지원합니다.

SQL Server가 종속되는 네트워크 이름 리소스가 Windows 2000 기반의 클러스터에 있는 경우 컴퓨터를 Windows 2000 SP3으로 업그레이드한 후 해당 리소스에서 Kerberos 인증을 사용할 수 있습니다. 서버 클러스터에 Kerberos를 설정하는 방법은 기술 자료 문서 "Windows 2000 기반 서버 클러스터에서 Kerberos 지원"을 참조하십시오.

다음 섹션에서는 Microsoft 인터넷 정보 서비스(IIS)를 실행하고 있는 서버에 연결하여 SQL Server를 실행하고 있는 서버에 Kerberos 연결을 수행하는 방법에 대해 설명합니다.

필수 구성 요소

Windows 2000 SP3을 실행하는 경우에만 이 기능을 사용할 수 있습니다.

설정 절차를 수행하기 전에 Kerbtray 및 SetSPN 유틸리티를 다운로드하십시오.

  • Kerbtray 유틸리티를 다운로드하려면 다음 Microsoft 웹 사이트를 방문하십시오. 사용 중인 연관된 모든 컴퓨터에서 Kerbtray.exe를 사용하여 Kerberos 티켓을 쉽게 확인하거나 제거할 수 있습니다.
  • SetSPN 유틸리티를 다운로드하려면 다음 Microsoft 웹 사이트를 방문하십시오.

SQL Server는 클라이언트가 TCP/IP 프로토콜을 사용하여 SQL Server에 연결할 경우에만 Kerberos를 사용합니다. 예를 들어 클라이언트가 명명된 파이프 프로토콜을 사용할 경우 Kerberos는 사용되지 않습니다. 한 컴퓨터에서 여러 개의 SQL Server 인스턴스를 실행 중인 경우 SQL Server의 각 인스턴스는 고유 TCP/IP 포트를 사용하기 때문에 각 SQL Server 인스턴스에 대해 SPN(서버 보안 주체 이름)을 구성해야 합니다.

SQL Server 2005에 대한 Kerberos 설정

Microsoft 인터넷 정보 서비스를 실행하고 있는 서버에 연결하여 SQL Server 2005에 Kerberos 연결

  1. 1단계: 도메인 컨트롤러 구성

도메인 컨트롤러의 Active Directory 사용자 및 컴퓨터에서 다음을 수행합니다.

  1. 위임용으로 설정하려는 컴퓨터(IIS 서비스 서버)를 마우스 오른쪽 단추로 클릭한 다음 위임용으로 이 컴퓨터 트러스트를 클릭하여 선택합니다. SQL Server를 실행하고 있는 컴퓨터가 마지막으로 연결된 컴퓨터인 것으로 간주되지만 해당 컴퓨터에 연결된 서버가 있는 경우 위임 권한도 부여되어야 합니다. 연결 그룹에서 마지막 컴퓨터가 아닌 경우 매개자인 모든 컴퓨터가 위임용으로 신뢰가 설정되어야 합니다.
  2. SQL Server 서비스 계정 도메인 사용자 계정에 위임 권한을 부여합니다. 클러스터형 SQL Server 설치를 위해 도메인 사용자 계정이 있어야 합니다. 이 단계는 로컬 시스템 계정을 사용하고 있는 SQL Server를 실행하는 컴퓨터의 경우 필요하지 않습니다.
    1. 사용자 폴더에서 해당 사용자 계정을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
    2. 사용자 계정 속성 대화 상자에서 계정 탭을 클릭합니다.
    3. 계정 옵션에서 위임에 대해 계정 신뢰할 수 있음 확인란을 클릭하여 선택합니다. 이 계정에 대해 계정이 민감하여 위임할 수 없음 확인란의 선택은 취소해야 합니다.
  3. Kerbtray.exe 유틸리티를 사용하여 도메인 컨트롤러와 호스트에서 Kerberos 티켓을 받았는지 확인합니다.
    1. 알림 메시지가 표시되는 위치에서 Kerbtray 아이콘을 마우스 오른쪽 단추로 클릭한 다음 purge tickets를 클릭합니다.
    2. Kerbtray 아이콘이 녹색에서 노란색으로 바뀔 때까지 기다립니다. 노란색으로 바뀌면 명령 프롬프트 창을 열고 다음 명령을 실행합니다.
      net session* /d
      이 작업으로 기존 세션이 삭제되고 새 세션이 강제로 설정되며 Kerberos 티켓이 수신됩니다.

2단계: IIS 서비스 서버 구성

  1. 기본 웹 사이트 Wwwroot 파일을 예제 .asp 파일로 바꿉니다. 예제 .asp 파일을 만들려면 "SQL Server 데이터 검색을 위한 ASP 테스트 스크립트" 섹션에 제공된 코드를 사용합니다.

  2. 해당 파일을 Wwwroot 폴더에 추가합니다. 이 작업을 수행하려면 "SQL Server 데이터 검색을 위한 ASP 테스트 스크립트" 섹션의 예제 코드를 사용합니다. 이 파일의 이름을 Default.asp로 저장합니다.

  3. Windows 통합 인증만을 사용하도록 다음과 같이 웹 서버를 다시 구성합니다.

    1. 기본 웹 서버를 마우스 오른쪽 단추로 클릭한 다음 보안 폴더를 클릭합니다.
    2. 보안 폴더에서 올바르게 변경한 다음 익명 액세스를 클릭하여 선택을 취소합니다.
    3. 명령 프롬프트에서 다음 명령을 실행합니다.
      cscript C:\Inetpub\Adminscripts\adsutil.vbs get w3svc/NTAuthenticationProviders
      협상을 사용할 수 있는 경우 다음과 같이 반환됩니다.
      NTAuthenticationProviders : (STRING) Negotiate,NTLM
      Kerbero 및 NTLM 인증을 모두 지원하도록 IIS를 구성하는 방법은 기술 자료 문서 "HOWTO: 네트워크 인증에 Kerberos 및 NTLM 프로토콜을 모두 지원하도록 IIS를 구성하는 방법"을 참조하십시오.

    [!참고] IIS 서비스 서버에 Microsoft Data Access(MDAC) 2.8 SP1 이상을 설치해야 합니다. 설치한 후 이 도구를 테스트에 사용할 수 있게 하려면 Microsoft SQL Server 2000 클라이언트 도구를 웹 서버에 설치해야 합니다. 클라이언트 도구를 설치하지 않고 MDAC 2.8 SP1 이상만 설치하려면 다음 Microsoft 웹 사이트를 방문하십시오.

  4. HKLM\SW\MS\MSSQLSERVER\Client\DSQUERY 값이 레지스트리에 있는지 확인합니다. 이 값이 표시되지 않는 경우 DSQUERY:Reg_SZ:DBNETLIB로 추가합니다.

  5. Kerbtray.exe 유틸리티를 사용하여 도메인 컨트롤러와 호스트에서 Kerberos 티켓을 받았는지 확인합니다.

    1. 알림 메시지가 표시되는 위치에서 Kerbtray 아이콘을 마우스 오른쪽 단추로 클릭한 다음 purge tickets를 클릭합니다.
    2. Kerbtray 아이콘이 녹색에서 노란색으로 바뀔 때까지 기다립니다. 노란색으로 바뀌면 명령 프롬프트 창을 열고 다음 명령을 실행합니다.
      net session * /d
      이 작업으로 기존 세션이 삭제되고 새 세션이 강제로 설정되며 Kerberos 티켓이 수신됩니다.

3단계: SQL Server용 SPN 만들기

ms189585.Caution(ko-kr,SQL.90).gif주의:
SQL Server는 클라이언트가 TCP/IP 프로토콜을 사용하여 SQL Server에 연결할 경우에만 Kerberos를 사용합니다. 예를 들어 클라이언트가 명명된 파이프 프로토콜을 사용할 경우 Kerberos는 사용되지 않습니다. 한 컴퓨터에서 여러 개의 SQL Server 인스턴스를 실행 중인 경우 SQL Server의 각 인스턴스는 고유 TCP/IP 포트를 사용하기 때문에 각 SQL Server 인스턴스에 대해 SPN(서버 보안 주체 이름)을 구성해야 합니다.
ms189585.note(ko-kr,SQL.90).gif중요:
SQL Server 서비스가 LocalSystem 계정으로 실행되고 있는 경우 SQL Server용 SPN을 수동으로 구성할 필요가 없습니다. SQL Server 서비스가 시작되면 SPN은 자동으로 생성됩니다. SQL Server 서비스가 도메인 사용자 계정으로 실행되는 경우 SPN을 수동으로 구성해야 합니다. 이 작업을 수행하려면 다음 단계를 따릅니다.

SQL Server용 SPN을 구성하려면 Microsoft Windows Resource Kit의 SETSPN 유틸리티를 사용합니다. SETSPN 유틸리티를 다운로드하려면 다음 Microsoft 웹 사이트를 방문하십시오.

SETSPN을 실행하기 전에 다음 정보를 고려하십시오.

  • SPN 등록 권한을 가진 로그온 계정으로 setspn.exe를 실행해야 합니다.
  • SQL Server 인스턴스가 실행되고 있는 도메인 사용자 계정을 기록해 두십시오. 다음 예에서는 이 계정을 <SQL_Service_Account>라고 합니다.
    중요 SQL Server 인스턴스가 LocalSystem 계정으로 실행되고 있는 경우 SETSPN 유틸리티를 실행할 필요가 없습니다.
  • SQL Server를 실행하고 있는 컴퓨터의 정규화된 도메인 이름(FQDN)이 있어야 합니다. SQL Server를 실행하고 있는 컴퓨터의 FQDN을 확인하려면 ping 유틸리티를 사용합니다. 이 작업을 수행하려면 다음 단계를 따릅니다.
  1. IP 주소 확인을 위해 다음과 같이 SQL Server를 실행하고 있는 컴퓨터에 대해 ping을 수행합니다.
    C:\>ping MySQLServer
    Pinging MySQLServer.MyDomain.com [10.10.10.10] with 32 bytes of data:
    Reply from 10.10.10.10: bytes=32 time=1ms TTL=128
  2. FQDN이 DNS(Domain Name System) 프로토콜에 의해 올바로 반환되는지 확인하기 위해 ping -a를 사용하여 IP 주소의 역방향 조회를 수행합니다.
    C:\>ping -a 10.10.10.10
    Pinging MySQLServer.MyDomain.com [10.10.10.10] with 32 bytes of data:
    Reply from 10.10.10.10: bytes=32 time<1ms TTL=128
  3. 장애 조치 클러스터 인스턴스 이름을 ping하여 IP 주소를 얻은 다음 ping -a 를 실행하여 FQDN이 DNS에 의해 올바로 반환되는지 확인합니다.

[!참고] SQL Server 장애 조치 클러스터링을 사용하고 있는 경우 장애 조치 클러스터 인스턴스 이름으로 FQDN을 사용합니다. SQL Server 인스턴스가 사용하는 정확한 TCP/IP 포트를 기록해 두십시오. 이 정보를 확인하려면 SQL Server를 실행하고 있는 컴퓨터에서 SQL Server 구성 관리자를 열고 SQL Server 인스턴스를 클릭한 다음 TCP/IP 프로토콜(기본 포트)의 속성을 확인합니다.

SQL Server 서비스가 실행되고 있는 도메인 사용자 계정, SQL Server를 실행하고 있는 컴퓨터의 FQDN 및 SQL Server 인스턴스가 사용하고 있는 TCP/IP 포트를 확인한 후 다음 단계에 따라 SQL Server용 SPN을 만듭니다.

[!참고] SETSPN 명령을 실행하려면 Domain Administrators 그룹의 멤버여야 합니다.

  1. SQL Server 장애 조치 클러스터링을 사용하고 있는 경우 다음 SETSPN 명령을 실행합니다.
    setspn -A MSSQLSvc/<FQDN> <SQL_Service_Account>
    예를 들어 MySQLServer.MyDomain.com이 도메인 사용자 계정 SQLSVC로 실행되고 있는 경우 다음 명령을 실행합니다. 여기서 MySQLServer.MyDomain.com은 클러스터링된 SQL Server 2005 인스턴스의 이름입니다.
    setspn -A MSSQLSvc/MySQLServer.MyDomain.com SQLSVC
  2. SQL Server를 실행하고 있는 클러스터형 및 비클러스터형 컴퓨터 모두의 경우 다음의 SETSPN 명령을 실행하여 SQL Server를 실행하고 있는 컴퓨터가 사용하는 포트에 대해 SPN을 등록합니다.
    setspn -A MSSQLSvc/<FQDN>:<Port> <SQL_Service_Account>
    예를 들어 MySQLServer.MyDomain.com이 포트 1433의 도메인 사용자 계정 SQLSVC로 실행되고 있는 경우 다음 SETSPN 명령을 실행합니다.
    setspn -A MSSQLSvc/MySQLServer.MyDomain.com:1433 SQLSVC
  3. SPN이 등록된 후 SETSPN 유틸리티의 LIST 기능(-L 스위치)을 사용하여 제대로 등록되었는지 확인합니다. SETSPN -L <SQL_Service_Account>를 실행하여 SQL Server 인스턴스가 실행되고 있는 도메인 사용자 계정에 등록된 모든 SPN을 나열합니다.
    setspn -L <SQL_Service_Account>
    예를 들어 MySQLServer.MyDomain.com이 포트 1433의 도메인 사용자 계정 SQLSVC로 실행되고 있는 경우 다음 명령을 실행합니다.
    setspn -A SQLSVC
    1단계(SQL Server가 클러스터링된 경우) 및 2단계(SQL Server가 클러스터링되지 않은 경우)에서 만든 SPN이 다음과 같이 출력에 표시됩니다.
    C:\>setspn -l SQLSVC
    Registered ServicePrincipalNames for CN=SQLSVC,CN=Users,DC=MyDomain,DC=com:
        MSSQLSvc/MySQLServer.MyDomain.com
        MSSQLSvc/MySQLServer.MyDomain.com:1433

[!참고] SQL Server 장애 조치 클러스터링을 사용하고 있는 경우 포트 번호가 없는 SPN과 포트 번호가 있는 다른 SPN을 등록해야 합니다. SQL Server를 실행하고 있는 일반 비클러스터형 컴퓨터의 경우 포트 번호가 있는 SPN만 등록해야 합니다. 그러나 포트 번호가 없는 추가 SPN이 있는 경우에도 비클러스터형 컴퓨터에 어떠한 문제도 발생하지 않습니다.

[!참고] 또한 도메인 컨트롤러에서 Ldifde.exe 유틸리티를 사용하여 두 SPN 등록을 모두 확인할 수 있습니다. 이 내용은 이 항목의 "Active Directory 서버 보안 주체 이름 정보 목록 수집 방법" 섹션에서 설명합니다.

4단계: 클라이언트 컴퓨터 구성

  1. 연결할 각 클라이언트의 경우 Microsoft Internet Explorer가 Windows 인증을 사용하도록 구성되어 있는지 확인합니다.
  2. Internet Explorer의 도구 메뉴에서 인터넷 옵션을 클릭합니다.
  3. 고급 탭을 클릭합니다.
    보안에서 **통합된 Windows 인증 사용(다시 시작해야 함)**을 클릭하여 선택한 다음 확인을 클릭합니다.

5단계: 구성 테스트

연관된 각 컴퓨터에 대해 다음을 수행합니다.

  1. 컴퓨터에 로그온한 다음 Kerbtray.exe를 사용하여 컴퓨터가 도메인 컨트롤러에서 올바른 Kerberos 티켓을 얻을 수 있는지 확인합니다.
  2. Kerbtray.exe를 사용하여 컴퓨터에 있는 모든 티켓을 제거합니다.
  3. SQL Server 데이터를 반환하는 웹 페이지를 만들고 여기에 연결합니다.

[!참고] SQLSERVERNAME을 SQL Server를 실행하고 있는 컴퓨터의 이름으로 바꿉니다.

  • 데이터가 반환되면 이 페이지에 협상 인증 유형과 SQL Server 데이터가 표시됩니다. 이 데이터는 .ASP 페이지를 통해 연결 중인 서버의 데이터베이스 목록을 반환하는 sp_helpdb 저장 프로시저의 결과가 됩니다.
  • SQL Server에서 감사를 설정한 경우 응용 프로그램 로그에 해당 연결이 "트러스트됨"으로 표시됩니다.

SQL Server 데이터 검색을 위한 ASP 테스트 스크립트

다음은 SQL Server 데이터용 ASP 테스트 스크립트입니다. 이 코드 예를 사용하려면 SQLSERVERNAME을 SQL Server를 사용하고 있는 컴퓨터의 이름으로 바꿔야 합니다.

<%@ Language=VBScript %>

<HTML>

<HEAD>

<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">

</HEAD>

<BODY>

<%="'auth_user' is" & request.servervariables("auth_user")%>

<P>

<%="'auth_type' is" & request.servervariables("auth_type")%>

<P>

Connections string is <B>" Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pubs;Data Source=SQLSERVERNAME </B>

<P>

<%

set rs = Server.CreateObject("ADODB.Recordset")

set cn = Server.CreateObject("ADODB.Connection")

cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pubs;Data Source=SQLSERVERNAME"

rs.open "MASTER..sp_helpdb",cn

Response.Write cstr(rs.Fields.Count) +"<BR>"

while not rs.EOF

Response.Write cstr(rs(0))+"<BR>"

rs.MoveNext

wend

rs.Close

cn.Close

set rs = nothing ' Frees memory reserved by the recordset.

set cn = nothing ' Frees memory reserved by the connection.

%>

</BODY>

</HTML>

Active Directory 서버 보안 주체 이름 정보 목록 수집 방법

Active Directory SPN(서버 보안 주체 이름) 정보 목록을 수집하려면 도메인 컨트롤러 중 하나에 대해 다음 명령을 입력합니다. 여기서 betaland는 NetBIOS 도메인 이름이고 NewoutputUsers.txt는 결과를 전달하는 데 사용할 출력 파일의 이름입니다. 전체 경로를 사용하지 않는 경우 해당 파일은 명령줄을 실행하는 현재 폴더에 저장됩니다. 다음 예제 명령은 전체 도메인에 대해 쿼리를 수행합니다.

ldifde -d "CN=Users,DC=betaland" -l servicePrincipalName -F NewoutputUsers.txt

이 구문은 이 항목의 "NewouputUsers.txt의 도메인 수준 출력" 섹션의 출력 내용과 비슷한 정보를 포함하는 NewoutputUsers.txt라는 파일을 만듭니다.

이 출력은 전체 도메인에 대해 수집하는 경우 내용이 매우 많아질 수 있습니다. 그러므로 수집 정보를 특정 사용자 이름으로 제한하려면 다음 구문을 사용합니다. 여기서 User Name은 사용자 이름이고 betaland는 쿼리를 수행할 도메인입니다.

ldifde -d "CN=User Name,DC=betaland" -l servicePrincipalName -F NewoutputUsers.txt

특정 사용자에 대한 정보만 수집하면 검색해야 하는 데이터가 현저히 줄어듭니다. 전체 도메인에 대한 정보를 수집하는 경우 해당 서버의 특정 사용자 이름을 검색하십시오. 출력 예제에는 다음 항목이 나타납니다.

  • 더 이상 존재하지 않지만 Active Directory에서 완전히 제거되지 않은 항목이 나타납니다.
  • "User Name" 사용자는 약 10개의 다른 서버에 대한 유효한 SPN 정보를 보유하고 있습니다.

또한 ADSI(Active Directory Service Interfaces) 도구를 사용하여 유효하지 않은 Active Directory 항목을 수정할 수 있습니다.

주의 ADSI 편집 스냅인, LDP 유틸리티 또는 다른 LDAP 버전 3 클라이언트를 사용하고 Active Directory 개체의 특성을 잘못 수정한 경우 심각한 문제가 발생할 수 있습니다. 이러한 문제 때문에 Microsoft Windows 2000 Server, Microsoft Exchange 2000 Server 또는 둘 다 다시 설치해야 할 수도 있습니다. Microsoft는 Active Directory 개체 특성을 잘못 수정하여 발생하는 문제의 해결을 보장할 수 없습니다. 이러한 특성 수정으로 인해 발생하는 모든 문제는 사용자가 책임집니다.

NewouputUsers.txt의 도메인 수준 출력

dn: CN=User Name,CN=Users,DC=betaland

changetype: add

servicePrincipalName: MSSQLSvc/CLUSTERDEFAULT.betaland:1257

servicePrincipalName: MSSQLSvc/INST3.betaland:3616

servicePrincipalName: MSSQLSvc/INST2.betaland:3490

servicePrincipalName: MSSQLSvc/SQLMAN.betaland:1433

servicePrincipalName: MSSQLSvc/VSS1.betaland:1433

servicePrincipalName: MSSQLSvc/INST1.betaland:2536

servicePrincipalName: MSSQLSvc/INST4.betaland:3967

servicePrincipalName: MSSQLSvc/SQLVIRTUAL1.betaland:1434

servicePrincipalName: MSSQLSvc/SQLVIRTUAL.betaland:1433

servicePrincipalName: MSSQLSvc/SQLBUSTER.betaland:1315

참고 항목

관련 자료

가용성 구성 방법 도움말 항목
SQL Server 2005 설치
SQL Server 2005로 업그레이드

도움말 및 정보

SQL Server 2005 지원 받기