Ingressar o SQL Server em um host Linux em um domínio do Active Directory

Aplica-se a:SQL Server – Linux

Este artigo oferece diretrizes gerais sobre como ingressar um computador host Linux do SQL Server em um domínio do Active Directory. Há dois métodos: usar um pacote SSSD interno ou usar provedores de Active Directory de terceiros. Os exemplos de produtos de ingresso no domínio de terceiros são are PBIS (Serviços de Identidade PowerBroker), One Identity e Centrify. Este guia inclui etapas para verificar a configuração do Active Directory. No entanto, ele não pretende fornecer instruções sobre como ingressar um computador em um domínio ao usar utilitários de terceiros.

Pré-requisitos

Antes de configurar a autenticação do Active Directory, é necessário configurar um controlador de domínio do Active Directory, Windows, em sua rede. Em seguida, ingresse o host SQL Server em Linux em um domínio do Active Directory.

As etapas de exemplo descritas neste artigo são apenas para orientação e referem-se aos sistemas operacionais Ubuntu 16.04, Red Hat Enterprise Linux (RHEL) 7.x e SUSE Enterprise Linux (SLES) 12. As etapas reais podem ser ligeiramente diferentes em seu ambiente, dependendo de como o ambiente geral está configurado e da versão do sistema operacional. Por exemplo, o Ubuntu 18.04 usa o netplan enquanto o Red Hat Enterprise Linux (RHEL) 8.x usa o nmcli entre outras ferramentas para gerenciar e configurar a rede. É recomendável envolver os administradores do sistema e do domínio do seu ambiente para ferramentas específicas, configuração, personalização e qualquer solução de problemas necessária.

Observação

Para obter mais informações sobre como configurar o Active Directory com as versões mais recentes do Ubuntu, do RHEL ou do SLES, confira Tutorial: Usar o adutil para configurar a autenticação do Active Directory com o SQL Server no Linux.

DNS Reverso (rDNS)

Quando você configura um computador que executa o Windows Server como um controlador de domínio, talvez você não tenha uma zona rDNS por padrão. Verifique se uma zona rDNS aplicável existe para o controlador de domínio e o endereço IP do computador Linux que executará o SQL Server.

Verifique também se existe um registro PTR que aponta para seu controlador de domínio.

Verificar a conexão com um controlador de domínio

Verifique se você pode entrar em contato com o controlador de domínio usando os nomes curto e totalmente qualificado do domínio e usando o nome do host do controlador de domínio. O IP do controlador de domínio também deve ser resolvido para o FQDN do controlador de domínio:

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

Dica

Este tutorial usa contoso.com e CONTOSO.COM como nomes de domínio e realm de exemplo, respectivamente. Ele também usa DC1.CONTOSO.COM como o nome de domínio totalmente qualificado de exemplo do controlador de domínio. É necessário substituir esses nomes por seus próprios valores.

Se qualquer uma dessas verificações de nome falhar, atualize sua lista de pesquisa de domínio. As seções a seguir fornecem instruções para Ubuntu, RHEL (Red Hat Enterprise Linux) e SLES (SUSE Linux Enterprise Server), respectivamente.

Ubuntu 16.04

  1. Edite o arquivo /etc/network/interfaces para que seu domínio do Active Directory esteja na lista de pesquisa de domínio:

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

    Observação

    O adaptador de rede, eth0, pode ser diferente para diferentes computadores. Para descobrir qual você está usando, execute ifconfig. Em seguida, copie a interface que tem um endereço IP e os bytes transmitidos e recebidos.

  2. Após editar esse arquivo, reinicie o serviço de rede:

    sudo ifdown eth0 && sudo ifup eth0
    
  3. Em seguida, verifique se o arquivo /etc/resolv.conf contém uma linha semelhante ao do exemplo a seguir:

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

