Partager via


Faire pivoter SQL Managed Instance activé par Azure Arc avec keytab géré par le client

Cet article explique comment faire pivoter les keytabs gérés par le client pour SQL Managed Instance activés par Azure Arc. Ces clés sont utilisées pour activer les connexions Active Directory pour l’instance managée.

Configuration requise :

Avant de poursuivre cet article, vous devez disposer d’un connecteur Active Directory en mode keytab géré par le client et d’une instance managée SQL activée par Azure Arc.

Comment faire pivoter les keytabs gérés par le client dans une instance managée

Les étapes suivantes doivent être suivies pour faire pivoter le keytab :

  1. Obtenez la valeur kvno pour la génération actuelle d’informations d’identification pour le compte ACTIVE Directory SQL MI.
  2. Créez un fichier keytab avec des entrées pour la génération actuelle d’informations d’identification. Plus précisément, la valeur kvno doit correspondre à l’étape (1.) ci-dessus.
  3. Mettez à jour le nouveau fichier keytab avec de nouvelles entrées pour les nouvelles informations d’identification pour le compte ACTIVE Directory SQL MI.
  4. Créez un secret Kubernetes contenant le nouveau contenu du fichier keytab dans le même espace de noms que l’instance SQL MI.
  5. Modifiez la spécification SQL MI pour pointer le paramètre de secret keytab Active Directory vers ce nouveau secret.
  6. Modifiez le mot de passe dans le domaine Active Directory.

Nous avons fourni les scripts PowerShell et bash suivants qui prendront en charge les étapes 1 à 5 pour vous :

  • rotate-sqlmi-keytab.sh : ce script bash utilise ktutil ou adutil (si l’indicateur --use-adutil est spécifié) pour générer le nouveau keytab pour vous.
  • rotate-sqlmi-keytab.ps1 : ce script PowerShell utilise ktpass.exe pour générer le nouveau keytab pour vous.

L’exécution du script ci-dessus entraîne le fichier keytab suivant pour l’utilisateur arcsqlmi@CONTOSO.COM, le secret sqlmi-keytab-secret-kvno-2-3 et l’espace de noms 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)

Et les spécifications mises à jour suivantes :

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

Enfin, modifiez le mot de passe de arcsqlmi compte d’utilisateur dans le contrôleur de domaine pour le domaine Active Directory contoso.com:

  1. Ouvrez Gestionnaire de serveur sur le contrôleur de domaine pour le domaine Active Directory contoso.com. Vous pouvez rechercher Gestionnaire de serveur ou l’ouvrir via le menu Démarrer.

  2. Accédez à Tools>utilisateurs et ordinateurs Active Directory

    Screenshot of Active Directory Users and Computers.

  3. Sélectionnez l’utilisateur pour lequel vous souhaitez modifier le mot de passe. Cliquez avec le bouton droit pour sélectionner l’utilisateur. Sélectionnez Réinitialiser le mot de passe:

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

  4. Entrez un nouveau mot de passe et sélectionnez OK.

Résolution des erreurs après la rotation

En cas d’erreurs lors de la tentative d’utilisation de l’authentification Active Directory après avoir terminé la rotation de keytab, les fichiers suivants dans le conteneur arc-sqlmi dans le pod SQL MI sont un bon endroit pour commencer à examiner la cause racine :

  • security.log fichier situé à /var/opt/mssql/log : ce fichier journal contient des journaux pour les interactions de SQL avec le domaine Active Directory.
  • errorlog fichier situé à /var/opt/mssql/log : ce fichier journal contient les journaux d’activité de SQL Server s’exécutant sur le conteneur.
  • mssql.keytab fichier situé à /var/run/secrets/managed/keytabs/mssql : vérifiez que ce fichier keytab contient les entrées nouvellement mises à jour et correspond au fichier keytab créé à l’aide des scripts fournis ci-dessus. Le fichier keytab peut être lu à l’aide de la commande klist, c’est-à-dire klist -k mssql.keytab -e

En outre, après avoir obtenu le ticket d’octroi de ticket Kerberos (TGT) à l’aide de la commande kinit, vérifiez que le kvno de l’utilisateur SQL correspond au kvno le plus élevé dans le fichier mssql.keytab dans le conteneur arc-sqlmi. Par exemple, pour utilisateur arcsqlmi@CONTOSO.COM :

  • Obtenez le TGT Kerberos à partir du domaine Active Directory en exécutant kinit arcsqlmi@CONTOSO.COM. Cela invite un utilisateur à entrer le mot de passe pour l’utilisateur arcsqlmi.
  • Une fois cela réussi, le kvno peut être interrogé en exécutant kvno arcsqlmi@CONTOSO.COM.

Nous pouvons également activer la journalisation du débogage pour la commande kinit en exécutant les opérations suivantes : KRB5_TRACE=/dev/stdout kinit -V arcsqlmi@CONTOSO.COM. Cela augmente la détail et génère les journaux d’activité à stdout à mesure que la commande est en cours d’exécution.