Joindre SQL Server sur un hôte Linux à un domaine Active Directory
S’applique à : SQL Server - Linux
Cet article fournit des instructions générales sur la façon de joindre une machine hôte Linux SQL Server à un domaine Active Directory. Il existe deux méthodes : utiliser un package SSSD intégré ou utiliser des fournisseurs Active Directory tiers. Par exemple, les produits de jonction de domaine tiers sont les suivants : Service d’identité PowerBroker (PBIS), One Identity et Centrify.
Ce guide comprend les étapes permettant de vérifier la configuration de votre Active Directory. Toutefois, il n’est pas prévu de fournir des instructions sur la façon de joindre un ordinateur à un domaine lors de l’utilisation d’utilitaires tiers.
Remarque
Pour plus d’informations sur la configuration d’Active Directory avec les versions plus récentes d’Ubuntu, RHEL ou SLES, consultez Tutoriel : Utiliser l’authentification Active Directory avec SQL Server sur Linux.
Prérequis
Avant de configurer l’authentification Active Directory, vous devez configurer un contrôleur de domaine Active Directory, Windows, sur votre réseau. Joignez alors votre hôte SQL Server sur Linux à un domaine Active Directory.
Les exemples d’étapes décrits dans cet article sont fournis à titre d’information uniquement et font référence aux systèmes d’exploitation Ubuntu 16.04, Red Hat Enterprise Linux (RHEL) 7.x et SUSE Linux Enterprise Server (SLES) 12. Les étapes réelles peuvent différer légèrement dans votre environnement en fonction de la configuration de votre environnement global et de la version de votre système d’exploitation. Par exemple, Ubuntu 18.04 utilise netplan, tandis que Red Hat Enterprise Linux (RHEL) 8.x utilise nmcli entre autres outils pour gérer et configurer le réseau. Il est recommandé de faire appel à vos administrateurs système et de domaine pour votre environnement en ce qui concerne les outils, la configuration, la personnalisation et le dépannage.
DNS inversé (rDNS)
Quand vous configurez un ordinateur exécutant Windows Server en tant que contrôleur de domaine, vous ne disposez peut-être pas d’une zone rDNS par défaut. Assurez-vous qu’il existe une zone rDNS applicable pour le contrôleur de domaine et l’adresse IP de l’ordinateur Linux qui exécutera SQL Server.
Assurez-vous également qu’il existe un enregistrement PTR pointant vers vos contrôleurs de domaine.
Vérifier la connexion à un contrôleur de domaine
Vérifiez que vous pouvez contacter le contrôleur de domaine à l’aide des noms court et complet du domaine, et en utilisant le nom d’hôte du contrôleur de domaine. En outre, l’adresse IP du contrôleur de domaine doit être résolue en nom de domaine complet du contrôleur de domaine :
ping contoso
ping contoso.com
ping dc1.contoso.com
nslookup <IP address of dc1.contoso.com>
Conseil
Ce didacticiel utilise contoso.com
et CONTOSO.COM
comme exemple de domaine et de nom de domaine, respectivement. Il utilise également DC1.CONTOSO.COM
comme exemple de nom de domaine complet du contrôleur de domaine. Vous devez remplacer ces noms par vos propres valeurs.
Pour garantir une résolution de noms de domaine appropriée, il est essentiel de mettre à jour le fichier /etc/resolv.conf
si des différences sont détectées pendant les vérifications de nom. La procédure de mise à jour varie selon les distributions ; par conséquent, il est conseillé de consulter la documentation officielle pour obtenir des conseils précis. La liste suivante fournit des liens pour certaines distributions et leurs versions clés :
Distribution | Article de référence |
---|---|
RHEL 8 | Configuration manuelle de /etc/resolv.conf |
RHEL 9 | Configuration manuelle de /etc/resolv.conf |
SLES 15 | Paramètres de NETCONFIG_DNS_STATIC_SEARCHLIST et de NETCONFIG_DNS_STATIC_SERVERS |
Ubuntu | Section Résolution de noms |
L’objectif est de correctement configurer /etc/resolv.conf
pour votre distribution afin de faciliter la résolution de noms de domaine. Par exemple, si votre domaine est contoso.com et que l’adresse IP Active Directory est 10.0.0.4, /etc/resolv.conf
doit être configuré en conséquence pour garantir la réussite de la résolution de noms à partir de l’hôte.
cat /etc/resolv.conf
Voici le jeu de résultats.
# Generated by NetworkManager
search contoso.com com
nameserver 10.0.0.4
RHEL 7.x
Modifiez le fichier
/etc/sysconfig/network-scripts/ifcfg-eth0
de façon à ce que votre domaine Active Directory se trouve dans la liste de recherche de domaine : Ou modifiez un autre fichier config d’interface comme il convient :sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
Le contenu doit être similaire à l’exemple suivant :
PEERDNS=no DNS1=<Domain controller IP address> DOMAIN="contoso.com com"
Après avoir modifié ce fichier, redémarrez le service réseau :
sudo systemctl restart network
Ensuite, vérifiez que votre fichier
/etc/resolv.conf
contient une ligne comme dans l’exemple suivant :sudo vi /etc/resolv.conf
Le contenu doit être similaire à l’exemple suivant :
search contoso.com com nameserver <Domain controller IP address>
Si vous ne pouvez toujours pas effectuer un test ping sur le contrôleur de domaine, recherchez le nom de domaine complet et l’adresse IP du contrôleur de domaine.
DC1.CONTOSO.COM
est un exemple de nom de domaine. Ajoutez l’entrée suivante à/etc/hosts
:sudo vi /etc/hosts
Le contenu doit être similaire à l’exemple suivant :
<IP address> DC1.CONTOSO.COM CONTOSO.COM CONTOSO
Le joindre au domaine Active Directory
Après la vérification de la configuration de base et de la connectivité avec le contrôleur de domaine, il existe deux options pour joindre une machine hôte Linux SQL Server au contrôleur de domaine Active Directory :
- Option n°1 : Utiliser un package SSSD
- Option n°2 : Utiliser des utilitaires de fournisseur OpenLDAP tiers
Option n°1 : utiliser le package SSSD pour joindre le domaine Active Directory
Cette méthode joint l’hôte SQL Server à un domaine Active Directory à l’aide de packages realmd et sssd.
Il s’agit de la méthode recommandée pour joindre un hôte Linux à un contrôleur de domaine Active Directory.
Pour les instructions les plus récentes, reportez-vous à la documentation officielle fournie par les partenaires de distribution.
Distribution | Article de référence |
---|---|
RHEL 8 | Découverte et jonction d’un domaine AD à l’aide de SSSD |
RHEL 9 | Découverte et jonction d’un domaine AD à l’aide de SSSD |
SLES | Joindre un AD à l’aide de realmd sur SUSE Linux Enterprise Server 15 |
Ubuntu | Comment configurer SSSD avec Active Directory |
Procédez comme suit pour joindre un hôte SQL Server à un domaine Active Directory :
Utilisez realmd pour joindre votre machine hôte à votre domaine Active Directory. Vous devez d’abord installer les packages client realmd et Kerberos sur la machine hôte SQL Server à l’aide du gestionnaire de package de votre distribution Linux :
Si l’installation du package client Kerberos vous invite à entrer un nom de domaine, entrez votre nom de domaine en majuscules.
Une fois que vous avez confirmé que votre DNS est correctement configuré, joignez le domaine en exécutant la commande suivante. Vous devez vous authentifier à l’aide d’un compte Active Directory disposant de privilèges suffisants dans Active Directory pour joindre une nouvelle machine au domaine. Cette commande crée un nouveau compte d’ordinateur dans Active Directory, crée le fichier keytab de l’hôte
/etc/krb5.keytab
, configure le domaine dans/etc/sssd/sssd.conf
et met à jour/etc/krb5.conf
.En raison d’un problème avec realmd, définissez d’abord le nom d’hôte de la machine sur le nom de domaine complet plutôt que sur le nom de la machine. Sinon, realmd peut ne pas créer tous les SPN requis pour la machine et les entrées DNS ne sont pas automatiquement mises à jour, même si votre contrôleur de domaine prend en charge les mises à jour DNS dynamiques.
sudo hostname <old hostname>.contoso.com
Après avoir exécuté cette commande, votre fichier
/etc/hostname
doit contenir<old hostname>.contoso.com
.sudo realm join contoso.com -U 'user@CONTOSO.COM' -v
Le message,
Successfully enrolled machine in realm
, doit s’afficher.Le tableau suivant répertorie certains messages d’erreur que vous pouvez recevoir et des suggestions pour les résoudre :
Message d’erreur Recommandation Necessary packages are not installed
Installez ces packages à l’aide du gestionnaire de package de votre distribution Linux avant d’exécuter à nouveau la commande de jonction de domaine. Insufficient permissions to join the domain
Vérifiez auprès d’un administrateur de domaine que vous disposez des autorisations suffisantes pour joindre des machines Linux à votre domaine. KDC reply did not match expectations
Vous n’avez peut-être pas spécifié le nom de domaine correct pour l’utilisateur. Les noms de domaine respectent la casse, généralement en majuscules et peuvent être identifiés avec la commande de découverte de domaine contoso.com. SQL Server utilise SSSD et NSS pour le mappage des comptes et des groupes d’utilisateurs aux identificateurs de sécurité (SID). SSSD doit être configuré et en cours d’exécution pour SQL Server pour créer des connexions Active Directory avec succès. realmd effectue généralement cette opération automatiquement dans le cadre de la jonction au domaine, mais dans certains cas, vous devez le faire séparément.
Pour plus d’informations, consultez comment configurer SSSD manuellement et configurer NSS pour fonctionner avec SSSD.
Vérifiez que vous pouvez maintenant collecter des informations sur un utilisateur à partir du domaine et que vous pouvez acquérir un ticket Kerberos en tant qu’utilisateur. L’exemple suivant utilise les commandes id, kinit et klist pour ce faire.
id user@contoso.com uid=1348601103(user@contoso.com) gid=1348600513(domain group@contoso.com) groups=1348600513(domain group@contoso.com) kinit user@CONTOSO.COM Password for user@CONTOSO.COM: klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: user@CONTOSO.COM
Si
id user\@contoso.com
retourneNo such user
, assurez-vous que le service SSSD a démarré avec succès en exécutant la commandesudo systemctl status sssd
. Si le service est en cours d’exécution et que vous voyez toujours l’erreur, essayez d’activer la journalisation détaillée pour SSSD. Pour plus d’informations, consultez la documentation Red Hat sur la Résolution des problèmes liés à SSSD.Si
kinit user\@CONTOSO.COM
retourneKDC reply didn't match expectations while getting initial credentials
, assurez-vous que vous avez spécifié le domaine en majuscules.
Pour plus d’informations, consultez la documentation Red Hat sur la Découverte et la jonction de domaines d’identité.
Option n°2 : Utiliser des utilitaires de fournisseur OpenLDAP tiers
Vous pouvez utiliser des utilitaires tiers tels que PBIS, VAS ou Centrify. Cet article ne couvre pas les étapes de chaque utilitaire individuellement. Vous devez d’abord utiliser l’un de ces utilitaires pour joindre l’hôte Linux pour SQL Server au domaine avant de continuer.
SQL Server n’utilise pas le code ou la bibliothèque de l’intégrateur tiers pour les requêtes relatives à Active Directory. SQL Server interroge toujours Active Directory à l’aide des appels de la bibliothèque OpenLDAP directement dans cette installation. Les intégrateurs tiers sont utilisés uniquement pour joindre l’hôte Linux au domaine Active Directory et SQL Server n’a aucune communication directe avec ces utilitaires.
Important
Veuillez consulter les suggestions relatives à l’utilisation de l’option de configuration mssql-conf network.disablesssd
dans la section Options de configuration supplémentaires de l’article Utiliser l’authentification Active Directory avec SQL Server sur Linux.
Vérifiez que votre /etc/krb5.conf
est correctement configuré. Pour la plupart des fournisseurs Active Directory tiers, cette configuration est effectuée automatiquement. Toutefois, vérifiez que les valeurs suivantes se trouvent dans /etc/krb5.conf
afin d’éviter tout problème futur :
sudo vi /etc/krb5.conf
Le contenu doit être similaire à l’exemple suivant :
[libdefaults]
default_realm = CONTOSO.COM
[realms]
CONTOSO.COM = {
}
[domain_realm]
contoso.com = CONTOSO.COM
.contoso.com = CONTOSO.COM
Vérifier que le DNS inversé est correctement configuré
La commande suivante doit retourner le nom de domaine complet (FQDN) de l’hôte qui exécute SQL Server. par exemple SqlHost.contoso.com
.
host <IP address of SQL Server host>
La sortie de cette commande doit être similaire à <reversed IP address>.in-addr.arpa domain name pointer SqlHost.contoso.com
. Si cette commande ne retourne pas le nom de domaine complet de votre hôte ou si le nom de domaine complet est incorrect, ajoutez une entrée DNS inversé pour votre hôte SQL Server sur Linux à votre serveur DNS.
Étape suivante
Cet article aborde les conditions préalables à la configuration de SQL Server sur une machine hôte Linux avec l’authentification Active Directory. Pour terminer la configuration de SQL Server sur Linux pour la prise en charge des comptes Active Directory, suivez les instructions sur Utiliser l’authentification Active Directory avec SQL Server sur Linux.