Ubuntu 18.04

  1. Edite o arquivo [sudo vi /etc/netplan/******.yaml] para que seu domínio do Active Directory esteja na lista de pesquisa de domínio:

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

    Observação

    O adaptador de rede, eth0, pode ser diferente para diferentes computadores. Para descobrir qual você está usando, execute ifconfig. Em seguida, copie a interface que tem um endereço IP e os bytes transmitidos e recebidos.

  2. Após editar esse arquivo, reinicie o serviço de rede:

    sudo netplan apply
    
  3. Em seguida, verifique se o arquivo /etc/resolv.conf contém uma linha semelhante ao do exemplo a seguir:

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

RHEL 7.x

  1. Edite o arquivo /etc/sysconfig/network-scripts/ifcfg-eth0, para que seu domínio do Active Directory esteja na lista de pesquisa de domínio. Ou edite outro arquivo de configuração de interface, conforme apropriado:

    PEERDNS=no
    DNS1=<Domain controller IP address>
    DOMAIN="contoso.com com"
    
  2. Após editar esse arquivo, reinicie o serviço de rede:

    sudo systemctl restart network
    
  3. Agora, verifique se o arquivo /etc/resolv.conf contém uma linha semelhante ao do exemplo a seguir:

    search contoso.com com
    nameserver <Domain controller IP address>
    
  4. Se você ainda não conseguir executar o ping do controlador de domínio, localize o nome de domínio totalmente qualificado e o endereço IP do controlador de domínio. Um nome de domínio de exemplo é DC1.CONTOSO.COM. Adicione a seguinte entrada a /etc/hosts:

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

SLES 12

  1. Edite o arquivo /etc/sysconfig/network/config para que o IP do controlador de domínio seja usado para consultas DNS e para que o domínio do Active Directory esteja na lista de pesquisa de domínio:

    NETCONFIG_DNS_STATIC_SEARCHLIST=""
    NETCONFIG_DNS_STATIC_SERVERS="<Domain controller IP address>"
    
  2. Após editar esse arquivo, reinicie o serviço de rede:

    sudo systemctl restart network
    
  3. Em seguida, verifique se o arquivo /etc/resolv.conf contém uma linha semelhante ao do exemplo a seguir:

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

Ingressar no domínio do Active Directory

Depois que a configuração básica e a conectividade com o controlador de domínio for verificada, haverá duas opções para ingressar um computador host Linux do SQL Server com o controlador de domínio do Active Directory:

Opção 1: usar o pacote SSSD para ingressar no domínio do Active Directory

Esse método ingressa o host SQL Server em um domínio do Active Directory usando os pacotes realmd e sssd.

Observação

Esse é o método preferencial de ingressar um host Linux em um controlador de domínio do Active Directory.

Use as etapas a seguir para ingressar um host SQL Server em um domínio do Active Directory:

  1. Use realmd para ingressar seu computador host em seu Domínio do Active Directory. Você deve primeiro instalar os pacotes realmd e do cliente Kerberos no computador host SQL Server usando o gerenciador de pacotes da distribuição do Linux:

    RHEL:

    sudo yum install realmd krb5-workstation
    

    SLES 12:

    Essas etapas são específicas para o 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 a instalação do pacote de cliente Kerberos solicitar um nome de realm, insira seu nome de domínio em letras maiúsculas.

  3. Após confirmar se seu DNS está configurado adequadamente, ingresse o domínio executando o comando a seguir. Autentique-se usando uma conta do Active Directory com privilégios suficientes no Active Directory para ingressar um novo computador no domínio. Este comando cria uma conta do computador no Active Directory, cria o arquivo keytab do host /etc/krb5.keytab, configura o domínio no /etc/sssd/sssd.conf e atualiza o /etc/krb5.conf.

    Devido a um problema com realmd, primeiro defina o nome do host do computador para o FQDN em vez de para o computador. Caso contrário, realmd pode não criar todos os SPNs necessários para o computador e as entradas DNS não serão atualizadas automaticamente, mesmo que o controlador de domínio dê suporte a atualizações de DNS dinâmicas.

    sudo hostname <old hostname>.contoso.com
    

    Depois de executar o comando acima, o arquivo /etc/hostname deve conter <nome do host antigo>.contoso.com.

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

    Você deve ver a mensagem, Successfully enrolled machine in realm.

    A seguinte tabela lista algumas mensagens de erro que você poderia receber e sugestões sobre como resolvê-las:

    Mensagem de erro Recomendação
    Necessary packages are not installed Instale esses pacotes usando o gerenciador de pacotes da distribuição do Linux antes de executar o comando de ingresso no realm novamente.
    Insufficient permissions to join the domain Verifique com um administrador de domínio se você tem permissões suficientes para ingressar computadores Linux em seu domínio.
    KDC reply did not match expectations Talvez você não tenha especificado o nome de realm correto do usuário. Nomes de realm diferenciam maiúsculas de minúsculas, geralmente são escritos em maiúsculas e podem ser identificados com o comando realm discover contoso.com.

    O SQL Server usa SSSD e NSS para mapear contas de usuário e grupos para SIDs (identificadores de segurança). O SSSD deve ser configurado e estar em execução para o SQL Server criar logons do Active Directory com êxito. realmd geralmente faz isso automaticamente como parte de ingressar o domínio, mas, em alguns casos, você deve fazer isso separadamente.

    Para saber mais, confira como configurar SSSD manualmente e configurar NSS para funcionar com SSSD.

  4. Verifique se você pode coletar informações sobre um usuário do domínio e se pode adquirir um tíquete do Kerberos como esse usuário. O exemplo a seguir usa os comandos id, kinit e klist para isso.

    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
    

    Observação

    Se id user\@contoso.com retornar No such user, verifique se o serviço SSSD foi iniciado com êxito executando o comando sudo systemctl status sssd. Se o serviço estiver em execução e você ainda vir o erro, tente habilitar o log detalhado para SSSD. Para saber mais, confira a documentação do Red Hat para Solucionar problemas de SSSD.

    Se kinit user\@CONTOSO.COM retornar KDC reply didn't match expectations while getting initial credentials, verifique se você especificou o realm em letras maiúsculas.

Para saber mais, confira a documentação do Red Hat para Descobrir e ingressar domínios de identidade.

Opção 2: usar utilitários de provedor OpenLDAP de terceiros

Você pode usar utilitários de terceiros, como PBIS, VAS ou Centrify. Este artigo não aborda etapas para cada utilitário individual. Primeiro, você deve usar um desses utilitários para ingressar o host Linux do SQL Server no domínio antes de continuar.

O SQL Server não usa o código ou a biblioteca de um integrador de terceiros para nenhuma consulta relacionada ao Active Directory. O SQL Server sempre consulta o Active Directory usando chamadas de biblioteca OpenLDAP diretamente nesta instalação. Os integradores de terceiros são usados apenas para ingressar o host do Linux no domínio do Active Directory e o SQL Server não tem nenhuma comunicação direta com esses utilitários.

Importante

Confira as recomendações para usar a opção de configuração network.disablesssd do mssql-conf na seção Opções de configuração adicional do artigo Usar autenticação do Active Directory com o SQL Server em Linux.

Verifique se /etc/krb5.conf está configurado corretamente. Para a maioria dos provedores do Active Directory de terceiros, essa configuração é feita automaticamente. No entanto, verifique se, em /etc/krb5.conf, há os seguintes valores para evitar problemas futuros:

[libdefaults]
default_realm = CONTOSO.COM

[realms]
CONTOSO.COM = {
}

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

Verifique se o DNS inverso está configurado corretamente

O comando a seguir deve retornar o FQDN (nome de domínio totalmente qualificado) do host que executa o SQL Server. Um exemplo é SqlHost.contoso.com.

host <IP address of SQL Server host>

A saída deste comando deve ser semelhante a <reversed IP address>.in-addr.arpa domain name pointer SqlHost.contoso.com. Se esse comando não retornar o FQDN do host ou se o FQDN estiver incorreto, adicione uma entrada de DNS inversa para seu host do SQL Server no Linux ao servidor DNS.

Próxima etapa

Neste artigo, você conheceu como como configurar um SQL Server em um computador host Linux com a Autenticação do Active Directory. Para concluir a configuração do SQL Server em Linux para dar suporte a contas do Active Directory, siga essas instruções.