Partager via


Tutoriel : déployer un connecteur Active Directory en mode Keytab géré par le système

Cet article explique comment déployer un connecteur Active Directory en mode Keytab géré par le système. Il s’agit un composant clé pour activer l’authentification Active Directory sur SQL Managed Instance doté d’Azure Arc.

Connecteur Active Directory en mode Keytab géré par le système

En mode Keytab géré par le système, un connecteur Active Directory déploie un service proxy DNS qui transmet les demandes DNS provenant de l’instance gérée à l’un des deux services DNS en amont :

  • Serveurs DNS Active Directory
  • Serveurs DNS Kubernetes

Outre le service proxy DNS, le connecteur AD déploie aussi un service de support de la sécurité qui facilite la communication avec le domaine AD pour la création et la gestion automatiques des comptes AD, des noms de principal de service (SPN) et des keytabs.

Le diagramme suivant illustre le fonctionnement du connecteur AD et du service proxy DNS en mode Keytab géré par le système :

Connecteur Active Directory

Prérequis

Avant de continuer, vous devez disposer des éléments suivants :

  • Une instance de contrôleur de données déployée sur une version prise en charge de Kubernetes
  • Un domaine Active Directory
  • Unité d’organisation précréée dans le domaine Active Directory
  • Un compte de service de domaine Active Directory

Le compte de service de domaine AD doit disposer d’autorisations suffisantes pour créer et supprimer des comptes d’utilisateurs automatiquement à l’intérieur de l’unité d’organisation fournie dans l’annuaire Active Directory.

Accordez les autorisations suivantes (limitées à l’unité d’organisation) au compte de service de domaine :

  • Lire toutes les propriétés
  • Écrire toutes les propriétés
  • Créer des objets utilisateur
  • Supprimer des objets utilisateur
  • Réinitialiser le mot de passe pour les objets utilisateur descendants

Pour plus d’informations sur la configuration de l’unité d’organisation et du compte AD, accédez à Déployer des services de données avec Azure Arc dans l’authentification Active Directory en mode Keytab géré par le système - Configuration requise

Entrée pour le déploiement d’un connecteur Active Directory en mode Keytab géré par le système

Pour déployer une instance de connecteur Active Directory, plusieurs entrées sont nécessaires à partir de l’environnement de domaine Active Directory.

Ces entrées sont fournies dans une spécification YAML pour l’instance du connecteur AD.

Les métadonnées suivantes relatives au domaine Active Directory doivent être disponibles avant le déploiement d’une instance du connecteur AD :

  • Nom du domaine Active Directory
  • Liste des contrôleurs de domaine (noms de domaine complets)
  • Liste des adresses IP des serveurs DNS

