Aggiungere un host di SQL Server in Linux a un dominio di Active Directory

Si applica a:SQL Server - Linux

Questo articolo fornisce indicazioni generali su come aggiungere un computer host di SQL Server in Linux a un dominio di Active Directory. Sono disponibili due metodi: usare un pacchetto SSSD incorporato o usare provider Active Directory di terze parti. Esempi di prodotti di terze parti per l'aggiunta a un dominio sono PowerBroker Identity Services (PBIS), One Identity e Centrify. Questa guida include i passaggi per verificare la configurazione di Active Directory. Non ha tuttavia lo scopo di fornire istruzioni su come aggiungere un computer a un dominio quando si usano utilità di terze parti.

Prerequisiti

Prima di configurare l'autenticazione di Active Directory, è necessario configurare un controller di dominio Active Directory, Windows, nella rete. Aggiungere quindi l'host di SQL Server in Linux a un dominio di Active Directory.

Le procedure di esempio descritte in questo articolo sono puramente indicative e fanno riferimento ai sistemi operativi Ubuntu 16.04, Red Hat Enterprise Linux (RHEL) 7.x e SUSE Linux Enterprise Server (SLES) 12. Le procedure effettive possono essere leggermente diverse a seconda della configurazione dell'ambiente generale e della versione del sistema operativo. Ad esempio, Ubuntu 18.04 usa netplan, mentre Red Hat Enterprise Linux (RHEL) 8.x usa nmcli tra gli altri strumenti per gestire e configurare la rete. È consigliabile coinvolgere gli amministratori di sistema e di dominio dell'ambiente per le attività specifiche di installazione degli strumenti, configurazione e personalizzazione e per l'eventuale risoluzione dei problemi.

Nota

Per informazioni sulla configurazione di Active Directory con le versioni più recenti di Ubuntu, RHEL o SLES, vedi Esercitazione: Usare adutil per configurare l'autenticazione di Active Directory con SQL Server in Linux.

DNS inverso (rDNS)

Quando si configura un computer che esegue Windows Server come controller di dominio, è possibile che non sia disponibile una zona rDNS per impostazione predefinita. Assicurati che esista una zona rDNS applicabile sia per il controller di dominio che per l'indirizzo IP del computer Linux che eseguirà SQL Server.

Assicurarsi anche che esista un record PTR che punta ai controller di dominio.

Controllare la connessione a un controller di dominio

Verificare che sia possibile contattare il controller di dominio usando sia il nome breve che quello completo del dominio e usando il nome host del controller di dominio. Anche l'indirizzo IP del controller di dominio deve essere risolto nel nome di dominio completo del controller di dominio:

ping contoso
ping contoso.com
ping dc1.contoso.com
nslookup <IP address of dc1.contoso.com>

Suggerimento

Questa esercitazione usa contoso.com e CONTOSO.COM rispettivamente come nome di dominio e nome dell'area di autenticazione di esempio. Usa anche DC1.CONTOSO.COM come nome di dominio completo di esempio del controller di dominio. È necessario sostituire questi nomi con i valori effettivi.

Se la verifica di uno di questi nomi non riesce, aggiornare l'elenco di ricerca del dominio. Le sezioni seguenti forniscono istruzioni per Ubuntu, Red Hat Enterprise Linux (RHEL) e SUSE Linux Enterprise Server (SLES) rispettivamente.

Ubuntu 16.04

  1. Modifica il file /etc/network/interfaces in modo che il dominio Active Directory sia incluso nell'elenco di ricerca del dominio:

    # The primary network interface
    auto eth0
    iface eth0 inet dhcp
    dns-nameservers <Domain controller IP address>
    dns-search <Active Directory domain name>
    

    Nota

    L'interfaccia di rete, eth0, potrebbe essere diversa a seconda del computer. Per individuare quella in uso, eseguire ifconfig. Copiare quindi l'interfaccia che ha un indirizzo IP e byte trasmessi e ricevuti.

  2. Dopo aver modificato il file, riavviare il servizio di rete:

    sudo ifdown eth0 && sudo ifup eth0
    
  3. Verifica quindi che il file /etc/resolv.conf contenga una riga come quella nell'esempio seguente:

    search contoso.com com
    nameserver <Domain controller IP address>
    

