Partager via


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

  1. 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"
    
  2. Après avoir modifié ce fichier, redémarrez le service réseau :

    sudo systemctl restart network
    
  3. 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>
    
  4. 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 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 :

  1. 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 :

    RHEL :

    sudo yum install realmd krb5-workstation
    

  1. Si l’installation du package client Kerberos vous invite à entrer un nom de domaine, entrez votre nom de domaine en majuscules.

  2. 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.

  3. 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 retourne No such user, assurez-vous que le service SSSD a démarré avec succès en exécutant la commande sudo 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 retourne KDC 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.