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 :
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 surmanual
pour le mode Keytab géré par le client ouautomatic
pour le mode Keytab géré par le système. Lorsque ce champ n’est pas défini, la valeurmanual
est utilisée par défaut. Lorsqu’il est défini surautomatic
(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 surmanual
(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 deserviceAccountProvisioning
est définie surautomatic
. 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 deserviceAccountProvisioning
est définie surautomatic
. 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 surfalse
, 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>