다음을 통해 공유


Linux에서 SQL Server 및 컨테이너에 대한 Active Directory 인증 문제 해결

적용 대상: SQL Server - Linux

이 문서는 SQL Server on Linux 및 컨테이너에서 Active Directory Domain Services 인증 문제를 해결하는 데 도움이 됩니다. 여기에는 성공적인 Active Directory 구성을 위한 필수 구성 요소 확인 및 팁과 일반적인 오류 및 문제 해결 단계 목록이 포함됩니다.

현재의 구성 유효성 검사

문제 해결을 시작하기 전에 현재 사용자, mssql.conf, SPN(서비스 사용자 이름) 및 영역 설정의 유효성을 검사해야 합니다.

  1. kinit을 사용하여 Kerberos TGT(Ticket Granting Ticket)를 얻거나 갱신합니다.

    kinit privilegeduser@CONTOSO.COM
    
  2. 다음 명령을 실행하여 이 명령을 실행 중인 사용자가 mssql.keytab에 액세스할 수 있는지 확인합니다.

    /opt/mssql/bin/mssql-conf validate-ad-config /var/opt/mssql/secrets/mssql.keytab
    

    validate-ad-config 명령에 대한 자세한 내용은 /opt/mssql/bin/mssql-conf validate-ad-config --help 명령을 사용하여 도움말을 참조하세요.

DNS 및 역방향 DNS 조회

  1. 도메인 이름 및 NetBIOS 이름에 대한 DNS 조회는 일반적으로 DC(도메인 컨트롤러)의 IP 주소와 일치하는 동일한 IP 주소를 반환해야 합니다. SQL Server 호스트 컴퓨터에서 이러한 명령을 실행합니다.

    nslookup contoso
    nslookup contoso.com
    

    IP 주소가 일치하지 않는 경우 SQL Server on a Linux 호스트를 Active Directory 도메인에 조인을 참조하여 DNS 조회 및 DC와의 통신을 수정합니다.

  2. 이전 결과에 나와 있는 각 IP 주소에 대해 rDNS(역방향 DNS) 조회를 수행합니다. 해당하는 경우 IPv4 및 IPv6 주소를 포함해야 합니다.

    nslookup <IPs returned from the above commands>
    

    모두 <hostname>.contoso.com을 반환해야 합니다. 그렇지 않은 경우 Active Directory에서 만든 PTR(포인터) 레코드를 확인합니다.

    rDNS가 작동하려면 도메인 관리자와 함께 작업해야 할 수 있습니다. 반환된 모든 IP 주소에 대한 PTR 항목을 추가할 수 없는 경우 SQL Server를 도메인 컨트롤러의 하위 집합으로 제한할 수도 있습니다. 이 변경 내용은 krb5.conf 호스트에서 사용하는 다른 모든 서비스에 영향을 줍니다.

    역방향 DNS에 대한 자세한 내용은 역방향 DNS란?을 참조하세요.

