Condividi tramite


Esercitazione - Distribuire Active Directory Connector in modalità keytab gestita dal sistema

Questo articolo illustra come distribuire Active Directory Connector in modalità keytab gestita dal sistema. Si tratta di un componente fondamentale per abilitare l'autenticazione di Active Directory in un'Istanza gestita di SQL abilitata da Azure Arc.

Active Directory Connector in modalità keytab gestita dal sistema

In modalità Keytab gestita dal sistema, Active Directory Connector distribuisce un servizio proxy DNS che esegue il proxy delle richieste DNS provenienti dall'istanza gestita a uno dei due servizi DNS upstream:

  • Server DNS Active Directory
  • Server DNS Kubernetes

Oltre al servizio proxy DNS, Active Directory Connector distribuisce anche un servizio di supporto per la sicurezza che facilita la comunicazione con il dominio di Active Directory, per la creazione e la gestione automatica degli account Active Directory, dei nomi delle entità servizio (SPN) e dei keytab.

Il diagramma seguente mostra la funzionalità di Active Directory Connector e del servizio proxy DNS in modalità keytab gestita dal sistema:

Active Directory Connector

Prerequisiti

Prima di procedere, è necessario avere:

  • Un'Istanza del controller dei dati distribuita in una versione supportata di Kubernetes
  • Un dominio di Active Directory
  • Un'unità organizzativa creata in precedenza nel dominio di Active Directory
  • Un account del servizio del dominio di Active Directory

L'account del servizio del dominio di Active Directory deve disporre delle autorizzazioni sufficienti per creare ed eliminare automaticamente gli account utente all'interno dell'unità organizzativa (OU) specificata in Active Directory.

Concedere le autorizzazioni seguenti, con ambito relativo all'unità organizzativa (OU), all'account del servizio del dominio:

  • Leggi tutte le proprietà
  • Scrivere tutte le proprietà
  • Create User objects (Crea oggetti utente)
  • Elimina oggetti utente
  • Reimpostare la password sugli oggetti utente discendenti

Per informazioni dettagliate su come configurare l'unità organizzativa e l'account Active Directory, vedere Distribuire i servizi dati abilitati per Azure Arc nell'autenticazione di Active Directory in modalità keytab gestita dal sistema - Prerequisiti

Input per la distribuzione di Active Directory Connector in modalità keytab gestita dal sistema

Per distribuire un'istanza di Active Directory Connector, sono richiesti vari input dall'ambiente del dominio di Active Directory.

Tali input vengono forniti in una specifica yaml per l'istanza di Active Directory Connector.

Prima di distribuire un'istanza di Active Directory Connector, è necessario che siano disponibili i metadati seguenti sul dominio di Active Directory:

  • Nome del dominio di Active Directory
  • Elenco dei controller di dominio (nomi di dominio completi)
  • Elenco degli indirizzi IP del server DNS

