Zelfstudie: Active Directory-connector implementeren in de door het systeem beheerde keytabmodus

In dit artikel wordt uitgelegd hoe u Active Directory-connector implementeert in de door het systeem beheerde keytabmodus. Het is een belangrijk onderdeel om Active Directory-verificatie in te schakelen voor SQL Managed Instance die is ingeschakeld door Azure Arc.

Active Directory-connector in door het systeem beheerde keytabmodus

In de door het systeem beheerde Keytab-modus implementeert een Active Directory-connector een DNS-proxyservice waarmee de DNS-aanvragen die afkomstig zijn van het beheerde exemplaar naar een van de twee upstream-DNS-services worden geïmplementeerd:

  • Active Directory DNS-servers
  • Kubernetes DNS-servers

Naast de DNS-proxyservice implementeert AD Verbinding maken or ook een beveiligingsondersteuningsservice die communicatie naar het AD-domein vereenvoudigt voor het automatisch maken en beheren van AD-accounts, SPN's (Service Principal Names) en keytabs.

In het volgende diagram ziet u de functionaliteit van de AD-Verbinding maken or- en DNS-proxyservice in de door het systeem beheerde keytabmodus:

Active Directory connector

Vereisten

Voordat u verdergaat, moet u het volgende hebben:

  • Een exemplaar van de gegevenscontroller geïmplementeerd op een ondersteunde versie van Kubernetes
  • Een Active Directory-domein
  • Een vooraf gemaakte organisatie-eenheid (OE) in het Active Directory-domein
  • Een Active Directory-domeinserviceaccount

Het AD-domeinserviceaccount moet voldoende machtigingen hebben om gebruikersaccounts in de opgegeven organisatie-eenheid (OE) in de active directory automatisch te maken en te verwijderen.

Verdeel de volgende machtigingen , die zijn gericht op de organisatie-eenheid (OE) - aan het domeinserviceaccount:

  • Alle eigenschappen lezen
  • Alle eigenschappen schrijven
  • Gebruikersobjecten maken
  • Gebruikersobjecten verwijderen
  • Wachtwoord opnieuw instellen voor onderliggende gebruikersobjecten

Voor meer informatie over het instellen van een OE- en AD-account gaat u naar Gegevensservices met Azure Arc implementeren in Active Directory-verificatie met door het systeem beheerde keytab - vereisten

Invoer voor het implementeren van Active Directory-connector in de door het systeem beheerde keytabmodus

Als u een exemplaar van Een Active Directory-connector wilt implementeren, zijn er verschillende invoer nodig uit de Active Directory-domeinomgeving.

Deze invoer wordt geleverd in een yaml-specificatie voor het AD-connectorexemplaren.

De volgende metagegevens over het AD-domein moeten beschikbaar zijn voordat u een exemplaar van de AD-connector implementeert:

  • Naam van het Active Directory-domein
  • Lijst met domeincontrollers (fully qualified domain names)
  • Lijst met IP-adressen van de DNS-server

