SQL no Linux (CentOS) – Integração com AD

SQL Server 2017 marcou a estreia do Microsoft SQL Server no Linux. A instalação do SQL Server no Linux é bem simples de ser realizada, porém para prover a capacidade de conectar ao servidor de banco de dados utilizando a autenticação integrada com o Windows requer alguns passos extras na instalação e configuração do servidor.

Recentemente a Microsoft lançou uma ferramenta para auxiliar neste processo de configuração – adutil (ainda em preview). Este artigo tem como objetivo mostrar o passo a passo da configuração da autenticação integrada com o AD utilizando o adutil.

Conhecendo o ambiente de teste

Seguem configurações do servidor de domínio utilizado neste exemplo:

  • Nome da servidor: WIN-KL323M8KIP1
  • Domínio: ESTUDO.NET
  • Endereço IP: 192.168.202.140

Configurações do SQL Server no Linux

  • Nome: rd
  • Endereço IP: 192.168.202.137

Preparando a máquina de domínio

Precisamos realizar ajustes no servidor de domínio adicionando informações no DNS para que ele consiga identificar o servidor do linux pelo nome. Para isto, devemos acessar o DNS Manager e adicionar uma entrada na “Forward Lookup Zone” para o servidor do linux.

Com este registro no DNS garantimos que o endereço rd.estudo.net chegará no servidor correto. Lembrando que o registro no DNS deve ser do tipo forwarding host (A).

Adicionando host linux no seu domínio do AD

O primeiro passo é configurar a interface de rede para adicionar o endereço do servidor DNS.

No cenário de teste, editamos o arquivo de configuração da interface de rede “ens33” adicionando as entradas PEERDNS, DNS1 e DOMAIN. O arquivo de configuração da interface é localizado no diretório “/etc/sysconfig/network-scripts/ifcfg-ens33“.

(...)
PEERDNS=no
DNS1=192.168.202.140
DOMAIN="estudo.net net"

Após ajustar a configuração de DNS é preciso reiniciar as interfaces de rede por meio do comando “systemctl restart network”. Se as configurações foram corretamente informadas, o arquivo /etc/resolv.conf deve conter as entradas conforme abaixo:

# Generated by NetworkManager
search estudo.net net
nameserver 192.168.202.140

O próximo passo é adicionar o host ao domínio.

Utilizando o pacote SSSD para adicionar o host ao domínio

Este método faz uso dos pacotes sssd e o realmd para adicionar o host linux ao domínio. Nossos testes demonstram como realizar este procedimento em um ambiente RHEL (Redhat, CentOS, Oracle Linux, …).

O primeiro passo é instalar os pacotes realmd e Kerberos client no host do SQL Server.

sudo yum install realmd krb5-workstation

Se a instalação do Kerberos solicitar o nome do domínio, devemos preencher com o nome do domínio em caixa alta, por exemplo ESTUDO.NET. A instalação do kerberos ajusta alguns arquivos de configuração /etc/krb5.keytab, /etc/sssd/sssd.conf e /etc/krb5.conf.

Outro passo importante é renomear o nome do host do SQL Server no linux para que ela tenha o FQDN: “sudo hostname <nome antigo>.estudo.net

sudo hostname rd.estudo.net

Após renomear o host, podemos adicioná-lo ao domínio.

sudo realm join estudo.net -U 'user@ESTUDO.NET' -v

O user deve ser uma conta com privilégios elevados no AD que permita a criação de objetos no domínio. No nosso cenário de teste utilizei a própria “administrator”. Desta forma, o comando executado foi “sudo realm join estudo.net -U ‘administrator@ESTUDO.NET’ -v“. O retorno esperado é: Successfully enrolled machine in realm.

Podemos validar se está tudo correto utilizando o comando “id”. Por exemplo:

id administrator@ESTUDO.NET

uid=122200500(administrator@estudo.net) gid=122200513(domain users@estudo.net) groups=122200513(domain users@estudo.net),122200520(group policy creator owners@estudo.net),122200512(domain admins@estudo.net),122200572(denied rodc password replication group@estudo.net),122200519(enterprise admins@estudo.net),122200518(schema admins@estudo.net)

Configurando a integração com o AD

O primeiro passo para configuração da integração com o AD é instalar o adutil.

sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo
sudo yum remove adutil
sudo ACCEPT_EULA=Y yum install -y adutil-preview

Importante ressaltar que a ferramenta ainda está como preview e alguns erros podem ocorrer.

Após a instalação, nós devemos obter um ticket Kerberor TGT (ticket-granting ticket). Para isto, utilizaremos o comando kinit e uma conta com permissão elevada no ad para criação de objetos. No nosso exemplo utilizaremos a “administrator”.

kinit administrator@ESTUDO.NET

Observação: o ambiente bash do linux é case sensitive. Recomendo utilizar o nome do domínio sempre em maiúsculo.

Após autenticar podemos dar seguimento com as atividades de criação de conta de domínio, registros de spn e configuração do keytab file.

Criando conta de usuário para o SQL Server

Para a criação da conta de domínio podemos utilizar o comando a seguir:

adutil user create --name mssql -distname CN=mssql,CN=Users,DC=CONTOSO,DC=COM --password 'P@ssw0rd'

Neste caso será criado um user com nome mssql e password P@ssw0rd. A senha nunca expirará.

Obs.: Se ocorrer erro para criar o usuário utilizando o adutil, basta criar um usuário simples no AD. Lembrar de marcar a opção de nunca expirar a senha.

Registrando os spn

No comando passamos a conta de usuário, o serviço do SQL Server e o nome do host com a porta configurada.

adutil spn addauto -n mssql MSSQLSvc -H rd.estudo.net -p 1433

Caso não consiga registrar automaticamente as SPN. Com uma conta de permissão elevada no AD. Crie manualmente as spn. Seguem exemplos:

setspn -A MSSQLSvc/rd.estudo.net:1433 mssql
setspn -A MSSQLSvc/rd:1433 mssql

Configurando os arquivo de keytab

A última etapa é configurar o keytab file. Arquivo utilizado para conexões utilizando Kerberos.

adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H rd --password 'P@ssw0rd' -s MSSQLSvc

Criadas as entradas no mssql.keytab, devemos ajustar o owner e os acessos ao arquivo para o SQL Server.

chown mssql. /var/opt/mssql/secrets/mssql.keytab
chmod 440 /var/opt/mssql/secrets/mssql.keytab

Agora devemos configurar o SQL Server para fazer uso das keytab.

/opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
/opt/mssql/bin/mssql-conf set network.privilegedadaccount mssql

Após todas as configurações basta reiniciar o serviço do SQL Server (sudo systemctl restart mssql-server) e testar a autenticação integrada.

O acesso com o SQL Server deve ser feito por meio do FQDN, caso tente conectar utilizando o endereço IP ocorrerá erro de Untrusted domain.

1 comentário em “SQL no Linux (CentOS) – Integração com AD

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *