본문 바로가기

MSSQL

MSSQL : SPN 등록 및 삭제 방법

반응형

SPN(Service Principal Name)은 서비스의 인스턴스를 고유하게 식별하는 이름입니다. Kerberos 인증 서비스는 SPN을 사용하여 서비스를 인증할 수 있습니다. 클라이언트가 서비스에 연결하려면 서비스의 인스턴스를 찾아 SPN을 구성하고, 서비스에 연결하고, 서비스를 인증하기 위해 SPN을 제시합니다.

SQL Server에서 Kerberos 인증을 사용하려면 어떻게 해야 하나요?
SQL Server에서 Kerberos 인증을 사용하려면 다음 두 가지 조건이 모두 충족되어야 합니다:

 

  • 클라이언트와 서버 컴퓨터는 동일한 Windows 도메인이나 신뢰할 수 있는 도메인에 속해야 합니다.
  • SPN은 Active Directory에 등록되어야 합니다. Active Directory는 Windows 도메인에서 키 배포 센터의 역할을 수행합니다. SPN은 등록된 후 SQL Server 인스턴스 서비스를 시작한 Windows 계정에 매핑됩니다.

SPN 등록이 수행되지 않거나 실패하면, Windows 보안 계층은 SPN과 관련된 계정을 결정할 수 없으며, Kerberos 인증이 사용되지 않습니다.

SPN은 어떤 형식으로 구성되나요?
SQL Server에 대한 SPN은 다음과 같은 형식으로 구성됩니다:

MSSQLSvc/<FQDN>:<port>

여기서,

  • MSSQLSvc는 등록되는 서비스입니다.
  • <FQDN>은 서버의 전체 도메인 이름입니다.
  • <port>는 TCP 포트 번호입니다.


예를 들어, SQL Server의 FQDN이 SQLA.TestDomain.com이고 기본 포트 1433에서 실행되고 있다면, 기본 인스턴스에 대한 SPN은 다음과 같습니다.

MSSQLSvc/SQLA.TestDomain.com:1433

SPN은 어떻게 등록하나요?
SPN은 다음 두 가지 방법으로 등록할 수 있습니다:

  • 자동 SPN 등록: 데이터베이스 엔진 서비스가 시작될 때 SPN을 등록하려고 시도합니다. 이를 위해서는 SQL Server 서비스 계정이 도메인에서 SPN을 생성하고 삭제할 수 있는 권한이 있어야 합니다.
  • 수동 SPN 등록: 서버가 SPN을 자동으로 등록할 수 없는 경우, SPN은 수동으로 등록해야 합니다. 이를 위해서는 setspn 명령줄 도구를 사용하거나 Active Directory 도구를 사용할 수 있습니다.
SPN 등록
  SETSPN -A MSSQLSvc/xxxxx 서비스계정   SETSPN -A MSSQLSvc/xxxxx:포트 서비스계정
 
SPN 해제
SETSPN -D MSSQLSvc/xxxxx 서비스계정SETSPN -D MSSQLSvc/xxxxx:포트 서비스계정
 
SPN 확인
SETSPN -L 서비스계정

 

SPN 등록이 제대로 되었는지 어떻게 확인하나요?
SPN 등록이 제대로 되었는지 확인하기 위해서는 다음과 같은 방법을 사용할 수 있습니다:

  • SQL Server 오류 로그를 확인합니다. SPN 등록에 문제가 있으면 오류 메시지가 기록됩니다.
  • sys.dm_exec_connections 동적 관리 뷰를 쿼리합니다. 다음 쿼리를 실행하고 auth_scheme 열의 값을 확인합니다. Kerberos가 활성화되어 있으면 KERBEROS라고 표시됩니다.
SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID;
  • Microsoft Kerberos Configuration Manager for SQL Server 도구를 사용합니다. 이 도구는 Kerberos 관련 연결 문제를 진단하는 도구입니다.

오류 발생 시 상황

 

반응형