Kerberos 연결의 서비스 사용자 이름 등록Register a Service Principal Name for Kerberos Connections

SQL ServerSQL Server 에서 Kerberos 인증을 사용하려면 다음 조건 중 하나에 해당해야 합니다.To use Kerberos authentication with SQL ServerSQL Server requires both the following conditions to be true:

  • 클라이언트 및 서버 컴퓨터는 동일한 Windows 도메인이나 트러스트된 도메인의 일부여야 합니다.The client and server computers must be part of the same Windows domain, or in trusted domains.

  • SPN(서비스 사용자 이름)은 Windows 도메인에서 키 배포 센터 역할을 가정하는 Active Directory에 등록해야 합니다.A Service Principal Name (SPN) must be registered with Active Directory, which assumes the role of the Key Distribution Center in a Windows domain. SPN은 등록된 후에, SQL ServerSQL Server 인스턴스 서비스를 시작하는 Windows 계정에 매핑됩니다.The SPN, after it is registered, maps to the Windows account that started the SQL ServerSQL Server instance service. SPN 등록이 수행되지 않았거나 실패하면 Windows 보안 계층이 SPN과 연결된 계층을 결정할 수 없고 Kerberos 인증이 사용되지 않습니다.If the SPN registration has not been performed or fails, the Windows security layer cannot determine the account associated with the SPN, and Kerberos authentication will not be used.

    참고

    서버가 SPN을 자동으로 등록할 수 없으면 SPN을 수동으로 등록해야 합니다.If the server cannot automatically register the SPN, the SPN must be registered manually. 수동 SPN 등록을 참조하십시오.See Manual SPN Registration.

    sys.dm_exec_connections 동적 관리 뷰를 쿼리하여 연결에 Kerberos가 사용되는지 확인할 수 있습니다.You can verify that a connection is using Kerberos by querying the sys.dm_exec_connections dynamic management view. 다음 쿼리를 실행하고, Kerberos를 사용할 수 있을 경우 "KERBEROS"가 되는 auth_scheme 열의 값을 확인하십시오.Run the following query and check the value of the auth_scheme column, which will be "KERBEROS" if Kerberos is enabled.

SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid ;  

SQL ServerSQL ServerMicrosoftMicrosoft Kerberos 구성 관리자SQL ServerSQL Server과의 Kerberos 관련 연결 문제를 해결하는 진단 도구입니다. MicrosoftMicrosoft Kerberos Configuration Manager for SQL ServerSQL Server is a diagnostic tool that helps troubleshoot Kerberos related connectivity issues with SQL ServerSQL Server. 자세한 내용은 SQL Server용 Microsoft Kerberos 구성 관리자를 참조하십시오.For more information, see Microsoft Kerberos Configuration Manager for SQL Server.

인증에서 SPN의 역할 The Role of the SPN in Authentication

응용 프로그램에서 연결을 열고 Windows 인증을 사용할 경우 SQL ServerSQL Server Native Client는 SQL ServerSQL Server 컴퓨터 이름, 인스턴스 이름 및 필요에 따라 SPN을 전달합니다.When an application opens a connection and uses Windows Authentication, SQL ServerSQL Server Native Client passes the SQL ServerSQL Server computer name, instance name and, optionally, an SPN. 연결이 SPN을 전달하면 변경 사항 없이 사용됩니다.If the connection passes an SPN it is used without any changes.

연결이 SPN을 전달하지 않으면 기본 SPN이 사용된 프로토콜, 서버 이름 및 인스턴스 이름에 따라 구성됩니다.If the connection does not pass an SPN, a default SPN is constructed based on the protocol used, server name, and the instance name.

위의 두 시나리오에서 SPN은 키 배포 센터에 전달되어 연결 인증을 위한 보안 토큰을 가져옵니다.In both of the preceding scenarios, the SPN is sent to the Key Distribution Center to obtain a security token for authenticating the connection. 보안 토큰을 가져올 수 없으면 인증이 NTLM을 사용합니다.If a security token cannot be obtained, authentication uses NTLM.

SPN(서비스 사용자 이름)은 클라이언트가 서비스 인스턴스를 고유하게 식별하는 이름입니다.A service principal name (SPN) is the name by which a client uniquely identifies an instance of a service. Kerberos 인증 서비스에서는 서비스를 인증하는 데 SPN을 사용합니다.The Kerberos authentication service can use an SPN to authenticate a service. 클라이언트는 서비스에 연결할 때 서비스의 인스턴스를 찾고 해당 인스턴스에 대한 SPN을 작성한 다음 서비스에 연결하고 인증을 위해 서비스에 대한 SPN을 제공합니다.When a client wants to connect to a service, it locates an instance of the service, composes an SPN for that instance, connects to the service, and presents the SPN for the service to authenticate.

참고

이 항목에 설명된 정보는 클러스터링을 사용하는 SQL ServerSQL Server 구성에도 적용됩니다.The information that is provided in this topic also applies to SQL ServerSQL Server configurations that use clustering.

Windows 인증은 사용자를 SQL Server에 인증하는 데 사용하는 기본 인증 방법입니다.Windows Authentication is the preferred method for users to authenticate to SQL Server. Windows 인증을 사용하는 클라이언트는 NTLM이나 Kerberos를 사용하여 인증됩니다.Clients that use Windows Authentication are authenticated by either using NTLM or Kerberos. Active Directory 환경에서는 항상 Kerberos 인증이 먼저 시도됩니다.In an Active Directory environment, Kerberos authentication is always attempted first. 명명된 파이프를 사용하는 SQL Server 2005SQL Server 2005 클라이언트에는 Kerberos 인증을 사용할 수 없습니다.Kerberos authentication is not available for SQL Server 2005SQL Server 2005 clients using named pipes.

사용 권한 Permissions

데이터베이스 엔진Database Engine 서비스를 시작하면 서비스가 SPN(서비스 사용자 이름)을 등록하려고 합니다.When the 데이터베이스 엔진Database Engine service starts, it attempts to register the Service Principal Name (SPN). SQL Server를 시작하는 계정에 Active Directory 도메인 서비스에 SPN을 등록할 권한이 없으면 이 호출이 실패하고 응용 프로그램 이벤트 로그와 SQL Server 오류 로그에 경고 메시지가 기록됩니다.If the account starting SQL Server doesn’t have permission to register a SPN in Active Directory Domain Services, this call will fail and a warning message will be logged in the Application event log as well as the SQL Server error log. SPN을 등록하려면 데이터베이스 엔진Database Engine 이 로컬 시스템(권장되지 않음) 또는 NETWORK SERVICE와 같은 기본 제공 계정이나 도메인 관리자 계정과 같은 SPN 등록 권한이 있는 계정으로 실행되고 있어야 합니다.To register the SPN, the 데이터베이스 엔진Database Engine must be running under a built-in account, such as Local System (not recommended), or NETWORK SERVICE, or an account that has permission to register an SPN, such as a domain administrator account. SQL ServerSQL ServerWindows 7Windows 7 또는 Windows Server 2008 R2Windows Server 2008 R2 운영 체제에서 실행 중인 경우 가상 계정이나 MSA(관리 서비스 계정)를 사용하여 SQL ServerSQL Server 를 실행할 수 있습니다.When SQL ServerSQL Server is running on the Windows 7Windows 7 or Windows Server 2008 R2Windows Server 2008 R2 operating system, you can run SQL ServerSQL Server using a virtual account or a managed service account (MSA). 가상 계정 및 MSA 모두 SPN을 등록할 수 있습니다.Both virtual accounts and MSA’s can register an SPN. SQL ServerSQL Server 가 이러한 계정 중 하나로 실행되고 있지 않으면 시작할 때 SPN이 등록되지 않으므로 도메인 관리자가 SPN을 수동으로 등록해야 합니다.If SQL ServerSQL Server is not running under one of these accounts, the SPN is not registered at startup and the domain administrator must register the SPN manually.

참고

Windows 도메인이 적어도 Windows Server 2008 R2Windows Server 2008 R2 Windows Server 2008 R2 기능 수준 이상에서 실행되도록 구성된 경우 관리 서비스 계정에는 SQL Server 데이터베이스 엔진SQL Server Database Engine 서비스의 SPN을 등록하는 데 필요한 권한이 없습니다.When the Windows domain is configured to run at less than the Windows Server 2008 R2Windows Server 2008 R2 Windows Server 2008 R2 functional level, then the Managed Service Account will not have the necessary permissions to register the SPNs for the SQL Server 데이터베이스 엔진SQL Server Database Engine service. Kerberos 인증이 필요한 경우 도메인 관리자는 관리 서비스 계정에 SQL ServerSQL Server SPN을 수동으로 등록해야 합니다.If Kerberos authentication is required, the Domain Administrator should manually register the SQL ServerSQL Server SPNs on the Managed Service Account.

기술 자료 문서 SQL Server에서 Kerberos 인증을 사용하는 방법에는 도메인 관리자가 아닌 계정에 SPN 읽기/쓰기 권한을 부여하는 방법이 나와 있습니다.The KB article, How to use Kerberos authentication in SQL Server, contains information about how to grant read or write permission to an SPN for an account that is not a Domain Administrator.

추가 정보는 SQL Server 2008에서 Kerberos 제한된 위임을 구현하는 방법(How to Implement Kerberos Constrained Delegation with SQL Server 2008)에서 이용할 수 있습니다.Additional information is available at How to Implement Kerberos Constrained Delegation with SQL Server 2008

SPN 형식 SPN Formats

SQL Server 2008SQL Server 2008부터 SPN 형식이 TCP/IP, 명명된 파이프 및 공유 메모리에서 Kerberos 인증을 지원하도록 변경됩니다.Beginning with SQL Server 2008SQL Server 2008, the SPN format is changed in order to support Kerberos authentication on TCP/IP, named pipes, and shared memory. 명명된 인스턴스 및 기본 인스턴스에 대해 지원되는 SPN 형식은 다음과 같습니다.The supported SPN formats for named and default instances are as follows.

명명된 인스턴스Named instance

  • MSSQLSvc/FQDN:[port|instancename], 여기서:MSSQLSvc/FQDN:[port|instancename], where:

    • MSSQLSvc 는 등록할 서비스입니다.MSSQLSvc is the service that is being registered.

    • FQDN 은 서버의 정규화된 도메인 이름입니다.FQDN is the fully qualified domain name of the server.

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

    • instancenameSQL ServerSQL Server 인스턴스의 이름입니다.instancename is the name of the SQL ServerSQL Server instance.

    기본 인스턴스Default instance

  • MSSQLSvc/FQDN:port|MSSQLSvc/FQDN, 여기서:MSSQLSvc/FQDN:port|MSSQLSvc/FQDN, where:

    • MSSQLSvc 는 등록할 서비스입니다.MSSQLSvc is the service that is being registered.

    • FQDN 은 서버의 정규화된 도메인 이름입니다.FQDN is the fully qualified domain name of the server.

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

    새로운 SPN 형식에는 포트 번호가 필요하지 않습니다.The new SPN format does not require a port number. 따라서 포트 번호를 사용하지 않는 다중 포트 서버 또는 프로토콜이 Kerberos 인증을 사용할 수 있습니다.This means that a multiple-port server or a protocol that does not use port numbers can use Kerberos authentication.

참고

SPN에 TCP 포트가 포함되는 TCP/IP 연결의 경우 SQL ServerSQL Server 는 Kerberos 인증을 사용하여 연결하는 사용자를 위해 TCP 프로토콜을 사용하도록 설정해야 합니다.In the case of a TCP/IP connection, where the TCP port is included in the SPN, SQL ServerSQL Server must enable the TCP protocol for a user to connect by using Kerberos authentication.

MSSQLSvc/fqdn:portMSSQLSvc/fqdn:port TCP가 사용될 때 공급자가 생성하는 기본 SPN입니다.The provider-generated, default SPN when TCP is used. port 는 TCP 포트 번호입니다.port is a TCP port number.
MSSQLSvc/fqdnMSSQLSvc/fqdn TCP 이외의 프로토콜이 사용될 때 기본 인스턴스에 대해 공급자가 생성하는 기본 SPN입니다.The provider-generated, default SPN for a default instance when a protocol other than TCP is used. fqdn 은 정규화된 도메인 이름입니다.fqdn is a fully-qualified domain name.
MSSQLSvc/fqdn/InstanceNameMSSQLSvc/fqdn/InstanceName TCP 이외의 프로토콜이 사용될 때 명명된 인스턴스에 대해 공급자가 생성하는 기본 SPN입니다.The provider-generated, default SPN for a named instance when a protocol other than TCP is used. InstanceNameSQL ServerSQL Server인스턴스의 이름입니다.InstanceName is the name of an instance of SQL ServerSQL Server.

SPN 자동 등록 Automatic SPN Registration

SQL Server 데이터베이스 엔진SQL Server Database Engine 인스턴스가 시작되면 SQL ServerSQL Server 에서 SQL ServerSQL Server 서비스에 대한 SPN을 등록하려고 하고,When an instance of the SQL Server 데이터베이스 엔진SQL Server Database Engine starts, SQL ServerSQL Server tries to register the SPN for the SQL ServerSQL Server service. 인스턴스가 중지되면 SQL ServerSQL Server 에서 SPN의 등록을 취소하려고 합니다.When the instance is stopped, SQL ServerSQL Server tries to unregister the SPN. TCP/IP 연결의 경우 SPN은 MSSQLSvc/<FQDN>:<tcpport> 형식으로 등록됩니다. 명명된 인스턴스와 기본 인스턴스는 모두 MSSQLSvc로 등록되며, <tcpport> 값을 사용하여 구분합니다.For a TCP/IP connection the SPN is registered in the format MSSQLSvc/<FQDN>:<tcpport>.Both named instances and the default instance are registered as MSSQLSvc, relying on the <tcpport> value to differentiate the instances.

