Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server sur Linux
Selon les meilleures pratiques de sécurité de votre organisation, vous devrez peut-être effectuer régulièrement la rotation du mot de passe pour le compte Windows Active Directory fourni comme network.privilegedadaccount dans mssql.conf, ou pour tout autre compte propriétaire des noms de principal de service (SPN) pour le service SQL Server. La méthode prise en charge pour modifier le mot de passe du compte est documentée dans cet article. La modification du mot de passe prend effet sans qu’il soit nécessaire de redémarrer le service SQL Server sur Linux.
L’outil adutil est utilisé pour mettre à jour le keytab. La commande adutil doit être exécutée à partir d’une machine jointe à un domaine. Pour plus d’informations sur adutil et sur la façon de télécharger l’outil, consultez Présentation de l’utilitaire adutil pour Active Directory.
Il est essentiel de mettre à jour le nouveau mot de passe dans le keytab avec le numéro kvno suivant avant de le mettre à jour dans Active Directory. L’utilisation du numéro kvno suivant permet d’éviter d’avoir à redémarrer le service SQL Server après la modification du mot de passe. Si vous mettez d’abord à jour le mot de passe dans Active Directory, puis que vous modifiez le fichier keytab, vous devrez redémarrer le service SQL Server pour garantir le bon fonctionnement de l’authentification Active Directory.
Scénario de rotation du keytab
Prenons un exemple. L’authentification Active Directory est déjà activée pour SQL Server sur Linux. Dans le fichier mssql.conf, vous définissez network.privilegedadaccount sur sqluser. Le compte sqluser@CONTOSO.COM est déjà créé dans Active Directory. Le fichier keytab a également été créé à l’emplacement par défaut, /var/opt/mssql/secrets/mssql.keytab. Vous souhaitez désormais modifier le mot de passe pour sqluser@CONTOSO.COM. Procédez comme suit :
Installez adutil sur la machine jointe au domaine.
Obtenez ou renouvelez le ticket Kerberos TGT (Ticket-Granting Ticket) à l’aide de la commande
kinit. Utilisez un compte privilégié pour la commandekinit. Le compte doit avoir l’autorisation de se connecter au domaine et doit également être en mesure de créer des comptes et des noms de principaux de service dans le domaine. Dans ce cas, nous utilisons le compteprivilegeduser@CONTOSO.COMqui dispose des autorisations pour créer des comptes et des noms de principal de service dans notre domaine appeléCONTOSO.COM.kinit privilegeduser@CONTOSO.COMUne fois que vous avez exécuté
kinitpour obtenir/renouveler le TGT, interrogez le numéro kvno actuel denetwork.privilegedadaccount. Dans ce cas, il s’agit desqluser@CONTOSO.COM.kvno sqluser@CONTOSO.COM
Vous pouvez choisir de renouveler le fichier keytab avec mssql-conf ou de renouveler manuellement le fichier keytab à l’aide de la commande adutil.
Renouvellement du fichier keytab avec mssql-conf
Vous pouvez installer adutil et l’intégrer à mssql-conf, et ainsi renouveler le fichier keytab à l’aide de mssql-conf.
Connectez-vous en tant qu’utilisateur racine et basculez vers l’utilisateur
mssql.su mssqlObtenez ou renouvelez le ticket Kerberos TGT (Ticket-Granting Ticket) à l’aide de la commande
kinit. Utilisez un compte privilégié pour la commandekinit. Le compte doit avoir l’autorisation de se connecter au domaine et doit également être en mesure de créer des comptes et des noms de principaux de service dans le domaine. Dans ce cas, nous utilisons le compteprivilegeduser@CONTOSO.COMqui dispose des autorisations pour créer des comptes et des noms de principal de service dans notre domaine appeléCONTOSO.COM.kinit privilegeduser@CONTOSO.COMExécutez la commande mssql-conf, en fournissant le fichier keytab SQL Server et les détails
network.privilegedadaccount. Dans cet exemple,privilegedadaccountestsqluser../mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno'À l’invite, entrez le nouveau mot de passe que vous souhaitez utiliser. L’option
--use-next-kvnopermet d’allouer le numéro de version de la clé actuel + 1.Facultatif : vous pouvez également utiliser l’option
--kvnoavec la commandemssql-conf setup-ad-keytabpour fournir un kvno spécifique. Vous devez veiller à obtenir d’abord le numéro de version de la clé actuel pour l’utilisateur, puis mettre à jour en conséquence le nouveau numéro de version de la clé, à savoir le numéro de version de la clé actuel + 1.Pour afficher la liste des clés du fichier keytab, utilisez la commande suivante :
klist -kte /var/opt/mssql/secrets/mssql.keytabComme vous pouvez le constater, le fichier keytab est mis à jour avec le numéro de version de la clé suivant pour les entrées utilisateur et SPN.
Vous pouvez maintenant modifier le mot de passe de l’utilisateur
sqluser. Voici un exemple.Important
S’il vous est demandé de redémarrer SQL Server au cours de cette étape, vous pouvez ignorer l’invite. N’oubliez pas de modifier également le mot de passe dans Active Directory.
bash-4.4$ kinit privilegedaccount@CONTOSO.COM Password for privilegedaccount@CONTOSO.COM: bash-4.4$ ./mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno sqluser@contoso.com's password: Confirm sqluser@contoso.com's password: SQL Server needs to be restarted in order to adopt the new AD configuration. To restart, run `systemctl restart mssql-server.service`. bash-4.4$ klist -kte /var/opt/mssql/secrets/mssql.keytab Keytab name: FILE:/var/opt/mssql/secrets/mssql.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 4 12/30/2021 14:02:08 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96)
Renouvellement manuel du fichier keytab avec adutil
Si vous souhaitez mettre à jour le fichier keytab manuellement à l’aide de la commande adutil, consultez les étapes suivantes.
Le fait de mettre à jour le fichier keytab à l’aide de la commande adutil ajoute une entrée dans le fichier keytab actuel. Par exemple, si le numéro kvno de la commande précédente est 2, utilisez le numéro kvno3 lors de la mise à jour du keytab. Voici les commandes adutil à exécuter.
- Modifiez le numéro de port (
-p), le nom d’hôte (-H), le chemin d’accès au fichier keytab (-k) et le numéro kvno en fonction de votre environnement.
adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H mssql.contoso.com --password '<newpassword>' -s MSSQLSvc --kvno 3
adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password '<newpassword>' --kvno 3
| Paramètre | Descriptif |
|---|---|
-k |
Chemin d’accès au keytab actuel utilisé par SQL Server et défini à l’aide de l’option network.kerberoskeytabfile dans le mssql.conf fichier. |
-H |
Nom de domaine complet de l’hôte SQL Server. |
-p |
Le port sur lequel le service SQL Server est configuré pour écouter dans la première commande. Dans la deuxième commande, -p représente le network.privilegedadaccount pour lequel vous allez mettre à jour le mot de passe. |
kvno |
La valeur doit être le kvno actuel + 1. La valeur kvno actuelle est obtenue à l’étape 3. |
Une fois que vous avez exécuté les commandes précédentes, vous devez indiquer le type de chiffrement que vous souhaitez pour les entrées keytab. Assurez-vous de choisir celui qui convient à votre environnement.
Vérifier les entrées keytab
Après la mise à jour du keytab, vous devez maintenant voir les entrées dans le keytab pour kvno 3 (nouveau) et également kvno 2 (l’ancien) pour le même compte sqluser@CONTOSO.COM et les mêmes noms de principal du service. Vous pouvez exécuter la commande klist suivante pour vérifier les entrées dans le fichier keytab :
klist -kte /var/opt/mssql/secrets/mssql.keytab
Changer le mot de passe du compte dans Active Directory
La dernière étape consiste à mettre à jour le mot de passe de network.privilegedadaccount ou le compte qui possède les noms SPN de SQL Server dans Windows Active Directory. Dans le scénario précédent, le mot de passe de sqluser@CONTOSO.COM doit être mis à jour dans Active Directory. Remplacez le mot de passe par le mot de passe <newpassword> que vous avez donné à la 3e étape de la section précédente. L’authentification Active Directory doit continuer à fonctionner, sans qu’il soit nécessaire de redémarrer le service SQL Server.
Contenu connexe
- Tutoriel : Configuration de l’authentification Active Directory avec SQL Server sur Linux à l’aide de la commande adutil
- Tutoriel : Configurer l’authentification Active Directory avec des conteneurs SQL Server sur Linux
- Découvrir l’authentification Active Directory pour SQL Server sur Linux et les conteneurs
- Résoudre les problèmes liés à l’authentification Active Directory pour SQL Server sur Linux et les conteneurs