서비스 사용자 이름 등록

SPN(서비스 사용자 이름)은 클라이언트가 서비스 인스턴스를 고유하게 식별하는 이름입니다. Kerberos 인증 서비스에서는 서비스를 인증하는 데 SPN을 사용합니다. 클라이언트는 서비스에 연결할 때 서비스의 인스턴스를 찾고 해당 인스턴스에 대한 SPN을 작성한 다음 서비스에 연결하고 인증을 위해 서비스에 대한 SPN을 제공합니다.

[!참고]

이 항목에 설명된 정보는 클러스터링을 사용하는 SQL Server 구성에도 적용됩니다.

Windows 인증은 SQL Server를 인증하는 사용자가 기본적으로 사용하는 방법입니다. Windows 인증을 사용하는 클라이언트는 NTLM 또는 Kerberos로 인증됩니다. Active Directory 환경에서는 Kerberos 인증을 가장 먼저 시도합니다. 명명된 파이프를 사용하는 SQL Server 2000 및 SQL Server 2005 클라이언트에서는 Kerberos 인증을 사용할 수 없습니다.

사용 권한

데이터베이스 엔진 서비스가 시작되면 SPN(서비스 사용자 이름)을 등록하려고 합니다. SQL Server를 시작하는 계정에 Active Directory 도메인 서비스에 SPN을 등록할 권한이 없는 경우 이 호출은 실패하고 SQL Server 오류 로그 및 응용 프로그램 이벤트 로그에 경고 메시지가 기록됩니다. SPN을 등록하려면 데이터베이스 엔진이 로컬 시스템(권장되지 않음) 또는 NETWORK SERVICE와 같은 기본 제공 계정이나 도메인 관리자 계정과 같은 SPN 등록 권한이 있는 계정으로 실행되고 있어야 합니다. SQL Server가 이러한 계정 중 하나로 실행되고 있지 않으면 시작할 때 SPN이 등록되지 않으므로 도메인 관리자가 SPN을 수동으로 등록해야 합니다.

기술 자료 문서 SQL Server에서 Kerberos 인증을 사용하는 방법에는 도메인 관리자가 아닌 계정에 SPN 읽기/쓰기 권한을 부여하는 방법이 나와 있습니다.

추가 정보는 SQL Server 2008에서 Kerberos 제한된 위임을 구현하는 방법에서 확인할 수 있습니다.

SPN 형식

SQL Server 2008부터 SPN 형식이 TCP/IP, 명명된 파이프 및 공유 메모리에서 Kerberos 인증을 지원하도록 변경됩니다. 명명된 인스턴스 및 기본 인스턴스에 대해 지원되는 SPN 형식은 다음과 같습니다.

명명된 인스턴스

  • MSSQLSvc/FQDN:[port**|**instancename]

    • MSSQLSvc는 등록할 서비스입니다.

    • FQDN은 서버의 정규화된 도메인 이름입니다.

    • port는 TCP 포트 번호입니다.

    • instancename은 SQL Server 인스턴스의 이름입니다.

기본 인스턴스

  • MSSQLSvc/FQDN:port**|**MSSQLSvc/FQDN:

    • MSSQLSvc는 등록할 서비스입니다.

    • FQDN은 서버의 정규화된 도메인 이름입니다.

    • port는 TCP 포트 번호입니다.

새로운 SPN 형식에는 포트 번호가 필요하지 않습니다. 따라서 포트 번호를 사용하지 않는 다중 포트 서버 또는 프로토콜이 Kerberos를 사용할 수 있습니다.

[!참고]

SPN에 TCP 포트가 포함되는 TCP/IP 연결의 경우 SQL Server는 Kerberos 인증을 사용하여 연결하는 사용자를 위해 TCP 프로토콜을 사용하도록 설정해야 합니다.

SPN 자동 등록

SQL Server 데이터베이스 엔진 인스턴스가 시작되면 SQL Server에서 SQL Server 서비스에 대한 SPN을 등록하려고 하고, 인스턴스가 중지되면 SQL Server에서 SPN의 등록을 취소하려고 합니다. TCP/IP 연결의 경우 SPN은 MSSQLSvc/<FQDN>:<tcpport> 형식으로 등록됩니다. 명명된 인스턴스와 기본 인스턴스는 모두 MSSQLSvc로 등록되고 구분을 위해 <tcpport> 값을 사용합니다.

Kerberos를 지원하는 다른 연결에서 SPN은 명명된 인스턴스의 경우 MSSQLSvc/<FQDN>:<instancename> 형식으로 등록됩니다. 기본 인스턴스는 MSSQLSvc/<FQDN> 형식으로 등록됩니다.

서비스 계정에 이러한 동작을 수행하는 데 필요한 권한이 없는 경우에는 수동으로 SPN을 등록하거나 등록 취소해야 합니다.

SPN 수동 등록