De volgende invoervelden worden weergegeven voor de gebruikers in de specificatie van de Active Directory-connector:

  • Vereist

    • spec.activeDirectory.realm Naam van het Active Directory-domein in hoofdletters. Dit is het AD-domein waaraan dit exemplaar van AD Verbinding maken or wordt gekoppeld.

    • spec.activeDirectory.domainControllers.primaryDomainController.hostname Volledig gekwalificeerde domeinnaam van de primaire domeincontroller (PDC) in het AD-domein.

      Als u niet weet welke domeincontroller in het domein primair is, kunt u erachter komen door deze opdracht uit te voeren op een Windows-computer die is gekoppeld aan het AD-domein: netdom query fsmo.

    • spec.activeDirectory.dns.nameserverIpAddresses Lijst met IP-adressen van Active Directory DNS-server. De DNS-proxyservice stuurt DNS-query's in de opgegeven domeinnaam door naar deze servers.

  • Optioneel

    • spec.activeDirectory.serviceAccountProvisioning Dit is een optioneel veld dat de implementatiemodus van uw AD-connector definieert met mogelijke waarden voor manual door de klant beheerde keytab of automatic voor door het systeem beheerde keytab. Wanneer dit veld niet is ingesteld, wordt de waarde standaard ingesteld manualop . Wanneer deze optie is ingesteld op automatic (door het systeem beheerde keytab), genereert het systeem automatisch AD-accounts en SPN's (Service Principal Names) voor de SQL Managed Instances die zijn gekoppeld aan deze AD-Verbinding maken or en maakt het er keytab-bestanden voor. Wanneer dit is ingesteld op manual (door de klant beheerde keytab), biedt het systeem geen automatische generatie van het AD-account en het genereren van keytabs. De gebruiker zal naar verwachting een keytab-bestand opgeven.

    • spec.activeDirectory.ouDistinguishedName Dit is een optioneel veld. Hoewel het voorwaardelijk verplicht wordt wanneer de waarde serviceAccountProvisioning is ingesteld op automatic. Dit veld accepteert de DN (Distinguished Name) van de organisatie-eenheid (OE) die de gebruikers moeten maken in active Directory-domein voordat ze AD-Verbinding maken or implementeren. Het wordt gebruikt om de door het systeem gegenereerde AD-accounts voor SQL Managed Instances op te slaan in het Active Directory-domein. Het voorbeeld van de waarde ziet er als volgt uit: OU=arcou,DC=contoso,DC=local.

    • spec.activeDirectory.domainServiceAccountSecret Dit is een optioneel veld. Het wordt voorwaardelijk verplicht wanneer de waarde serviceAccountProvisioning is ingesteld op automatic. Dit veld accepteert de naam van het Kubernetes-geheim dat de gebruikersnaam en het wachtwoord bevat van het Domeinserviceaccount dat is gemaakt vóór de AD-Verbinding maken or-implementatie. Het systeem gebruikt dit account om andere AD-accounts in de organisatie-eenheid te genereren en acties uit te voeren op deze AD-accounts.

    • spec.activeDirectory.netbiosDomainName NetBIOS-naam van het Active Directory-domein. Dit is de korte domeinnaam (pre-Windows 2000-naam) van uw Active Directory-domein. Dit wordt vaak gebruikt om accounts in het AD-domein in aanmerking te komen. Bijvoorbeeld als de accounts in het domein worden aangeduid als CONTOSO\admin, is CONTOSO de NETBIOS-domeinnaam.

      Dit veld is optioneel. Wanneer deze niet is opgegeven, wordt de waarde standaard ingesteld op het eerste label van het spec.activeDirectory.realm veld.

      In de meeste domeinomgevingen is dit ingesteld op de standaardwaarde, maar sommige domeinomgevingen hebben mogelijk een niet-standaardwaarde. U moet dit veld alleen gebruiken wanneer de NetBIOS-naam van uw domein niet overeenkomt met het eerste label van de volledig gekwalificeerde naam.

    • spec.activeDirectory.domainControllers.secondaryDomainControllers[*].hostname Lijst met de volledig gekwalificeerde domeinnamen van de secundaire domeincontrollers in het AD-domein.

      Als uw domein wordt bediend door meerdere domeincontrollers, is het een goede gewoonte om een aantal van hun volledig gekwalificeerde domeinnamen in deze lijst op te geven. Hierdoor is hoge beschikbaarheid mogelijk voor Kerberos-bewerkingen.

      Dit veld is optioneel en niet nodig. Het systeem detecteert automatisch de secundaire domeincontrollers wanneer er geen waarde wordt opgegeven.

    • spec.activeDirectory.dns.domainName DNS-domeinnaam waarvoor DNS-zoekacties moeten worden doorgestuurd naar de Dns-servers van Active Directory.

      Een DNS-zoekactie voor elke naam die deel uitmaakt van dit domein of de onderliggende domeinen, wordt doorgestuurd naar Active Directory.

      Dit veld is optioneel. Wanneer deze niet is opgegeven, wordt standaard de waarde gebruikt die is opgegeven voor spec.activeDirectory.realm conversie naar kleine letters.

    • spec.activeDirectory.dns.replicas Aantal replica's voor DNS-proxyservice. Dit veld is optioneel en wordt standaard ingesteld op 1 wanneer dit niet is opgegeven.

    • spec.activeDirectory.dns.preferK8sDnsForPtrLookups Vlag die aangeeft of u de voorkeur geeft aan kubernetes DNS-serverantwoord via AD DNS-serverantwoord voor IP-adreszoekacties.

      De DNS-proxyservice is afhankelijk van dit veld om te bepalen welke upstreamgroep van DNS-servers de voorkeur geeft aan IP-adreszoekacties.

      Dit veld is optioneel. Als deze niet is opgegeven, wordt deze standaard ingesteld op true de DNS-zoekacties van IP-adressen die eerst worden doorgestuurd naar Kubernetes DNS-servers. Als Kubernetes DNS-servers de zoekactie niet beantwoorden, wordt de query vervolgens doorgestuurd naar AD DNS-servers. Indien ingesteld op false, worden deze DNS-zoekacties eerst doorgestuurd naar AD DNS-servers en na een fout terug te vallen op Kubernetes.

Active Directory-connector implementeren in de door het systeem beheerde keytabmodus

Als u een AD-connector wilt implementeren, maakt u een YAML-specificatiebestand met de naam active-directory-connector.yaml.

Hieronder volgt een voorbeeld van een door het systeem beheerde keytab AD-connector die gebruikmaakt van een AD-domein van de naam CONTOSO.LOCAL. Zorg ervoor dat u de waarden vervangt door de waarden voor uw AD-domein. Het adarc-dsa-secret bevat het AD-domeinserviceaccount dat is gemaakt vóór de AD-implementatie.

Notitie

Zorg ervoor dat het wachtwoord van het opgegeven AD-account van de domeinservice hier niet als speciale tekens bevat ! .

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>

Met de volgende opdracht wordt het EXEMPLAAR van de AD-connector geïmplementeerd. Op dit moment wordt alleen de kube-systeemeigen implementatiebenadering ondersteund.

kubectl apply –f active-directory-connector.yaml

Nadat u de implementatie voor het EXEMPLAAR van de AD-connector hebt ingediend, kunt u de status van de implementatie controleren met behulp van de volgende opdracht.

kubectl get adc -n <namespace>