I campi di input seguenti vengono esposti agli utenti nella specifica di Active Directory Connector:

  • Obbligatorio

    • spec.activeDirectory.realm Nome del dominio di Active Directory in lettere maiuscole. Questo è il dominio di Active Directory al quale verrà associata questa istanza di Active Directory Connector.

    • spec.activeDirectory.domainControllers.primaryDomainController.hostname Nome di dominio completo del controller di dominio primario (PDC) nel dominio di Active Directory.

      Se non si sa qual è il controller di dominio primario nel dominio, è possibile scoprirlo eseguendo il comando seguente in qualsiasi computer Windows aggiunto al dominio di Active Directory: netdom query fsmo.

    • spec.activeDirectory.dns.nameserverIpAddresses Elenco degli indirizzi IP del server DNS di Active Directory. Il servizio proxy DNS inoltrerà le query DNS nel nome di dominio fornito a questi server.

  • Facoltativo

    • spec.activeDirectory.serviceAccountProvisioning Questo è un campo facoltativo che definisce la modalità di distribuzione di Active Directory Connector con i valori possibili, ad esempio, manual per la modalità keytab gestita dal cliente o automatic per la modalità keytab gestita dal sistema. Se questo campo non viene impostato assume il valore di manual. Se impostato su automatic (modalità keytab gestita dal sistema), il sistema genererà automaticamente gli account Active Directory e i nomi delle entità servizio (SPN) per le istanze gestite di SQL associate a questo Active Directory Connector e saranno creati i file keytab per tali account. Se impostato su manual (modalità keytab gestita dal cliente), il sistema non prevede la generazione automatica dell'account AD e la generazione dei file keytab. Sarà l'utente a dover fornire un file keytab.

    • spec.activeDirectory.ouDistinguishedName Questo campo è facoltativo. Tuttavia, esso diventa obbligatorio in modo condizionale se il valore di serviceAccountProvisioning viene impostato su automatic. Questo campo accetta il nome distinto (DN) dell'unità organizzativa (OU) che gli utenti devono creare nel dominio di Active Directory prima di distribuire Active Directory Connector. Esso consente di archiviare gli account AD generati dal sistema per le istanze gestite di SQL nel dominio di Active Directory. Il valore di esempio è simile al seguente: OU=arcou,DC=contoso,DC=local.

    • spec.activeDirectory.domainServiceAccountSecret Questo campo è facoltativo. Diventa obbligatorio in modo condizionale se il valore di serviceAccountProvisioning viene impostato su automatic. Questo campo accetta il nome del segreto Kubernetes contenente il nome utente e la password dell'account del servizio del dominio creato prima della distribuzione di Active Directory Connector. Il sistema userà questo account per generare altri account Active Directory nell'unità organizzativa ed per eseguire azioni su tali account Active Directory.

    • spec.activeDirectory.netbiosDomainName Nome NetBIOS del dominio di Active Directory. Questo è il nome di dominio breve (nome precedente a Windows 2000) del dominio di Active Directory. Viene spesso usato per qualificare gli account nel dominio di Active Directory. Ad esempio, se gli account nel dominio sono definiti CONTOSO\admin, CONTOSO è il nome di dominio NETBIOS.

      Questo campo è facoltativo. Se non viene specificato, assume il valore della prima etichetta del campo spec.activeDirectory.realm.

      Nella maggior parte degli ambienti di dominio, questo valore è impostato sul valore predefinito, tuttavia in alcuni ambienti di dominio il valore potrebbe non essere predefinito. È necessario utilizzare questo campo solo se il nome NetBIOS del dominio non corrisponde alla prima etichetta del suo nome completo.

    • spec.activeDirectory.domainControllers.secondaryDomainControllers[*].hostname Elenco dei nomi di dominio completi dei controller di dominio secondari nel dominio di Active Directory.

      Se il dominio viene gestito da più controller di dominio, è consigliabile specificare alcuni dei nomi di dominio completi presenti nell'elenco. In questo modo si ottiene una disponibilità elevata per le operazioni Kerberos.

      Questo campo è facoltativo e non è necessario. Se non viene specificato un valore, il sistema rileverà automaticamente i controller di dominio secondari.

    • spec.activeDirectory.dns.domainName Nome di dominio DNS per il quale le ricerche DNS devono essere inoltrate ai server DNS di Active Directory.

      Una ricerca DNS di qualsiasi nome appartenente a questo dominio, o ai relativi domini discendenti, sarà inoltrata ad Active Directory.

      Questo campo è facoltativo. Se non specificato, per impostazione predefinita viene impostato il valore fornito per spec.activeDirectory.realm convertito in lettere minuscole.

    • spec.activeDirectory.dns.replicas Numero di repliche per il servizio proxy DNS. Questo campo è facoltativo e il valore predefinito è 1, se non specificato.

    • spec.activeDirectory.dns.preferK8sDnsForPtrLookups Flag che indica se preferire la risposta del server DNS Kubernetes, rispetto alla risposta del server DNS di Active Directory, per le ricerche di indirizzi IP.

      Il servizio proxy DNS si basa su questo campo per determinare quale gruppo upstream di server DNS sia preferibile per le ricerche di indirizzi IP.

      Questo campo è facoltativo. Se non viene specificato, assume il valore di true, ciò significa che le ricerche DNS di indirizzi IP saranno prima inoltrate ai server DNS Kubernetes. Se i server DNS Kubernetes non sono in grado di rispondere alla ricerca, la query viene quindi inoltrata ai server DNS di Active Directory. Se impostato su false, le ricerche DNS saranno inoltrate prima ai server DNS di Active Directory e, in caso di errore, nuovamente a Kubernetes.

Distribuire Active Directory Connector in modalità keytab gestita dal sistema

Per distribuire un Active Directory Connector, creare un file di specifica YAML denominato active-directory-connector.yaml.

Di seguito è riportato un esempio di Active Directory Connector in modalità keytab gestita dal sistema che usa un dominio di Active Directory del nome CONTOSO.LOCAL. Assicurarsi di sostituire i valori con quelli per il dominio Active Directory. Il adarc-dsa-secret contiene l'account del servizio di dominio di Active Directory creato prima della distribuzione di Active Directory.

Nota

Assicurarsi che la password dell'account Active Directory del servizio di dominio specificato non contenga il carattere speciale !.

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>

Il comando seguente consente la distribuzione dell'istanza di Active Directory Connector. Attualmente è supportato soltanto l'approccio di distribuzione nativo Kube.

kubectl apply –f active-directory-connector.yaml

Dopo aver inviato la distribuzione per l'istanza di Active Directory Connector, è possibile controllare lo stato della distribuzione usando il comando seguente.

kubectl get adc -n <namespace>