Ubuntu 18.04

  1. Modificare il file [sudo vi /etc/netplan/******.yaml] in modo che il dominio di Active Directory sia incluso nell'elenco di ricerca del dominio:

    network:
      ethernets:
        eth0:
                dhcp4: true
    
                dhcp6: true
                nameservers:
                        addresses: [<Domain controller IP address>]
                        search: [<Active Directory domain name>]
      version: 2
    

    Nota

    L'interfaccia di rete, eth0, potrebbe essere diversa a seconda del computer. Per individuare quella in uso, eseguire ifconfig. Copiare quindi l'interfaccia che ha un indirizzo IP e byte trasmessi e ricevuti.

  2. Dopo aver modificato il file, riavviare il servizio di rete:

    sudo netplan apply
    
  3. Verifica quindi che il file /etc/resolv.conf contenga una riga come quella nell'esempio seguente:

    search contoso.com com
    nameserver <Domain controller IP address>
    

RHEL 7.x

  1. Modifica il file /etc/sysconfig/network-scripts/ifcfg-eth0 in modo che il dominio Active Directory sia incluso nell'elenco di ricerca del dominio. In alternativa, modificare un altro file di configurazione dell'interfaccia nel modo appropriato:

    PEERDNS=no
    DNS1=<Domain controller IP address>
    DOMAIN="contoso.com com"
    
  2. Dopo aver modificato il file, riavviare il servizio di rete:

    sudo systemctl restart network
    
  3. Verifica ora che il file /etc/resolv.conf contenga una riga simile all’esempio seguente:

    search contoso.com com
    nameserver <Domain controller IP address>
    
  4. Se non è ancora possibile effettuare il ping del controller di dominio, trova il nome di dominio completo e l'indirizzo IP del controller di dominio. Un nome di dominio di esempio è DC1.CONTOSO.COM. Aggiungi la voce seguente a /etc/hosts:

    <IP address> DC1.CONTOSO.COM CONTOSO.COM CONTOSO
    

SLES 12

  1. Modifica il file /etc/sysconfig/network/config in modo che l'indirizzo IP del controller di dominio venga usato per le query DNS e che il dominio Active Directory sia incluso nell'elenco di ricerca del dominio:

    NETCONFIG_DNS_STATIC_SEARCHLIST=""
    NETCONFIG_DNS_STATIC_SERVERS="<Domain controller IP address>"
    
  2. Dopo aver modificato il file, riavviare il servizio di rete:

    sudo systemctl restart network
    
  3. Verifica quindi che il file /etc/resolv.conf contenga una riga come quella nell'esempio seguente:

    search contoso.com com
    nameserver <Domain controller IP address>
    

Aggiungi le macchine virtuali al dominio Active Directory

Una volta verificata la configurazione di base e la connettività con il controller di dominio, sono disponibili due opzioni per l'aggiunta di un computer host di SQL Server in Linux con il controller di dominio Active Directory:

Opzione 1: Usare il pacchetto SSSD per aggiungere il dominio Active Directory

Questo metodo aggiunge l'host di SQL Server a un dominio di Active Directory usando i pacchetti realmd e sssd.

Nota

È il metodo preferito per l'aggiunta di un host Linux a un controller di dominio Active Directory.

Per aggiungere un host di SQL Server a un dominio di Active Directory, seguire questa procedura:

  1. Usa realmd per aggiungere il computer host al dominio Active Directory. È necessario prima installare i pacchetti client realmd e Kerberos nel computer host di SQL Server usando lo strumento di gestione pacchetti della distribuzione Linux:

    RHEL:

    sudo yum install realmd krb5-workstation
    

    SLES 12:

    Questi passaggi sono specifici per SLES 12.

    sudo zypper addrepo https://download.opensuse.org/repositories/network/SLE_12/network.repo
    sudo zypper refresh
    sudo zypper install realmd krb5-client sssd-ad
    

    Ubuntu 16.04:

    sudo apt-get install realmd krb5-user software-properties-common python-software-properties packagekit
    

    Ubuntu 18.04:

    sudo apt-get install realmd krb5-user software-properties-common python3-software-properties packagekit
    sudo apt-get install adcli libpam-sss libnss-sss sssd sssd-tools
    
  2. Se l'installazione del pacchetto client Kerberos richiede un nome dell'area di autenticazione, immettere il nome di dominio in lettere maiuscole.

  3. Dopo aver verificato che il DNS sia configurato correttamente, aggiungere il dominio eseguendo il comando seguente. È necessario eseguire l'autenticazione con un account di Active Directory che disponga di privilegi sufficienti in Active Directory per aggiungere un nuovo computer al dominio. Questo comando crea un nuovo account computer in Active Directory, crea il file keytab host /etc/krb5.keytab, configura il dominio in /etc/sssd/sssd.conf e aggiorna /etc/krb5.conf.

    A causa di un problema con realmd, impostare prima di tutto il nome host del computer sul nome di dominio completo anziché sul nome del computer. In caso contrario, realmd potrebbe non creare tutti i nomi dell'entità servizio necessari per il computer e le voci DNS non verranno aggiornate automaticamente, anche se il controller di dominio supporta gli aggiornamenti dinamici di DNS.

    sudo hostname <old hostname>.contoso.com
    

    Dopo aver eseguito il comando precedente, il file /etc/hostname dovrebbe contenere <vecchio nome host>.contoso.com.

    sudo realm join contoso.com -U 'user@CONTOSO.COM' -v
    

    Dovrebbe essere visualizzato il messaggio Successfully enrolled machine in realm.

    La tabella seguente elenca alcuni messaggi di errore che si potrebbero ricevere e suggerimenti per risolverli:

    Error message Elemento consigliato
    Necessary packages are not installed Installare i pacchetti usando lo strumento di gestione pacchetti della distribuzione Linux prima di eseguire di nuovo il comando realm join.
    Insufficient permissions to join the domain Verificare con un amministratore di dominio di disporre di autorizzazioni sufficienti per aggiungere computer Linux al dominio.
    KDC reply did not match expectations È possibile che non sia stato specificato il nome dell'area di autenticazione corretto per l'utente. I nomi dell'area di autenticazione fanno distinzione tra maiuscole e minuscole, in genere sono in maiuscolo e possono essere identificati con il comando realm discover contoso.com.

    SQL Server usa SSSD e NSS per il mapping degli account utente e dei gruppi agli ID di sicurezza (SID). SSSD deve essere configurato e in esecuzione affinché SQL Server possa creare correttamente gli account di accesso di Active Directory. realmd in genere esegue questa operazione automaticamente nell'ambito dell'aggiunta del dominio, ma in alcuni casi è necessario eseguirla separatamente.

    Per altre informazioni, vedere gli articoli che spiegano come configurare SSSD manualmente e come configurare NSS per l'uso con SSSD.

  4. Verificare che sia ora possibile raccogliere informazioni su un utente dal dominio e che sia possibile acquisire un ticket Kerberos come tale utente. A questo scopo, l'esempio seguente usa i comandi id, kinit e klist.

    id user@contoso.com
    
    uid=1348601103(user@contoso.com) gid=1348600513(domain group@contoso.com) groups=1348600513(domain group@contoso.com)
    
    kinit user@CONTOSO.COM
    
    Password for user@CONTOSO.COM:
    
    klist
    Ticket cache: FILE:/tmp/krb5cc_1000
    Default principal: user@CONTOSO.COM
    

    Nota

    Se id user\@contoso.com restituisce No such user, verifica che il servizio SSSD sia stato avviato correttamente eseguendo il comando sudo systemctl status sssd. Se il servizio è in esecuzione e viene ancora visualizzato l'errore, provare ad abilitare la registrazione dettagliata per SSSD. Per altre informazioni, vedere la documentazione di Red Hat relativa alla risoluzione dei problemi di SSSD.

    Se kinit user\@CONTOSO.COM restituisce KDC reply didn't match expectations while getting initial credentials, verifica di avere specificato il nome dell'area di autenticazione in maiuscolo.

Per altre informazioni, vedere la documentazione di Red Hat relativa all'individuazione e aggiunta di domini di identità.

Opzione 2: Usare le utilità del provider OpenLDAP di terze parti

È possibile usare utilità di terze parti come PBIS, VAS o Centrify. Questo articolo non include le procedure per ogni singola utilità. Prima di procedere, è necessario usare una di queste utilità per aggiungere l'host Linux per SQL Server al dominio.

SQL Server non usa codice o librerie di integratori di terze parti per le query correlate ad Active Directory. Esegue sempre le query su Active Directory tramite chiamate alla libreria OpenLDAP direttamente in questa configurazione. Gli integratori di terze parti vengono usati solo per aggiungere l'host Linux al dominio Active Directory e SQL Server non ha alcuna comunicazione diretta con queste utilità.

Importante

Vedere i consigli per l'uso dell'opzione di configurazione mssql-confnetwork.disablesssd nella sezione Opzioni di configurazione aggiuntive dell'articolo Usare l'autenticazione di Active Directory con SQL Server in Linux.

Verifica che il record /etc/krb5.conf sia configurato correttamente. Per la maggior parte dei provider di Active Directory di terze parti, questa configurazione viene eseguita automaticamente. Tuttavia, per evitare eventuali problemi futuri, verificare se in /etc/krb5.conf sono presenti i valori seguenti:

[libdefaults]
default_realm = CONTOSO.COM

[realms]
CONTOSO.COM = {
}

[domain_realm]
contoso.com = CONTOSO.COM
.contoso.com = CONTOSO.COM

Verificare che il DNS inverso sia configurato correttamente

Il comando seguente deve restituire il nome di dominio completo (FQDN) dell'host che esegue SQL Server. Un esempio è SqlHost.contoso.com.

host <IP address of SQL Server host>

L'output di questo comando dovrebbe essere simile a <reversed IP address>.in-addr.arpa domain name pointer SqlHost.contoso.com. Se il comando non restituisce il nome di dominio completo dell'host o se il nome di dominio completo non è corretto, aggiungi una voce di DNS inverso per l'host di SQL Server in Linux al server DNS.

Passaggio successivo

Questo articolo ha illustrato la configurazione di un computer host di SQL Server in Linux con l'autenticazione di Active Directory. Per completare la configurazione di SQL Server in Linux per il supporto degli account Active Directory, seguire queste istruzioni.