Tutoriel : Utiliser adutil pour configurer l’authentification Active Directory avec SQL Server sur Linux
S’applique à : SQL Server - Linux
Ce tutoriel explique comment configurer l’authentification Active Directory Windows pour SQL Server sur Linux à l’aide d’adutil. Pour utiliser une autre méthode de configuration de l’authentification Active Directory utilisant ktpass, consultez Tutoriel : Utiliser l’authentification Active Directory avec SQL Server sur Linux.
Ce didacticiel contient les tâches suivantes :
- Installer adutil
- Joindre une machine Linux à votre domaine Active Directory
- Créer un utilisateur Active Directory pour SQL Server et définir le nom du principal du service à l’aide d’adutil
- Créer le fichier keytab (table de clés) du service SQL Server
- Configurer SQL Server pour utiliser le fichier keytab
- Créer des comptes de connexion SQL Server basés sur Active Directory avec Transact-SQL
- Se connecter à SQL Server à l’aide de l’authentification Active Directory
Prérequis
Avant de configurer l’authentification Active Directory, il vous faut les éléments suivants :
- Un contrôleur de domaine Windows exécutant Active Directory Domain Services dans votre réseau.
- L’outil adutil installé sur une machine hôte jointe à un domaine.
Préparation de l’ordinateur de domaine
Assurez-vous qu’une entrée d’hôte de transfert (A) est ajoutée dans Active Directory pour l’adresse IP de l’hôte Linux. Dans ce tutoriel, l’adresse IP de l’ordinateur hôte sql1
est 10.0.0.10
. Nous ajoutons l’entrée hôte de transfert dans Active Directory dans l’exemple suivant. Lorsque les utilisateurs se connectent à sql1.contoso.com
, cette entrée garantit que l’hôte approprié est atteint.
Pour ce tutoriel, nous utilisons un environnement dans Azure avec trois machines virtuelles. Une des machines virtuelles est un ordinateur Windows Server nommé adVM.contoso.com
, qui s’exécute en tant que contrôleur de domaine avec le nom de domaine contoso.com
. La deuxième machine virtuelle est une machine cliente exécutant Windows 10 nommée winbox
, où SQL Server Management Studio (SSMS) est installé. Le troisième ordinateur est un ordinateur Ubuntu 18.04 LTS nommé sql1
, qui héberge SQL Server.
Joindre un ordinateur hôte Linux à votre domaine Active Directory
Pour joindre sql1
au domaine Active Directory, consultez Joindre SQL Server sur un hôte Linux à un domaine Active Directory.
Installer adutil
Pour installer adutil, suivez les étapes de l’article Présentation de l’utilitaire adutil - Active Directory sur la machine hôte que vous avez ajoutée au domaine à l’étape précédente.
Utiliser adutil afin de créer un utilisateur Active Directory pour SQL Server et définir le nom du principal du service
Obtenez ou renouvelez le ticket Kerberos TGT (Ticket-Granting Ticket) à l’aide de la commande
kinit
. Vous devez utiliser un compte privilégié pour la commandekinit
, et la machine hôte doit déjà faire partie du domaine. Le compte doit avoir l’autorisation de se connecter au domaine, ainsi que de créer des comptes et des noms de principaux du service dans le domaine.Dans cet exemple de script, un utilisateur privilégié appelé
privilegeduser@CONTOSO.COM
est déjà créé sur le contrôleur de domaine.kinit privilegeduser@CONTOSO.COM
Avec adutil, créez le nouvel utilisateur qui sera utilisé comme compte Active Directory privilégié par SQL Server.
Les mots de passe peuvent être spécifiés de trois façons différentes. Si vous utilisez plusieurs de ces méthodes, leur priorité est définie par l’ordre suivant :
- Utilisation de l’indicateur de mot de passe :
--password <password>
- Dans une variable d’environnement :
ADUTIL_ACCOUNT_PWD
- Entrée interactive sur une invite de ligne de commande
Les méthodes avec variable d’environnement ou entrée interactive sont plus sûres la méthode avec indicateur de mot de passe.
adutil user create --name sqluser --distname CN=sqluser,CN=Users,DC=CONTOSO,DC=COM --password 'P@ssw0rd'
Vous pouvez spécifier le nom du compte par son nom unique (
--distname
), comme nous l’avons vu, ou bien utiliser le nom de l’unité d’organisation (UO). Le nom de l’unité d’organisation (--ou
) a priorité sur le nom unique si vous spécifiez les deux. Vous pouvez exécuter la commande ci-dessous pour plus d’informations :adutil user create --help
- Utilisation de l’indicateur de mot de passe :
Inscrivez les noms SPN auprès du principal créé précédemment. Vous devez utiliser le nom de domaine complet (FQDN) de la machine. Dans ce tutoriel, nous utilisons le port par défaut de SQL Server, 1433. Votre numéro de port peut être différent.
adutil spn addauto -n sqluser -s MSSQLSvc -H sql1.contoso.com -p 1433
addauto
crée automatiquement les noms SPN dès lors que le comptekinit
dispose de privilèges suffisants.-n
: nom du compte auquel sont attribués les noms SPN.-s
: nom du service à utiliser pour générer les noms SPN. Dans ce cas, il est destiné au service SQL Server, raison pour laquelle le nom du service estMSSQLSvc
.-H
: nom d’hôte à utiliser pour générer les noms SPN. S’il n’est pas spécifié, le nom de domaine complet de l’hôte local est utilisé. Dans ce cas, le nom d’hôte estsql1
et le nom de domaine complet estsql1.contoso.com
.-p
: port à utiliser pour générer les noms SPN. S’il n’est pas spécifié, les noms SPN sont générés sans port. Les connexions SQL fonctionnent dans ce cas seulement quand SQL Server écoute le port par défaut 1433.
Création du fichier keytab du service SQL Server à l’aide de mssql-conf
Vous pouvez installer adutil et l’intégrer à mssql-conf pour créer et configurer directement le fichier keytab à l’aide de mssql-conf. Cette méthode est préférable pour créer un fichier keytab de service SQL Server. Sinon, vous pouvez créer manuellement le fichier keytab du service SQL Server.
Prérequis
Assurez-vous que le fichier
/var/opt/mssql/mssql.conf
appartient àmssql
et non àroot
. Sinon, vous devez exécuter les commandes mssql-conf à l’aide desudo
.Sur un contrôleur de domaine, dans les paramètres Active Directory du compte
network.privilegedadaccount
(dans ces exemples,sqluser@CONTOSO.COM
), activez les options suivantes sous l'onglet Compte, dans la section Options du compte :- Ce compte prend en charge le chiffrement AES 128 bits via Kerberos
- Ce compte prend en charge le chiffrement AES 256 bits via Kerberos
Création du fichier keytab
Une fois que vous crééz l’utilisateur et les noms SPN, procédez comme suit pour créer le fichier keytab.
Passez à l’utilisateur
mssql
:su mssql
Connectez-vous en tant qu’utilisateur Active Directory à l’aide de la commande
kinit
:kinit privilegeduser@CONTOSO.COM
Créez le fichier keytab :
/opt/mssql/bin/mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser
Si vous êtes invité à redémarrer le service SQL Server pour adopter la nouvelle configuration Active Directory, vous pouvez le faire dans la section suivante.
Vérifiez que le fichier keytab est créé avec les entrées appropriées :
klist -kte /var/opt/mssql/secrets/mssql.keytab
La sortie doit ressembler à cet exemple :
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)
Si le fichier
/var/opt/mssql/mssql.conf
n’appartient pas àmssql
, vous devez configurer mssql-conf pour définir les valeurs network.kerberoskeytabfile et network.privilegedadaccount en fonction des étapes précédentes. Tapez le mot de passe à l’invite./opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab /opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser
Validez votre configuration pour garantir le bon fonctionnement de l’authentification Active Directory.
/opt/mssql/bin/mssql-conf validate-ad-config /var/opt/mssql/secrets/mssql.keytab
Vous devez obtenir une sortie similaire à la suivante :
Detected Configuration: Default Realm: CONTOSO.COM Keytab: /var/opt/mssql/secrets/mssql.keytab Reverse DNS Result: sql1.contoso.com SQL Server Port: 1433 Detected SPNs (SPN, KVNO): (MSSQLSvc/sql1.CONTOSO.COM:1433, 4) (MSSQLSvc/sql1.CONTOSO.COM, 4) (MSSQLSvc/sql1:1433, 4) (MSSQLSvc/sql1, 4) Privileged Account (Name, KVNO): (sqluser, 4)
Création manuelle du fichier keytab du service SQL Server
Si vous avez installé adutil et l’avez intégré à mssql-conf, vous pouvez passer directement à Création du fichier keytab du service SQL Server à l’aide de mssql-conf.
Créez le fichier keytab qui contient des entrées pour chacun des 4 noms SPN créés précédemment, et une entrée pour l’utilisateur.
adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H sql1.contoso.com --password 'P@ssw0rd' -s MSSQLSvc
Les options de ligne de commande possibles sont les suivantes :
-k
: chemin où sera créé le fichiermssql.keytab
. Dans l’exemple précédent, le répertoire/var/opt/mssql/secrets/
doit déjà exister sur l’hôte.-p
: port à utiliser pour générer les noms SPN. S’il n’est pas spécifié, les noms SPN sont générés sans port.-H
: nom d’hôte à utiliser pour générer les noms SPN. S’il n’est pas spécifié, le nom de domaine complet de l’hôte local est utilisé. Dans ce cas, le nom d’hôte estsql1
et le nom de domaine complet estsql1.contoso.com
.-s
: nom du service à utiliser pour générer les noms SPN. Pour cet exemple, le nom du service SQL Server estMSSQLSvc
.--password
: il s’agit du mot de passe du compte d’utilisateur Active Directory privilégié qui a été créé précédemment.-e
ou--enctype
: Types de chiffrement pour l’entrée keytab. Utilisez une liste de valeurs séparées par des virgules. S’il n’est pas spécifié, une invite interactive est présentée.
Vous pouvez choisir plusieurs types de chiffrement, à condition que votre hôte et votre domaine prennent en charge les types de chiffrement. Dans cet exemple, vous pouvez choisir
aes256-cts-hmac-sha1-96
etaes128-cts-hmac-sha1-96
. Cependant, évitezarcfour-hmac
dans un environnement de production, car il a un chiffrement faible.Si vous souhaitez choisir le type de chiffrement sans invite, spécifiez votre choix avec l’argument
-e
dans la commande précédente. Pour obtenir de l’aide sur les options deadutil keytab
, exécutez la commande suivante :adutil keytab createauto --help
Ajoutez dans le fichier keytab une entrée correspondant au nom du principal et à son mot de passe, utilisée par SQL Server pour se connecter à Active Directory :
adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password 'P@ssw0rd'
-k
: chemin où sera créé le fichiermssql.keytab
.-p
: principal à ajouter au fichier keytab.
adutil keytab [ create | autocreate ]
ne remplace pas les fichiers précédents; elle fait simplement un ajout au fichier s’il est déjà présent.Vérifiez que le fichier keytab créé est la propriété de l’utilisateur
mssql
et que seul l’utilisateurmssql
dispose d’un accès en lecture/écriture au fichier. Vous pouvez exécuter les commandeschown
etchmod
comme suit :chown mssql /var/opt/mssql/secrets/mssql.keytab chmod 440 /var/opt/mssql/secrets/mssql.keytab
Configurer SQL Server pour utiliser le fichier keytab
Exécutez les commandes suivantes pour configurer SQL Server de façon à utiliser le fichier keytab créé à l’étape précédente, et pour définir l’utilisateur créé précédemment en tant que compte Active Directory privilégié. Dans notre exemple, le nom d’utilisateur est sqluser
.
/opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
/opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser
Redémarrer SQL Server
Exécutez la commande suivante pour activer et redémarrer les services SQL Server :
sudo systemctl restart mssql-server
Créer des comptes de connexion SQL Server basés sur Active Directory dans Transact-SQL
Connectez-vous au serveur SQL et exécutez les commandes suivantes pour créer le login et confirmer son existence.
CREATE LOGIN [contoso\privilegeduser] FROM WINDOWS;
SELECT name FROM sys.server_principals;
Se connecter à SQL Server à l’aide de l’authentification Active Directory
Pour vous connecter en utilisant SSMS ou Azure Data Studio, connectez-vous à SQL Server avec vos informations d’identification Windows.
Vous pouvez aussi utiliser un outil comme sqlcmd pour vous connecter à SQL Server avec l’authentification Windows.
sqlcmd -E -S 'sql1.contoso.com'
Contenu connexe
- 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
- Authentification Active Directory pour SQL Server sur Linux
- Tutoriel : Configurer l’authentification Active Directory avec des conteneurs SQL Server sur Linux
- Effectuer la rotation des keytabs pour SQL Server sur Linux