Kerberos를 지원하는 다른 연결의 경우 SPN은 명명된 인스턴스에 대해 MSSQLSvc/<FQDN>/<instancename> 형식으로 등록됩니다.For other connections that support Kerberos the SPN is registered in the format MSSQLSvc/<FQDN>/<instancename> for a named instance. 기본 인스턴스는 MSSQLSvc/<FQDN> 형식으로 등록됩니다.The format for registering the default instance is MSSQLSvc/<FQDN>.

서비스 계정에 이러한 동작을 수행하는 데 필요한 권한이 없는 경우에는 수동으로 SPN을 등록하거나 등록 취소해야 합니다.Manual intervention might be required to register or unregister the SPN if the service account lacks the permissions that are required for these actions.

수동 SPN 등록 Manual SPN Registration

SPN을 수동으로 등록하려면 관리자가 Microsoft Windows Server 2003Windows Server 2003 지원 도구와 함께 제공되는 Setspn.exe 도구를 사용해야 합니다.To register the SPN manually, the administrator must use the Setspn.exe tool that is provided with the Microsoft Windows Server 2003Windows Server 2003 Support Tools. 자세한 내용은 Windows Server 2003 서비스 팩 1 지원 도구 기술 자료 문서를 참조하십시오.For more information, see the Windows Server 2003 Service Pack 1 Support Tools KB article.

Setspn.exe는 SPN 디렉터리 속성을 읽고 수정하고 삭제하는 데 사용할 수 있는 명령줄 도구입니다.Setspn.exe is a command line tool that enables you to read, modify, and delete the Service Principal Names (SPN) directory property. 또한 이 도구를 통해 현재 SPN을 보고 계정의 기본 SPN을 다시 설정하고 보조 SPN을 추가 또는 삭제할 수도 있습니다.This tool also enables you to view the current SPNs, reset the account's default SPNs, and add or delete supplemental SPNs.

다음 예에서는 TCP/IP 연결에 대한 SPN을 수동으로 등록하는 데 사용되는 구문을 보여 줍니다.The following example illustrates the syntax used to register manually register an SPN for a TCP/IP connection.

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

참고 SPN이 이미 있는 경우에는 해당 SPN을 삭제한 후 다시 등록해야 합니다.Note If an SPN already exists, it must be deleted before it can be reregistered. 이 작업을 수행하려면 setspn 명령을 -D 스위치와 함께 사용합니다.You do this by using the setspn command together with the -D switch. 다음 예에서는 새로운 인스턴스 기반 SPN을 수동으로 등록하는 방법을 보여 줍니다.The following examples illustrate how to manually register a new instance-based SPN. 기본 인스턴스의 경우에는 다음을 사용합니다.For a default instance, use:

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

명명된 인스턴스의 경우에는 다음을 사용합니다.For a named instance, use:

setspn -A MSSQLSvc/myhost.redmond.microsoft.com/instancename accountname  

클라이언트 연결 Client Connections

사용자 지정 SPN은 클라이언트 드라이버에서 지원됩니다.User-specified SPNs are supported in client drivers. 하지만 SPN이 제공되지 않은 경우 클라이언트 연결 유형을 기준으로 SPN이 자동 생성됩니다.However, if an SPN is not provided, it will be generated automatically based on the type of a client connection. TCP 연결의 경우 명명된 인스턴스와 기본 인스턴스 모두에 대해 MSSQLSvc/FQDN:[port] 형식의 SPN이 사용됩니다.For a TCP connection, an SPN in the format MSSQLSvc/FQDN:[port] is used for both the named and default instances.

명명된 파이프와 공유 메모리 연결에서 명명된 인스턴스에는 MSSQLSvc/FQDN:instancename 형식의 SPN이 사용되고 기본 인스턴스에는 MSSQLSvc/FQDN 형식의 SPN이 사용됩니다.For named pipes and shared memory connections, an SPN in the format MSSQLSvc/FQDN:instancename is used for a named instance and MSSQLSvc/FQDN is used for the default instance.

서비스 계정을 SPN으로 사용Using a service account as an SPN