keytab 파일 및 사용 권한 확인

  1. keytab(키 테이블) 파일을 만들었으며 적절한 권한이 있는 올바른 파일을 사용하도록 mssql-conf 가 구성되어 있는지 확인합니다. keytab은 mssql 사용자 계정에 액세스할 수 있어야 합니다. 자세한 내용은 adutil을 사용하여 Linux에서 SQL Server Active Directory 인증 구성을 참조하세요.

  2. keytab의 내용을 나열하고 올바른 SPN, 포트, 암호화 유형 및 사용자 계정을 추가했는지 확인합니다. SPN 및 keytab 항목을 만들 때 암호를 올바르게 입력하지 않으면 Active Directory 인증을 사용하여 로그인을 시도할 때 오류가 발생합니다.

    klist -kte /var/opt/mssql/secrets/mssql.keytab
    

    작동하는 keytab의 예는 다음과 같습니다. 이 예제에서는 두 가지 암호화 유형을 사용하지만 사용자 환경에서 지원되는 암호화 유형에 따라 하나 이상의 암호화만 사용할 수 있습니다. 이 예제 sqluser@CONTOSO.COM 에서는 권한 있는 계정(mssql-confnetwork.privilegedadaccount 설정과 일치)이며 SQL Server sqllinux.contoso.com 의 호스트 이름은 기본 포트1433에서 수신 대기합니다.

    $ kinit privilegeduser@CONTOSO.COM
    Password for privilegeduser@CONTOSO.COM:
    
    $ klist
    Ticket cache: FILE:/tmp/krb5cc_1000
    Default principal: privilegeduser@CONTOSO.COM
    Valid starting     Expires            Service principal
    01/26/22 20:42:02  01/27/22 06:42:02  krbtgt/CONTOSO.COM@CONTOSO.COM
        renew until 01/27/22 20:41:57
    
    $ klist -kte mssql.keytab
    Keytab name: FILE:mssql.keytab
    KVNO Timestamp         Principal
    ---- ----------------- --------------------------------------------------------
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux@CONTOSO.COM (aes128-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux.contoso.com@CONTOSO.COM (aes128-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux:1433@CONTOSO.COM (aes128-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux.contoso.com:5533@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux.contoso.com:5533@CONTOSO.COM (aes128-cts-hmac-sha1-96)
       2 01/13/22 13:19:55 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       2 01/13/22 13:19:55 sqluser@CONTOSO.COM (aes128-cts-hmac-sha1-96)
    

krb5.conf에서 보안영역 정보의 유효성을 검사합니다.

  1. ( krb5.conf/etc/krb5.conf있음) 기본 영역, 영역 정보 및 도메인에 대한 값을 영역 매핑에 제공하는지 확인합니다. 다음 예제는 krb5.conf 파일의 예제입니다. 자세한 내용은 Linux 및 컨테이너의 SQL Server에 대한 Active Directory 인증 이해(Understand Active Directory Authentication)를 참조 하세요.

    [libdefaults]
    default_realm = CONTOSO.COM
    default_keytab_name = /var/opt/mssql/secrets/mssql.keytab
    default_ccache_name = ""
    
    [realms]
    CONTOSO.COM = {
        kdc = adVM.contoso.com
        admin_server = adVM.contoso.com
        default_domain= contoso.com
    }
    
    [domain_realm]
    .contoso.com = CONTOSO.COM
    contoso.com = CONTOSO.COM
    
  2. 도메인 컨트롤러의 하위 집합에 연결하도록 SQL Server를 제한할 수 있습니다. 연결해야 하는 SQL Server보다 DNS 구성에서 더 많은 도메인 컨트롤러를 반환하는 경우에 유용합니다. SQL Server on Linux를 사용하면 LDAP(Lightweight Directory Access Protocol) 조회를 수행할 때 SQL Server가 라운드 로빈 방식으로 접촉하는 도메인 컨트롤러 목록을 지정할 수 있습니다.

    두 단계를 완료해야 합니다. 먼저 필요한 도메인 컨트롤러 수를 추가하여 krb5.conf를 수정합니다. 접두사로 kdc =을(를) 사용합니다.

    [realms]
    CONTOSO.COM = {
      kdc = kdc1.contoso.com
      kdc = kdc2.contoso.com
      ..
      ..
    }
    

    krb5.conf 일반적인 Kerberos 클라이언트 구성 파일이므로 이 파일에서 변경한 내용은 SQL Server 외에 다른 서비스에 영향을 줍니다. 변경하기 전에 도메인 관리자에게 문의하세요.

    그런 다음 mssql-conf를 사용하여 설정을 사용하도록 설정한 network.enablekdcfromkrb5conf 다음 SQL Server를 다시 시작할 수 있습니다.

    sudo /opt/mssql/bin/mssql-conf set network.enablekdcfromkrb5conf true
    sudo systemctl restart mssql-server
    

Kerberos 문제 해결

Active Directory 인증 문제를 해결하고 특정 오류 메시지를 식별하는 데 도움이 되는 아래 세부 정보를 참조하세요.

Kerberos 추적

사용자, SPN 및 keytab을 만들고 mssql-conf를 구성하여 SQL Server on Linux의 Active Directory 구성이 올바른지 확인한 후 다음 명령을 사용하여 권한 있는 계정으로 Kerberos TGT를 가져오거나 갱신하려고 할 때 Kerberos 추적 메시지를 콘솔(stdout)에 표시할 수 있습니다.

root@sqllinux mssql# KRB5_TRACE=/dev/stdout kinit -kt /var/opt/mssql/secrets/mssql.keytab sqluser

문제가 없는 경우 아래 샘플과 유사한 출력이 표시됩니다. 그렇지 않은 경우 추적은 검토해야 하는 단계에 대한 컨텍스트를 제공합니다.

3791545 1640722276.100275: Getting initial credentials for sqluser@CONTOSO.COM
3791545 1640722276.100276: Looked up etypes in keytab: aes256-cts, aes128-cts
3791545 1640722276.100278: Sending unauthenticated request
3791545 1640722276.100279: Sending request (202 bytes) to CONTOSO.COM
3791545 1640722276.100280: Initiating TCP connection to stream 10.0.0.4:88
3791545 1640722276.100281: Sending TCP request to stream 10.0.0.4:88
3791545 1640722276.100282: Received answer (185 bytes) from stream 10.0.0.4:88
3791545 1640722276.100283: Terminating TCP connection to stream 10.0.0.4:88
3791545 1640722276.100284: Response was from master KDC
3791545 1640722276.100285: Received error from KDC: -1765328359/Additional pre-authentication required
3791545 1640722276.100288: Preauthenticating using KDC method data
3791545 1640722276.100289: Processing preauth types: PA-PK-AS-REQ (16), PA-PK-AS-REP_OLD (15), PA-ETYPE-INFO2 (19), PA-ENC-TIMESTAMP (2)
3791545 1640722276.100290: Selected etype info: etype aes256-cts, salt "CONTOSO.COMsqluser", params ""
3791545 1640722276.100291: Retrieving sqluser@CONTOSO.COM from /var/opt/mssql/secrets/mssql.keytab (vno 0, enctype aes256-cts) with result: 0/Success
3791545 1640722276.100292: AS key obtained for encrypted timestamp: aes256-cts/E84B
3791545 1640722276.100294: Encrypted timestamp (for 1640722276.700930): plain 301AA011180F32303231313XXXXXXXXXXXXXXXXXXXXXXXXXXXXX, encrypted 333109B95898D1B4FC1837DAE3E4CBD33AF8XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3791545 1640722276.100295: Preauth module encrypted_timestamp (2) (real) returned: 0/Success
3791545 1640722276.100296: Produced preauth for next request: PA-ENC-TIMESTAMP (2)
3791545 1640722276.100297: Sending request (282 bytes) to CONTOSO.COM
3791545 1640722276.100298: Initiating TCP connection to stream 10.0.0.4:88
3791545 1640722276.100299: Sending TCP request to stream 10.0.0.4:88
3791545 1640722276.100300: Received answer (1604 bytes) from stream 10.0.0.4:88
3791545 1640722276.100301: Terminating TCP connection to stream 10.0.0.4:88
3791545 1640722276.100302: Response was from master KDC
3791545 1640722276.100303: Processing preauth types: PA-ETYPE-INFO2 (19)
3791545 1640722276.100304: Selected etype info: etype aes256-cts, salt "CONTOSO.COMsqluser", params ""
3791545 1640722276.100305: Produced preauth for next request: (empty)
3791545 1640722276.100306: AS key determined by preauth: aes256-cts/E84B
3791545 1640722276.100307: Decrypted AS reply; session key is: aes256-cts/05C0
3791545 1640722276.100308: FAST negotiation: unavailable
3791545 1640722276.100309: Initializing KCM:0:37337 with default princ sqluser@CONTOSO.COM
3791545 1640722276.100310: Storing sqluser@CONTOSO.COM -> krbtgt/CONTOSO.COM@CONTOSO.COM in KCM:0:37337
3791545 1640722276.100311: Storing config in KCM:0:37337 for krbtgt/CONTOSO.COM@CONTOSO.COM: pa_type: 2
3791545 1640722276.100312: Storing sqluser@CONTOSO.COM -> krb5_ccache_conf_data/pa_type/krbtgt/CONTOSO.COM@CONTOSO.COM@X-CACHECONF: in KCM:0:37337

$ sudo klist
Ticket cache: KCM:0:37337
Default principal: sqluser@CONTOSO.COM
Valid starting Expires Service principal
12/28/2021 20:11:16 12/29/2021 06:11:16 krbtgt/CONTOSO.COM@CONTOSO.COM
renew until 01/04/2022 20:11:16

Kerberos 및 보안 기반 PAL 로깅 사용

PAL(플랫폼 추상화 계층)에서 특정 오류 메시지를 식별하도록 security.kerberossecurity.ldap 로깅을 사용하도록 설정할 수 있습니다. /var/opt/mssql/에 아래에 표시된 콘텐츠가 포함된 logger.ini 파일을 만들고, SQL Server를 다시 시작한 다음, 오류를 재현합니다. PAL의 Active Directory 오류 및 디버그 메시지가 로깅됩니다 /var/opt/mssql/log/security.log.

[Output:security]
Type = File
Filename = /var/opt/mssql/log/security.log
[Logger]
Level = Silent
[Logger:security.kerberos]
Level = Debug
Outputs = security
[Logger:security.ldap]
Level = debug
Outputs = security

logger.ini에서 로거 변경 내용을 선택할 수 있도록 SQL Server를 다시 시작할 필요는 없지만, SQL Server 시작 중에 Active Directory 서비스를 초기화하는 동안 오류가 발생할 수 있으며, 그렇지 않으면 눈에 띄지 않습니다. SQL Server를 다시 시작하면 모든 오류 메시지가 캡처됩니다.

보안 로그는 logger.ini의 변경 내용을 제거할 때까지 드라이브에 계속 기록됩니다. 드라이브의 공간이 부족하지 않도록 문제를 식별하고 해결한 후에는 사용하지 않도록 설정하고 security.kerberos security.ldap 로깅해야 합니다.

PAL 로거는 다음 형식으로 로그 파일을 생성합니다.

<DATETIME> <Log level> [<logger>] <<process/thread identifier>> <message>

예를 들어 로그의 샘플 줄은 다음과 같습니다.

12/28/2021 13:56:31.609453055 Error [security.kerberos] <0003753757/0x00000324> Request ticket server MSSQLSvc/sql.contoso.com:1433@CONTOSO.COM kvno 3 enctype aes256-cts found in keytab but cannot decrypt ticket

PAL 로깅을 사용하도록 설정하고 문제를 재현했으면 Error 로그 수준의 첫 번째 메시지를 찾은 다음 아래 표를 사용하여 오류를 찾고 지침 및 권장 사항에 따라 문제를 해결합니다.

일반적인 오류 메시지

오류 메시지: “로그인하지 못했습니다. 신뢰할 수 없는 도메인의 로그인이며 Windows 인증과 함께 사용할 수 없습니다.”

가능한 원인

이 오류는 Active Directory 인증을 구성한 후 Active Directory 계정을 사용하여 로그인을 시도할 때 발생합니다.

지침

이 일반 오류 메시지를 사용하려면 PAL 로깅사용하도록 설정하여 특정 오류를 식별해야 합니다.

각 오류의 가능한 원인을 식별하려면 다음 일반적인 오류 목록을 참조한 다음 문제 해결 지침에 따라 문제를 해결합니다.

오류 메시지
Windows NT 사용자 또는 그룹인 ‘CONTOSO\user’를 찾을 수 없음
오류로 인해 짧은 도메인 이름을 조회할 수 없음
오류로 인해 호스트 <hostname>에 대한 rDNS 조회를 수행할 수 없음
rDNS 조회에서 반환되지 않는 FQDN
LDAP 서버에 바인딩하지 못함
키 테이블 항목을 찾을 수 없음
<principal>에 대한 키 테이블 항목을 찾을 수 없음
keytab(ticket kvno <KVNO>)에서 요청 티켓 서버 <principal>을 찾을 수 없음
요청 티켓 서버 <principal> kvno <KVNO>가 keytab에 있지만 enctype <encryption type>이 없음
요청 티켓 서버 <principal> kvno <KVNO> enctype <encryption type>이 keytab에 있지만 티켓을 암호 해독할 수 없음

오류 메시지: Windows NT 사용자 또는 그룹인 ‘CONTOSO\user’를 찾을 수 없음

가능한 원인

Windows 로그인을 만들거나 그룹을 새로 고치는 동안 이 오류가 발생할 수 있습니다.

지침

문제의 유효성을 검사하려면 "로그인 실패"에 대해 설명된 지침을 따릅니다. 신뢰할 수 없는 도메인의 로그인이며 Windows 인증과 함께 사용할 수 없습니다. (Microsoft SQL Server, 오류: 18452)”에 대해 설명된 지침을 따르세요. PAL 로깅을 사용하도록 설정하여 특정 오류를 식별하고 그에 따라 문제를 해결합니다.

오류 메시지: “오류로 인해 짧은 도메인 이름을 조회할 수 없음”

가능한 원인

Active Directory 로그인을 만드는 Transact-SQL 구문은 다음과 같습니다.

CREATE LOGIN [CONTOSO\user]
    FROM WINDOWS;

NetBIOS 이름(CONTOSO)은 명령에 필요하지만 백 엔드에서 LDAP 연결을 수행할 때 도메인의 FQDN(contoso.com)을 제공해야 합니다. 이 변환을 수행하려면 CONTOSO에서 DNS 조회를 수행하여 도메인 컨트롤러의 IP를 확인합니다. 그러면 LDAP 쿼리에 바인딩할 수 있습니다.

지침

“오류로 인해 짧은 도메인 이름을 조회할 수 없습니다.”라는 오류 메시지는 contoso에 대한 nslookup이 도메인 컨트롤러의 IP 주소로 확인되지 않음을 나타냅니다. DNS 및 역방향 DNS 조회를 검토하여 NetBIOS 및 도메인 이름 모두에 대해 nslookup이 일치해야 하는지 확인해야 합니다.

오류 메시지: "오류로 인해 호스트 <호스트 이름> 에 대해 rDNS 조회를 수행할 수 없습니다." 또는 "rDNS 조회에서 반환되지 않은 FQDN"

가능한 원인

이 오류 메시지는 일반적으로 모든 도메인 컨트롤러에 대해 역방향 DNS 레코드(PTR 레코드)가 존재하지 않음을 나타냅니다.

지침

DNS 및 역방향 DNS 조회를 확인합니다. rDNS 항목이 없는 도메인 컨트롤러가 식별되면 다음 두 가지 옵션이 있습니다.

  • 모든 도메인 컨트롤러에 대한 rDNS 항목 추가

    이 설정은 SQL Server 설정이 아니며 도메인 수준에서 구성해야 합니다. 도메인 관리 팀과 협력하여 도메인 이름에서 nslookup을 실행할 때 반환되는 모든 도메인 컨트롤러에 필요한 PTR 레코드를 만들어야 할 수 있습니다.

  • SQL Server를 도메인 컨트롤러의 하위 집합으로 제한

    반환된 모든 도메인 컨트롤러에 대해 PTR 레코드를 추가할 수 없는 경우 SQL Server를 도메인 컨트롤러의 하위 집합으로 제한할 수 있습니다.

오류 메시지: “LDAP 서버에 바인딩하지 못했습니다 ldap://CONTOSO.COM:3268: 로컬 오류”

가능한 원인

OpenLDAP의 이 일반적인 오류는 일반적으로 다음 두 가지 중 하나를 의미합니다.

  • 자격 증명 사용 안 함
  • rDNS 문제

오류 메시지의 예는 다음과 같습니다.

12/09/2021 14:32:11.319933684 Error [security.ldap] <0000000142/0x000001c0> Failed to bind to LDAP server ldap://[CONTOSO.COM:3268]: Local error

지침

  • 자격 증명 사용 안 함

    자격 증명이 LDAP 연결에 대해 로드되지 않으면 다른 오류 메시지가 먼저 throw됩니다. PAL 로깅을 사용하도록 설정하여 오류 로그에서 오류 메시지를 확인해야 합니다. 다른 오류가 없는 경우 자격 증명 문제가 아닐 수 있습니다. 오류가 발견되면 표시되는 오류 메시지를 수정합니다. 대부분의 경우 이 문서에서 다루는 오류 메시지 중 하나입니다.

  • rDNS 문제

    DNS 및 역방향 DNS 조회를 확인합니다.

    OpenLDAP 라이브러리가 도메인 컨트롤러에 연결되면 이 예제 contoso.com에서 FQDN(정규화된 도메인 이름) 또는 DC의 FQDN(kdc1.contoso.com)이 제공됩니다. 연결되면(그러나 호출자에게 성공이 반환되기 전) OpenLDAP 라이브러리는 연결된 서버의 IP를 확인합니다. 그런 다음 역방향 DNS 조회를 수행하고 (kdc1.contoso.com)에 연결된 서버의 이름이 연결이 요청된 도메인(contoso.com)과 일치하는지 확인합니다. 일치하지 않으면 OpenLDAP 라이브러리가 보안 기능으로 연결에 실패합니다. 이는 RDNS 설정이 SQL Server on Linux에 매우 중요한 이유 중 일부이며 이 문서의 초점입니다.

오류 메시지: “키 테이블 항목을 찾을 수 없음”

가능한 원인

이 오류는 keytab 파일의 액세스 문제를 나타내거나 keytab에 필요한 모든 항목이 없음을 나타냅니다.

지침

keytab 파일에 올바른 액세스 수준 및 권한이 있는지 확인합니다. keytab 파일의 기본 위치 및 이름은 /var/opt/mssql/secrets/mssql.keytab입니다. 비밀 폴더 아래 모든 파일에 대한 현재 사용 권한을 보려면 다음 명령을 실행하면 됩니다.

sudo ls -lrt /var/opt/mssql/secrets

다음 명령을 사용하여 keytab 파일에 대한 사용 권한 및 액세스 수준을 설정할 수 있습니다.

sudo chown mssql /var/opt/mssql/secrets/mssql.keytab
sudo chmod 440 /var/opt/mssql/secrets/mssql.keytab

keytab 항목을 나열하고 올바른 권한을 설정하는 방법에 대한 자세한 내용은 이전 키 탭 파일 및 권한 확인 섹션을 참조하세요 . 해당 섹션의 조건이 충족되지 않으면 다음과 같은 오류가 표시됩니다 "Key table entry not found".

오류 메시지: “<principal>에 대한 키 테이블 항목을 찾을 수 없음”

가능한 원인

keytab에서 <principal>의 자격 증명을 검색하려고 할 때 해당 항목을 찾을 수 없습니다.

지침

keytab의 모든 항목을 나열하려면 이 문서의 키탭 파일 및 사용 권한 확인 섹션을 따릅니다. <principal>인지 확인합니다. 이 경우 주 계정은 일반적으로 network.privilegedadaccount SPN이 등록된 계정입니다. 그렇지 않은 경우 adutil 명령을 사용하여 추가합니다. 자세한 내용은 adutil을 사용하여 Linux에서 SQL Server Active Directory 인증 구성을 참조하세요.

오류 메시지: “keytab(ticket kvno <KVNO>)에서 요청 티켓 서버 <principal>을 찾을 수 없음”

가능한 원인

이 오류는 SQL Server가 지정된 KVNO(키 버전 번호)가 있는 요청된 티켓에 대한 keytab 항목을 찾을 수 없다는 것을 나타냅니다.

지침

keytab의 모든 항목을 나열하려면 이 문서의 키탭 파일 및 사용 권한 확인 섹션을 따릅니다. <principal> 및 KVNO가 일치하는 오류 메시지를 찾을 수 없는 경우 해당 섹션에 설명된 단계를 사용하여 keytab 파일을 업데이트한 후 이 항목을 추가합니다.

다음 명령을 실행하여 DC에서 최신 KVNO를 가져올 수도 있습니다. 이 명령을 실행하기 전에 kinit 명령을 사용하여 Kerberos TGT를 가져오거나 갱신해야 합니다. 자세한 내용은 adutil 도구를 사용하여 SQL Server의 Active Directory 사용자 만들기 및 SPN 설정을 참조하세요.

kvno MSSQLSvc/<hostname>

오류 메시지: “요청 티켓 서버 <principal> kvno <KVNO>가 keytab에 있지만 enctype <encryption type>이 없음”

가능한 원인

이 오류는 클라이언트가 요청한 암호화 유형이 SQL Server의 keytab에 없음을 의미합니다.

지침

유효성을 검사하려면 이 문서의 keytab 파일 및 사용 권한 확인 섹션에 따라 keytab의 모든 항목을 나열합니다. 보안 주체, KVNO 및 암호화 형식이 일치하는 오류 메시지를 찾을 수 없는 경우 해당 섹션에 설명된 단계를 사용하여 keytab 파일을 업데이트한 후 이 항목을 추가합니다.

오류 메시지: “요청 티켓 서버 <principal> kvno <KVNO> enctype <encryption type>이 keytab에 있지만 티켓을 암호 해독할 수 없음”

가능한 원인

이 오류는 SQL Server에서 들어오는 인증 요청을 해독하기 위해 keytab 파일의 자격 증명을 사용할 수 없음을 나타냅니다. 오류는 종종 잘못된 암호의 결과입니다.

지침

올바른 암호를 사용하여 keytab을 다시 만듭니다. adutil을 사용하는 경우 자습서의 단계를 사용하여 올바른 암호로 keytab을 만듭니다. adutil을 사용하여 SQL Server on Linux에서 Active Directory 인증을 구성합니다.

공통 포트

이 표에서는 SQL Server on Linux에서 Active Directory 인증을 구성하고 관리하는 데 사용하는 공통 포트를 보여 줍니다.

Active Directory 서비스 포트
DNS 53
LDAP 389
LDAPS 636
Kerberos 88