Les champs d’entrée suivants sont exposés aux utilisateurs dans la spécification du connecteur Active Directory :

  • Obligatoire

    • spec.activeDirectory.realm Nom du domaine Active Directory en majuscules. Il s’agit du domaine AD auquel cette instance du connecteur AD sera associée.

    • spec.activeDirectory.domainControllers.primaryDomainController.hostname Nom de domaine complet du contrôleur de domaine principal dans le domaine AD.

      Si vous ne savez pas quel contrôleur de domaine dans le domaine est principal, vous pouvez le trouver en exécutant cette commande sur n’importe quel ordinateur Windows joint au domaine AD : netdom query fsmo.

    • spec.activeDirectory.dns.nameserverIpAddresses Liste des adresses IP du serveur DNS Active Directory. Le service proxy DNS transfère les requêtes DNS dans le nom de domaine fourni à ces serveurs.

  • Facultatif

    • spec.activeDirectory.serviceAccountProvisioning Ce champ facultatif définit le mode de déploiement de votre connecteur AD avec les valeurs possibles sur manual pour le mode Keytab géré par le client ou automatic pour le mode Keytab géré par le système. Lorsque ce champ n’est pas défini, la valeur manual est utilisée par défaut. Lorsqu’il est défini sur automatic (keytab géré par le système), le système génère automatiquement des comptes AD et des noms de principal de service (SPN) pour les instances SQL Managed Instance associées à ce connecteur AD et crée des fichiers keytab pour eux. Lorsqu’il est défini sur manual (keytab géré par le client), le système ne génère pas automatiquement le compte AD et le fichier keytab. L’utilisateur doit fournir un fichier keytab.

    • spec.activeDirectory.ouDistinguishedName Ce champ est facultatif. Bien qu’il devienne obligatoire de manière conditionnelle lorsque la valeur de serviceAccountProvisioning est définie sur automatic. Ce champ accepte le nom unique (DN) de l’unité d’organisation (OU) que les utilisateurs doivent créer dans le domaine Active Directory avant de déployer le connecteur AD. Il est utilisé pour stocker les comptes AD générés par le système pour les instances SQL Managed Instance dans le domaine Active Directory. Voici un exemple de valeur : OU=arcou,DC=contoso,DC=local.

    • spec.activeDirectory.domainServiceAccountSecret Ce champ est facultatif. Il devient obligatoire de manière conditionnelle lorsque la valeur de serviceAccountProvisioning est définie sur automatic. Ce champ accepte le nom du secret Kubernetes qui contient le nom d’utilisateur et le mot de passe du compte de service de domaine créé avant le déploiement du connecteur AD. Le système l’utilisera pour générer d’autres comptes AD dans l’unité d’organisation et effectuer des actions sur ces comptes AD.

    • spec.activeDirectory.netbiosDomainName Nom NETBIOS du domaine Active Directory. Il s’agit du nom de domaine court (pré-Windows 2000) de votre domaine Active Directory. Cette valeur est souvent utilisée pour qualifier les comptes dans le domaine AD. Par exemple, si les comptes du domaine sont appelés CONTOSO\admin, CONTOSO est le nom de domaine NETBIOS.

      Ce champ est facultatif. Lorsqu’il n’est pas renseigné, la première étiquette du champ spec.activeDirectory.realm est définie par défaut.

      Dans la plupart des environnements de domaine, il s’agit de la valeur par défaut, mais certains environnements de domaine peuvent avoir une valeur non définie par défaut. Vous devez utiliser ce champ uniquement lorsque le nom NetBIOS de votre domaine ne correspond pas à la première étiquette de son nom complet.

    • spec.activeDirectory.domainControllers.secondaryDomainControllers[*].hostname Liste des noms de domaine complets des contrôleurs de domaine secondaires dans le domaine AD.

      Si votre domaine est pris en charge par plusieurs contrôleurs de domaine, il est recommandé de fournir certains de leurs noms de domaine complets dans cette liste. Cela permet de disposer d’une haute disponibilité pour les opérations Kerberos.

      Il n’est pas nécessaire de renseigner ce champ facultatif. Le système détecte automatiquement les contrôleurs de domaine secondaires lorsqu’aucune valeur n’est fournie.

    • spec.activeDirectory.dns.domainName Nom de domaine DNS pour lequel les recherches DNS doivent être transférées aux serveurs DNS Active Directory.

      Une recherche DNS pour tout nom appartenant à ce domaine ou à ses domaines descendants sera transférée à Active Directory.

      Ce champ est facultatif. Lorsqu’il n’est pas fourni, la valeur par défaut de est spec.activeDirectory.realm convertie en minuscules.

    • spec.activeDirectory.dns.replicas Nombre de réplicas pour le service proxy DNS. Ce champ est facultatif et prend par défaut la valeur 1 lorsqu’il n’est pas fourni.

    • spec.activeDirectory.dns.preferK8sDnsForPtrLookups Indicateur indiquant s’il faut préférer la réponse du serveur DNS Kubernetes à la réponse du serveur DNS AD pour les recherches d’adresses IP.

      Le service de proxy DNS s’appuie sur ce champ pour déterminer le groupe en amont de serveurs DNS à préférer aux recherches d’adresses IP.

      Ce champ est facultatif. S’il n’est pas renseigné, la valeur par défaut est true, ce qui signifie que les recherches DNS d’adresses IP seront d’abord transférées aux serveurs DNS Kubernetes. Si les serveurs DNS Kubernetes ne parviennent pas à répondre à la recherche, la requête est ensuite transférée aux serveurs DNS AD. Lorsqu’il est défini sur false, ces recherches DNS seront transférées aux serveurs DNS AD en premier et en cas d’échec, reviendront à Kubernetes.

Déployer un connecteur Active Directory en mode Keytab géré par le système

Pour déployer un connecteur AD, créez un fichier de spécifications YAML appelé active-directory-connector.yaml.

Voici un exemple de connecteur AD en mode Keytab géré par le système qui utilise un domaine AD nommé CONTOSO.LOCAL. Veillez à remplacer les valeurs par celles de votre domaine AD. adarc-dsa-secret contient le compte de service de domaine AD créé avant le déploiement AD.

Remarque

Vérifiez que le mot de passe du compte AD de service de domaine fourni ici ne contient pas ! sous forme de caractères spéciaux.

apiVersion: v1 
kind: Secret 
type: Opaque 
metadata: 
  name: adarc-dsa-secret
  namespace: <namespace>
data: 
  password: <your base64 encoded password>
  username: <your base64 encoded username>
---
apiVersion: arcdata.microsoft.com/v1beta2
kind: ActiveDirectoryConnector
metadata:
  name: adarc
  namespace: <namespace>
spec:
  activeDirectory:
    realm: CONTOSO.LOCAL
    serviceAccountProvisioning: automatic
    ouDistinguishedName: "OU=arcou,DC=contoso,DC=local"
    domainServiceAccountSecret: adarc-dsa-secret
    domainControllers:
      primaryDomainController:
        hostname: dc1.contoso.local
      secondaryDomainControllers:
      - hostname: dc2.contoso.local
      - hostname: dc3.contoso.local
  dns:
    preferK8sDnsForPtrLookups: false
    nameserverIPAddresses:
      - <DNS Server 1 IP address>
      - <DNS Server 2 IP address>

La commande suivante déploie l’instance du connecteur AD. Actuellement, seule l’approche Kube-native du déploiement est prise en charge.

kubectl apply –f active-directory-connector.yaml

Après avoir soumis le déploiement de l’instance de connecteur AD, vous pouvez vérifier l’état du déploiement à l’aide de la commande suivante.

kubectl get adc -n <namespace>