서비스 계정을 SPN으로 사용할 수 있습니다.Service accounts can be used as an SPN. 서비스 계정은 Kerberos 인증에 대한 연결 특성을 통해 지정되며 다음 형식을 사용합니다.They are specified through the connection attribute for the Kerberos authentication and take the following formats:

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

  • machine$@domain 또는 host\FQDN(로컬 시스템 또는 NETWORK SERVICES와 같은 컴퓨터 도메인 계정의 경우)machine$@domain or host\FQDN for a computer domain account such as Local System or NETWORK SERVICES.

    연결 인증 방법을 확인하려면 다음 쿼리를 실행합니다.To determine the authentication method of a connection, execute the following query.

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

인증 기본값 Authentication Defaults

다음 표에서는 SPN 등록 시나리오에 따라 다르게 사용되는 인증 기본값에 대해 설명합니다.The following table describes the authentication defaults that are used based on SPN registration scenarios.

시나리오Scenario 인증 방법Authentication method
SPN이 올바른 도메인 계정, 가상 계정, MSA 또는 기본 제공 계정에 매핑됩니다.The SPN maps to the correct domain account, virtual account, MSA, or built-in account. 예를 들어 로컬 시스템 또는 NETWORK SERVICE에 매핑됩니다.For example, Local System or NETWORK SERVICE. 로컬 연결은 NTLM을 사용하고, 원격 연결은 Kerberos를 사용합니다.Local connections use NTLM, remote connections use Kerberos.
SPN이 올바른 도메인 계정, 가상 계정, MSA 또는 기본 제공 계정입니다.The SPN is the correct domain account, virtual account, MSA, or built-in account. 로컬 연결은 NTLM을 사용하고, 원격 연결은 Kerberos를 사용합니다.Local connections use NTLM, remote connections use Kerberos.
SPN이 잘못된 도메인 계정, 가상 계정, MSA 또는 기본 제공 계정에 매핑됩니다.The SPN maps to an incorrect domain account, virtual account, MSA, or built-in account 인증에 실패하게 됩니다.Authentication fails.
SPN 조회에 실패했거나 SPN이 올바른 도메인 계정, 가상 계정, MSA 또는 기본 제공 계정에 매핑되지 않거나 SPN이 올바른 도메인 계정, 가상 계정, MSA 또는 기본 제공 계정이 아닙니다.The SPN lookup fails or does not map to a correct domain account, virtual account, MSA, or built-in account, or is not a correct domain account, virtual account, MSA, or built-in account. 로컬 및 원격 연결이 NTLM을 사용합니다.Local and remote connections use NTLM.
참고

여기서 '올바르다'는 것은 등록된 SPN에 의해 매핑되는 계정이 SQL Server 서비스를 실행하고 있는 계정과 일치함을 의미합니다.'Correct' means that the account mapped by the registered SPN is the account that the SQL Server service is running under.

설명 Comments

DAC(관리자 전용 연결)는 인스턴스 이름 기반 SPN을 사용합니다.The Dedicated Administrator Connection (DAC) uses an instance name based SPN. 해당 SPN이 성공적으로 등록되었으면 DAC에 Kerberos 인증을 사용할 수 있습니다.Kerberos authentication can be used with a DAC if that SPN is registered successfully. 또는 사용자가 계정 이름을 SPN으로 지정할 수 있습니다.As an alternative a user can specify the account name as an SPN.

시작 시 SPN 등록에 실패하면 해당 내용이 SQL ServerSQL Server 오류 로그에 기록되고 시작이 계속됩니다.If SPN registration fails during startup, this failure is recorded in the SQL ServerSQL Server error log, and startup continues.

종료 시 SPN 등록 취소에 실패하면 해당 내용이 SQL ServerSQL Server 오류 로그에 기록되고 종료가 계속됩니다.If SPN de-registration fails during shutdown, this failure is recorded in the SQL ServerSQL Server error log, and shutdown continues.

참고 항목See Also

클라이언트 연결의 SPN(서비스 사용자 이름) 지원 Service Principal Name (SPN) Support in Client Connections
클라이언트 연결의 SPN(서비스 사용자 이름)(OLE DB) Service Principal Names (SPNs) in Client Connections (OLE DB)
클라이언트 연결의 SPN(서비스 사용자 이름)(ODBC) Service Principal Names (SPNs) in Client Connections (ODBC)
SQL Server Native Client 기능 SQL Server Native Client Features
Reporting Services 환경의 Kerberos 인증 문제 관리(영문)Manage Kerberos Authentication Issues in a Reporting Services Environment