Tutorial: Bereitstellen eines Active Directory-Connectors im Modus mit systemseitig verwalteter Schlüsseltabelle
In diesem Artikel wird erläutert, wie Sie einen Active Directory-Connector im Modus mit systemseitig verwalteter Schlüsseltabelle bereitstellen. Es handelt sich hierbei um eine Schlüsselkomponente zum Aktivieren der Active Directory-Authentifizierung für durch Azure Arc aktiviertes SQL Managed Instance.
Active Directory-Connector im Modus mit systemseitig verwalteter Schlüsseltabelle
Im Modus mit systemseitig verwalteter Schlüsseltabelle stellt ein Active Directory-Connector einen DNS-Proxydienst zur Verfügung, der die DNS-Anforderungen aus der verwalteten Instanz an einen der beiden Upstream-DNS-Dienste weiterleitet:
- Active Directory-DNS-Server
- Kubernetes-DNS-Server
Zusätzlich zum DNS-Proxydienst stellt der AD-Connector auch einen Sicherheitssupportdienst bereit, der die Kommunikation mit der AD-Domäne für die automatische Erstellung und Verwaltung von AD-Konten, Dienstprinzipalnamen (Service Principal Names, SPNs) und Schlüsseltabellen erleichtert.
Das folgende Diagramm zeigt die Funktionsweise des AD-Connectors und DNS-Proxydiensts im Modus mit systemseitig verwalteter Schlüsseltabelle:
Voraussetzungen
Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, bevor Sie den Vorgang fortsetzen:
- Eine Instanz des Datencontrollers, die in einer unterstützten Version von Kubernetes bereitgestellt wird
- Eine Active Directory-Domäne
- Eine vorab erstellte Organisationseinheit (OE) in der Active Directory-Domäne
- Ein Active Directory-Domänendienstkonto
Das AD-Domänendienstkonto sollte über ausreichende Berechtigungen verfügen, um Benutzerkonten innerhalb der angegebenen bereitgestellten Organisationseinheit (OE) automatisch in Active Directory zu erstellen und zu löschen.
Erteilen Sie dem Domänendienstkonto die folgenden Berechtigungen – beschränkt auf die Organisationseinheit:
- Alle Eigenschaften lesen
- Alle Eigenschaften schreiben
- Benutzerobjekte erstellen
- Benutzerobjekte löschen
- „Kennwort zurücksetzen“ für Nachfolger-Benutzerobjekte
Informationen zum Einrichten der Organisationseinheit und des AD-Kontos erhalten Sie unter Bereitstellen von Azure Arc-fähigen Datendiensten mit Active Directory-Authentifizierung mit systemseitig verwalteter Schlüsseltabelle – Voraussetzungen.
Eingaben für die Bereitstellung des Active Directory-Connectors im Modus mit systemseitig verwalteter Schlüsseltabelle
Zum Bereitstellen einer Instanz des Active Directory-Connectors sind mehrere Eingaben aus der Active Directory-Domänenumgebung erforderlich.
Diese Eingaben werden in einer YAML-Spezifikation für die AD-Connectorinstanz bereitgestellt.
Die folgenden Metadaten zur AD-Domäne müssen verfügbar sein, bevor eine Instanz des AD-Connectors bereitgestellt wird:
- Name der Active Directory-Domäne
- Liste der Domänencontroller (vollqualifizierte Domänennamen)
- Liste mit IP-Adressen des DNS-Servers
Die folgenden Eingabefelder werden den Benutzern in der Active Directory-Connectorspezifikation zur Verfügung gestellt:
Erforderlich
spec.activeDirectory.realm
: Name der Active Directory-Domäne in Großschreibung. Dies ist die AD-Domäne, der diese Instanz des AD Connectors zugeordnet wird.spec.activeDirectory.domainControllers.primaryDomainController.hostname
Vollqualifizierter Domänenname des primären Domänencontrollers (PDC) in der AD-Domäne.Wenn Sie nicht wissen, welcher Domänencontroller in der Domäne primär ist, können Sie diesen Befehl auf jedem Windows-Computer ausführen, der der AD-Domäne beigetreten ist:
netdom query fsmo
.spec.activeDirectory.dns.nameserverIpAddresses
: Liste der IP-Adressen des Active Directory-DNS-Servers. Der DNS-Proxydienst leitet DNS-Abfragen im angegebenen Domänennamen an diese Server weiter.
Optional
spec.activeDirectory.serviceAccountProvisioning
Dies ist ein optionales Feld, das den Bereitstellungsmodus für Ihren AD-Connector definiert. Mögliche Werte:manual
für eine kundenseitig verwaltete Schlüsseltabelle undautomatic
für eine systemseitig verwaltete Schlüsseltabelle. Wenn für dieses Feld nichts angegeben wird, wird der Wert standardmäßig aufmanual
festgelegt. Bei Festlegung aufautomatic
(systemseitig verwaltete Schlüsseltabelle) generiert das System automatisch AD-Konten und Dienstprinzipalnamen für die verwalteten SQL-Instanzen, die diesem AD-Connector zugeordnet sind, und erstellt Schlüsseltabellendateien für sie. Bei Festlegung aufmanual
(kundenseitig verwaltete Schlüsseltabelle) erfolgt keine automatische Generierung des AD-Kontos und der Schlüsseltabelle durch das System. Der Benutzer muss eine Schlüsseltabellendatei bereitstellen.spec.activeDirectory.ouDistinguishedName
: Dies ist ein optionales Feld. Es ist jedoch bedingt obligatorisch, wenn der WertserviceAccountProvisioning
aufautomatic
festgelegt wird. Dieses Feld akzeptiert den Distinguished Name (DN) der Organisationseinheit (OE), die vom Benutzer vor der Bereitstellung des AD-Connectors in der Active Directory-Domäne erstellt werden müssen. Hier werden die vom System generierten AD-Konten für verwaltete SQL-Instanzen in der Active Directory-Domäne gespeichert. Der Wert könnte beispielsweise wie folgt aussehen:OU=arcou,DC=contoso,DC=local
.spec.activeDirectory.domainServiceAccountSecret
: Dies ist ein optionales Feld. Es wird bedingt obligatorisch, wenn der Wert vonserviceAccountProvisioning
aufautomatic
festgelegt wird. Dieses Feld akzeptiert den Namen des Kubernetes-Geheimnisses, das den Benutzernamen und das Kennwort des Domänendienstkontos enthält, das vor der AD Connector-Bereitstellung erstellt wurde. Das System verwendet dieses Konto, um andere AD-Konten in der Organisationseinheit zu generieren und Aktionen in diesen AD-Konten auszuführen.spec.activeDirectory.netbiosDomainName
: NetBIOS-Name der Active Directory-Domäne. Dies ist der kurze Domänenname (Name vor Windows 2000) Ihrer Active Directory-Domäne. Auf diese Weise werden häufig Konten in der AD-Domäne qualifiziert. Wenn z. B. über CONTOSO\admin auf die Konten in der Domäne Bezug genommen wird, ist CONTOSO der NETBIOS-Domänenname.Dieses Feld ist optional. Wenn für dieses Feld nichts angegeben wird, wird als Wert standardmäßig die erste Bezeichnung des Felds
spec.activeDirectory.realm
verwendet.In den meisten Domänenumgebungen ist hier der Standardwert festgelegt, aber einige Domänenumgebungen verfügen möglicherweise über einen nicht standardmäßigen Wert. Sie müssen dieses Feld nur verwenden, wenn der NetBIOS-Name Ihrer Domäne nicht mit der ersten Bezeichnung des vollqualifizierten Namens übereinstimmt.
spec.activeDirectory.domainControllers.secondaryDomainControllers[*].hostname
: Liste der vollqualifizierten Domänennamen des sekundären Domänencontrollers in der AD-DomäneWenn Ihre Domäne von mehreren Domänencontrollern bedient wird, sollten Sie einige Ihrer vollqualifizierten Domänennamen in dieser Liste bereitstellen. Dies ermöglicht Hochverfügbarkeit für Kerberos-Vorgänge.
Dieses Feld ist optional und nicht erforderlich. Wenn kein Wert bereitgestellt wird, erkennt das System die sekundären Domänencontroller automatisch.
spec.activeDirectory.dns.domainName
: DNS-Domänenname, für den DNS-Lookups an die Active Directory-DNS-Server weitergeleitet werden sollen.Ein DNS-Lookup nach einem beliebigen Namen, der zu dieser Domäne oder den zugehörigen Nachfolgerdomänen gehört, wird an Active Directory weitergeleitet.
Dieses Feld ist optional. Wenn nicht angegeben, wird standardmäßig der für
spec.activeDirectory.realm
bereitgestellte Wert in Kleinbuchstaben konvertiert verwendet.spec.activeDirectory.dns.replicas
: Replikatanzahl für den DNS-Proxydienst. Dieses Feld ist optional und wird standardmäßig auf 1 festgelegt, wenn nicht angegeben.spec.activeDirectory.dns.preferK8sDnsForPtrLookups
: Flag, das angibt, ob die Antwort des Kubernetes-DNS-Servers gegenüber der Antwort des AD-DNS-Servers für IP-Adresssuchen vorgezogen werden soll.Der DNS-Proxydienst bestimmt anhand dieses Felds, welche Upstreamgruppe von DNS-Servern für IP-Adresslookups bevorzugt werden soll.
Dieses Feld ist optional. Wenn hier nichts angegeben wird, wird standardmäßig
true
verwendet, d. h., die DNS-Lookups von IP-Adressen werden zuerst an Kubernetes-DNS-Server weitergeleitet. Wenn Kubernetes-DNS-Server kein Lookupergebnis liefern, wird die Abfrage an AD DNS-Server weitergeleitet. Wirdfalse
festgelegt, werden diese DNS-Lookups zuerst an AD-DNS-Server weitergeleitet. Bei einem Fehler erfolgt ein Fallback auf Kubernetes.
Bereitstellen des Active Directory-Connectors im Modus mit systemseitig verwalteter Schlüsseltabelle
Um einen AD-Connector bereitzustellen, erstellen Sie eine YAML-Spezifikationsdatei mit dem Namen active-directory-connector.yaml
.
Nachfolgend sehen Sie das Beispiel eines AD-Connectors für eine systemseitig verwaltete Schlüsseltabelle, der eine AD-Domäne namens CONTOSO.LOCAL
verwendet. Ersetzen Sie die Werte durch die Werte für Ihre AD-Domäne. adarc-dsa-secret
enthält das AD-Domänendienstkonto, das vor der AD-Bereitstellung erstellt wurde.
Hinweis
Stellen Sie sicher, dass das Kennwort des hier bereitgestellten AD-Domänendienstkontos nicht das Sonderzeichen !
enthält.
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>
Mit dem folgenden Befehl wird die AD Connector-Instanz bereitgestellt. Derzeit wird nur ein Kube-nativer Bereitstellungsansatz unterstützt.
kubectl apply –f active-directory-connector.yaml
Nach dem Übermitteln der Bereitstellung für die AD-Connectorinstanz können Sie den Status der Bereitstellung mithilfe des folgenden Befehls überprüfen:
kubectl get adc -n <namespace>