Partilhar via


Girar a Instância Gerenciada SQL habilitada pelo keytab gerenciado pelo cliente do Azure Arc

Este artigo descreve como girar keytabs gerenciados pelo cliente para a Instância Gerenciada SQL habilitada pelo Azure Arc. Essas keytabs são usadas para habilitar logons do Ative Directory para a instância gerenciada.

Pré-requisitos:

Antes de prosseguir com este artigo, você deve ter um conector do Ative Directory no modo keytab gerenciado pelo cliente e uma Instância Gerenciada do SQL habilitada pelo Azure Arc criada.

Como girar keytabs gerenciados pelo cliente em uma instância gerenciada

As seguintes etapas precisam ser seguidas para girar a tecla tab:

  1. Obtenha kvno valor para a geração atual de credenciais para a conta do Ative Directory do SQL MI.
  2. Crie um novo arquivo keytab com entradas para a geração atual de credenciais. Especificamente, o valor deve corresponder à kvno etapa (1.) acima.
  3. Atualize o novo arquivo keytab com novas entradas para as novas credenciais da conta do Ative Directory do SQL MI.
  4. Crie um segredo do kubernetes contendo o conteúdo do novo arquivo keytab no mesmo namespace que o SQL MI.
  5. Edite a especificação SQL MI para apontar a configuração secreta keytab do Ative Directory para esse novo segredo.
  6. Altere a senha no domínio do Ative Directory.

Fornecemos os seguintes scripts PowerShell e bash que cuidarão das etapas de 1 a 5 para você:

  • rotate-sqlmi-keytab.sh - Este script bash usa ktutil ou adutil (se a --use-adutil bandeira for especificada) para gerar o novo keytab para você.
  • rotate-sqlmi-keytab.ps1 - Este script do PowerShell usa ktpass.exe para gerar o novo keytab para você.

Executar o script acima resultaria no seguinte arquivo keytab para o usuário arcsqlmi@CONTOSO.COM, segredo sqlmi-keytab-secret-kvno-2-3 e namespace test:

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)

E a seguinte especificação updated-secret.yaml:

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

Finalmente, altere a senha arcsqlmi da conta de usuário no controlador de domínio para o domínio contoso.comdo Ative Directory:

  1. Abra o Gerenciador do Servidor no controlador de domínio para o domínio contoso.comdo Ative Directory . Você pode procurar o Gerenciador do Servidor ou abri-lo através do menu Iniciar.

  2. Vá para Ferramentas>Usuários e Computadores do Ative Directory

    Captura de ecrã de Utilizadores e Computadores do Ative Directory.

  3. Selecione o usuário para o qual você deseja alterar a senha. Clique com o botão direito do mouse para selecionar o usuário. Selecione Redefinir senha:

    Captura de tela do controle para redefinir a senha de uma conta de usuário do Ative Directory.

  4. Digite nova senha e selecione OK.

Solução de problemas de erros após a rotação

Caso haja erros ao tentar usar a Autenticação do Ative Directory depois de concluir a arc-sqlmi rotação do keytab, os seguintes arquivos no contêiner no pod SQL MI são um bom lugar para começar a investigar a causa raiz:

  • security.log localizado em /var/opt/mssql/log - Este arquivo de log tem logs para interações do SQL com o domínio do Ative Directory.
  • errorlog localizado em /var/opt/mssql/log - Este arquivo de log contém logs do SQL Server em execução no contêiner.
  • mssql.keytab localizado em /var/run/secrets/managed/keytabs/mssql - Verifique se esse arquivo keytab contém as entradas recém-atualizadas e corresponde ao arquivo keytab criado usando os scripts fornecidos acima. O arquivo keytab pode ser lido usando o klist comando, ou seja, klist -k mssql.keytab -e

Além disso, depois de obter o kerberos Ticket-Granting Ticket (TGT) usando kinit o comando, verifique se o kvno do usuário SQL corresponde ao mais alto kvno no mssql.keytab arquivo no arc-sqlmi contêiner. Por exemplo, para arcsqlmi@CONTOSO.COM o usuário:

  • Obtenha o kerberos TGT do domínio do Ative Directory executando kinit arcsqlmi@CONTOSO.COMo . Isso solicitará uma entrada do usuário para a senha do arcsqlmi usuário.
  • Uma vez que isso seja bem-sucedido, o pode ser consultado kvno executando kvno arcsqlmi@CONTOSO.COM.

Também podemos habilitar o log de depuração para o kinit comando executando o seguinte: KRB5_TRACE=/dev/stdout kinit -V arcsqlmi@CONTOSO.COM. Isso aumenta a verbosidade e envia os logs para stdout à medida que o comando está sendo executado.