SPN을 수동으로 등록하려면 관리자가 Microsoft Windows Server 2003 지원 도구와 함께 제공되는 Setspn.exe 도구를 사용해야 합니다. 이 도구는 Windows Server 2003 SP1(서비스 팩 1)에 포함되어 있습니다. 자세한 내용은 Windows Server 2003 서비스 팩 1 지원 도구 기술 자료 문서를 참조하십시오.

Setspn.exe는 SPN 디렉터리 속성을 읽고 수정하고 삭제하는 데 사용할 수 있는 명령줄 도구입니다. 또한 이 도구를 통해 현재 SPN을 보고 계정의 기본 SPN을 다시 설정하고 보조 SPN을 추가 또는 삭제할 수도 있습니다.

다음 예에서는 TCP/IP 연결에 대한 SPN을 수동으로 등록하는 데 사용되는 구문을 보여 줍니다.

setspn -A MSSQLSvc/myhost.redmond.microsoft.com:1433 accountname

참고 SPN이 이미 있는 경우에는 해당 SPN을 삭제한 후 다시 등록해야 합니다. 이 작업을 수행하려면 setspn 명령을 -D 스위치와 함께 사용합니다. 다음 예에서는 새로운 인스턴스 기반 SPN을 수동으로 등록하는 방법을 보여 줍니다. 기본 인스턴스의 경우에는 다음을 사용합니다.

setspn –A MSSQLSvc/myhost.redmond.microsoft.com accountname

명명된 인스턴스의 경우에는 다음을 사용합니다.

setspn –A MSSQLSvc/myhost.redmond.microsoft.com:instancename accountname

클라이언트 연결

사용자 지정 SPN은 클라이언트 드라이버에서 지원됩니다. 하지만 SPN이 제공되지 않은 경우 클라이언트 연결 유형을 기준으로 SPN이 자동 생성됩니다. TCP 연결의 경우 명명된 인스턴스와 기본 인스턴스 모두에 대해 MSSQLSvc/FQDN:[port] 형식의 SPN이 사용됩니다.

명명된 파이프 및 공유 메모리 연결의 경우 명명된 인스턴스에 대해 MSSQLSvc/FQDN:instancename 형식의 SPN이 사용되고 기본 인스턴스에 대해 MSSQLSvc/FQDN 형식의 SPN이 사용됩니다.

서비스 계정을 SPN으로 사용

서비스 계정을 SPN으로 사용할 수 있습니다. 서비스 계정은 Kerberos 인증에 대한 연결 특성을 통해 지정되며 다음 형식을 사용합니다.

  • username@domain 또는 domain\username(도메인 사용자 계정의 경우)

  • machine$@domain 또는 host\FQDN(로컬 시스템 또는 NETWORK SERVICE와 같은 컴퓨터 도메인 계정의 경우)

연결 인증 방법을 결정하려면 다음 쿼리를 실행합니다.

SELECT net_transport, auth_scheme 
FROM sys.dm_exec_connections 
WHERE session_id = @@SPID;

인증 기본값

다음 표에서는 SPN 등록 시나리오에 따라 다르게 사용되는 인증 기본값에 대해 설명합니다.

시나리오

인증 방법

SPN이 올바른 도메인 또는 기본 제공 계정에 매핑됩니다. 예를 들어 로컬 시스템 또는 NETWORK SERVICE에 매핑됩니다.

참고참고
여기서 올바르다는 것은 등록된 SPN에 의해 매핑되는 계정이 SQL Server 서비스를 실행하고 있는 계정과 일치함을 의미합니다.

로컬 연결은 NTLM을 사용하고, 원격 연결은 Kerberos를 사용합니다.

SPN이 올바른 도메인 또는 기본 제공 계정입니다.

참고참고
여기서 올바르다는 것은 등록된 SPN에 의해 매핑되는 계정이 SQL Server 서비스를 실행하고 있는 계정과 일치함을 의미합니다.

로컬 연결은 NTLM을 사용하고, 원격 연결은 Kerberos를 사용합니다.

SPN이 잘못된 도메인 또는 기본 제공 계정에 매핑됩니다.

인증에 실패하게 됩니다.

SPN 조회에 실패했거나 SPN이 올바른 도메인 또는 기본 제공 계정에 매핑되지 않거나 SPN이 올바른 도메인 또는 기본 제공 계정이 아닙니다.

로컬 및 원격 연결이 NTLM을 사용합니다.

설명

SQL Server 2008에서 DAC(관리자 전용 연결)는 인스턴스 이름 기반의 SPN을 사용합니다. SPN이 성공적으로 등록되면 DAC와 Kerberos 인증을 함께 사용할 수 있습니다. 또는 사용자가 계정 이름을 SPN으로 지정할 수 있습니다.

시작 시 SPN 등록에 실패하면 해당 내용이 SQL Server 오류 로그에 기록되고 시작이 계속됩니다.

종료 시 SPN 등록 취소에 실패하면 해당 내용이 SQL Server 오류 로그에 기록되고 종료가 계속됩니다.