Azure Arc 고객 관리형 keytab에서 지원되는 SQL Managed Instance 순환

이 문서에서는 Azure Arc에서 지원되는 SQL Managed Instance에 대한 고객 관리형 keytab을 순환하는 방법을 설명합니다. 이러한 keytab은 관리되는 인스턴스에 대해 Active Directory 로그인을 사용하도록 설정하는 데 사용됩니다.

필수 조건:

이 문서를 계속 진행하기 전에 고객 관리형 keytab 모드의 Active Directory 커넥터와 Azure Arc에서 사용하도록 설정된 SQL Managed Instance가 있어야 합니다.

관리되는 인스턴스에서 고객 관리형 keytab을 순환하는 방법

keytab을 순환하려면 다음 단계를 수행해야 합니다.

  1. SQL MI Active Directory 계정의 현재 자격 증명 생성에 대한 kvno 값을 가져옵니다.
  2. 현재 자격 증명 생성에 대한 항목이 있는 새 keytab 파일을 만듭니다. 특히 kvno 값은 위의 단계(1.)와 일치해야 합니다.
  3. SQL MI Active Directory 계정의 새 자격 증명에 대한 새 항목으로 새 keytab 파일을 업데이트합니다.
  4. SQL MI와 동일한 네임스페이스에 새 keytab 파일 콘텐츠를 포함하는 kubernetes 비밀을 만듭니다.
  5. Active Directory keytab 비밀 설정이 이 새 비밀을 가리키도록 SQL MI 사양을 편집합니다.
  6. Active Directory 도메인에서 암호를 변경합니다.

1-5단계를 처리할 다음 PowerShell 및 bash 스크립트를 제공했습니다.

  • rotate-sqlmi-keytab.sh - 이 bash 스크립트는 ktutil 또는 adutil(--use-adutil 플래그가 지정된 경우)을 사용하여 새 keytab을 생성합니다.
  • rotate-sqlmi-keytab.ps1 - 이 PowerShell 스크립트는 ktpass.exe를 사용하여 새 keytab을 생성합니다.

위의 스크립트를 실행하면 사용자 arcsqlmi@CONTOSO.COM, 비밀 sqlmi-keytab-secret-kvno-2-3 및 네임스페이스 test에 대해 다음 keytab 파일이 생성됩니다.

KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   2 02/16/2023 17:12:05 arcsqlmiuser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 
   2 02/16/2023 17:12:05 arcsqlmiuser@CONTOSO.COM (arcfour-hmac) 
   2 02/16/2023 17:12:05 MSSQLSvc/arcsqlmi.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 
   2 02/16/2023 17:12:05 MSSQLSvc/arcsqlmi.contoso.com@CONTOSO.COM (arcfour-hmac) 
   2 02/16/2023 17:12:05 MSSQLSvc/arcsqlmi.contoso.com:31433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 
   2 02/16/2023 17:12:05 MSSQLSvc/arcsqlmi.contoso.com:31433@CONTOSO.COM (arcfour-hmac) 
   3 02/16/2023 17:13:41 arcsqlmiuser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 
   3 02/16/2023 17:13:41 arcsqlmiuser@CONTOSO.COM (arcfour-hmac) 
   3 02/16/2023 17:13:41 MSSQLSvc/arcsqlmi.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 
   3 02/16/2023 17:13:41 MSSQLSvc/arcsqlmi.contoso.com@CONTOSO.COM (arcfour-hmac) 
   3 02/16/2023 17:13:41 MSSQLSvc/arcsqlmi.contoso.com:31433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 
   3 02/16/2023 17:13:41 MSSQLSvc/arcsqlmi.contoso.com:31433@CONTOSO.COM (arcfour-hmac)

다음 updated-secret.yaml 사양은 다음과 같습니다.

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: sqlmi-keytab-secret-kvno-2-3
  namespace: test
data:
  keytab:
    <keytab-contents>

마지막으로 Active Directory 도메인 contoso.com의 도메인 컨트롤러에서 arcsqlmi 사용자 계정의 암호를 변경합니다.

  1. Active Directory 도메인 contoso.com의 도메인 컨트롤러에서 서버 관리자를 엽니다. 서버 관리자를 검색하거나 시작 메뉴를 통해 열 수 있습니다.

  2. 도구>Active Directory 사용자 및 컴퓨터로 이동합니다.

    Screenshot of Active Directory Users and Computers.

  3. 암호를 변경할 사용자를 선택합니다. 마우스 오른쪽 단추를 클릭하여 사용자를 선택합니다. 암호 다시 설정을 선택합니다.

    Screenshot of the control to reset the password for an Active Directory user account.

  4. 새 암호를 입력하고 OK를 선택합니다.

순환 후 오류 문제 해결

keytab 순환을 완료한 후 Active Directory 인증을 사용하려고 할 때 오류가 발생하는 경우 SQL MI Pod의 arc-sqlmi 컨테이너에 있는 다음 파일을 참조하여 근본 원인 조사를 시작할 수 있습니다.

  • /var/opt/mssql/log에 있는 security.log 파일 - 이 로그 파일에는 Active Directory 도메인과 SQL의 상호 작용에 대한 로그가 있습니다.
  • /var/opt/mssql/log에 있는 errorlog 파일 - 이 로그 파일에는 컨테이너에서 실행되는 SQL Server의 로그가 포함됩니다.
  • /var/run/secrets/managed/keytabs/mssql에 있는 mssql.keytab 파일 - 이 keytab 파일에 새로 업데이트된 항목이 포함되어 있고 위에 제공된 스크립트를 사용하여 만든 keytab 파일과 일치하는지 확인합니다. keytab 파일은 klist 명령(예: klist -k mssql.keytab -e)을 사용하여 읽을 수 있습니다.

또한 kinit 명령을 사용하여 kerberos TGT(Ticket-Granting Ticket)를 받은 후 SQL 사용자의 kvnoarc-sqlmi 컨테이너의 mssql.keytab 파일에 있는 가장 높은 kvno와 일치하는지 확인합니다. 예를 들어 arcsqlmi@CONTOSO.COM 사용자의 경우:

  • kinit arcsqlmi@CONTOSO.COM을 실행하여 Active Directory 도메인에서 kerberos TGT를 가져옵니다. 그러면 arcsqlmi 사용자의 암호를 입력하라는 메시지가 표시됩니다.
  • 이 작업이 성공하면 kvno arcsqlmi@CONTOSO.COM을 실행하여 kvno를 쿼리할 수 있습니다.

KRB5_TRACE=/dev/stdout kinit -V arcsqlmi@CONTOSO.COM을 실행하여 kinit 명령에 대한 디버그 로깅을 사용하도록 설정할 수도 있습니다. 이렇게 하면 좀 더 자세한 정보가 표시되고, 명령이 실행될 때 로그가 stdout으로 출력됩니다.