Tutorial: usar o adutil para configurar a autenticação do Active Directory com o SQL Server em Linux
Aplica-se a: SQL Server – Linux
Este tutorial explica como configurar a autenticação do Active Directory do Windows com o SQL Server em Linux usando o adutil. Para conhecer outro método de configuração da autenticação do Active Directory usando o ktpass, confira o Tutorial: Usar a autenticação do Active Directory com o SQL Server em Linux.
Este tutorial é composto pelas seguintes etapas:
- Instalar o adutil
- Ingressar o computador Linux no domínio do Active Directory
- Criar um usuário do Active Directory para o SQL Server e definir o SPN (nome da entidade de serviço) usando o adutil
- Criar o arquivo keytab do serviço SQL Server (keytab)
- Configurar o SQL Server para usar o arquivo keytab
- Criar logons do SQL Server baseados no Active Directory usando Transact-SQL
- Conectar-se ao SQL Server usando a autenticação do Active Directory
Pré-requisitos
Antes de configurar a autenticação do Active Directory, você precisará:
- um controlador de domínio do Windows executando o Active Directory Domain Services em sua rede.
- A ferramenta adutil instalada em um computador host conectado ao domínio.
Preparação do computador de domínio
Verifique se há uma entrada de host de encaminhamento (A) adicionada no Active Directory para o endereço IP do host do Linux. Neste tutorial, o endereço IP do computador host sql1
é 10.0.0.10
. Adicionamos a entrada de host de encaminhamento no Active Directory no exemplo a seguir. A entrada garante que, quando os usuários se conectarem a sql1.contoso.com
, o host correto será atingido.
Para este tutorial, estamos usando um ambiente no Azure com três VMs (máquinas virtuais). Uma VM é um computador Windows Server chamado adVM.contoso.com
, em execução como um DC (controlador de domínio) com o nome de domínio contoso.com
. A segunda VM é um computador cliente, chamado winbox
, que executa o Windows 10, que tem o SSMS (SQL Server Management Studio) instalado. O terceiro computador é um computador Ubuntu 18.04 LTS chamado sql1
, que hospeda o SQL Server.
Ingressar o computador host Linux no seu domínio do Active Directory
Para ingressar sql1
no domínio do Active Directory, confira Ingressar o SQL Server em um host Linux em um domínio do Active Directory.
Instalar o adutil
Para instalar o adutil, siga as etapas explicadas no artigo Introdução ao adutil – utilitário Active Directory no computador host que você adicionou ao domínio na etapa anterior.
Use o adutil para criar um usuário do Active Directory para o SQL Server e definir o SPN (nome da entidade de serviço)
Obtenha ou renove o TGT (tíquete de concessão de tíquete) do Kerberos usando o comando
kinit
. Você deve usar uma conta com privilégios para o comandokinit
, e o computador host já deve fazer parte do domínio. A conta precisa ter permissão para se conectar ao domínio e criar contas e SPNs no domínio.Neste script de exemplo, um usuário com privilégios chamado
privilegeduser@CONTOSO.COM
já foi criado no controlador de domínio.kinit privilegeduser@CONTOSO.COM
Usando o adutil, crie o usuário que será usado como a conta do Active Directory com privilégios pelo SQL Server.
As senhas podem ser especificadas de três maneiras diferentes. Se você usar mais de um desses métodos, eles terão precedência na seguinte ordem:
- Usando o sinalizador de senha:
--password <password>
- Em uma variável de ambiente:
ADUTIL_ACCOUNT_PWD
- Entrada interativa em um prompt de linha de comando
A variável de ambiente ou os métodos de entrada interativos são mais seguros do que o sinalizador de senha.
adutil user create --name sqluser --distname CN=sqluser,CN=Users,DC=CONTOSO,DC=COM --password 'P@ssw0rd'
Você pode especificar o nome da conta usando o nome diferenciado (
--distname
), como mostrado anteriormente, ou pode usar o nome da UO (unidade organizacional). O nome da UO (--ou
) tem precedência sobre o nome diferenciado, caso você especifique ambos. Você pode executar o comando a seguir para obter mais detalhes:adutil user create --help
- Usando o sinalizador de senha:
Registre os SPNs para a entidade de segurança criada anteriormente. Você deve usar o FQDN (nome de domínio totalmente qualificado) do computador. Neste tutorial, estamos usando a porta padrão do SQL Server, 1433. Seu número da porta pode ser diferente.
adutil spn addauto -n sqluser -s MSSQLSvc -H sql1.contoso.com -p 1433
addauto
cria os SPNs automaticamente, contanto que haja privilégios suficientes para a contakinit
.-n
: o nome da conta para atribuir os SPNs.-s
: o nome do serviço a ser usado para gerar SPNs. Nesse caso, é para o serviço SQL Server, motivo para o nome do serviço serMSSQLSvc
.-H
: o nome do host a ser usado para gerar SPNs. Se não for especificado, o FQDN do host local será usado. Nesse caso, o nome do host ésql1
e o FQDN ésql1.contoso.com
.-p
: a porta a ser usada para gerar SPNs. Se não for especificado, os SPNs serão gerados sem uma porta. As conexões do SQL só funcionarão nesse caso quando o SQL Server estiver escutando a porta padrão, 1433.
Criar o arquivo keytab do serviço SQL Server usando mssql-conf
Você pode instalar o adutil e integrá-lo ao mssql-conf para criar e configurar o keytab usando o mssql-conf diretamente. Esse é o método preferido para criar um arquivo keytab de serviço do SQL Server. Caso contrário, você poderá criar o arquivo keytab do serviço SQL Server manualmente.
Pré-requisitos
Verifique se o arquivo
/var/opt/mssql/mssql.conf
pertence amssql
e não aroot
. Se não for o caso, você deverá executar os comandos mssql-conf usandosudo
.Em um controlador de domínio, nas configurações do Active Directory para a conta
network.privilegedadaccount
(nestes exemplos,sqluser@CONTOSO.COM
), habilite as seguintes opções na guia Conta, na seção Opções da conta:- Esta conta oferece suporte à criptografia Kerberos AES de 128 bits
- Esta conta dá suporte à criptografia Kerberos AES de 256 bits
Criar o arquivo de keytab
Depois de criar o usuário e os SPNs, você poderá criar o keytab usando as etapas a seguir.
Alterne para o usuário
mssql
:su mssql
Entre como o usuário do Active Directory usando o comando
kinit
:kinit privilegeduser@CONTOSO.COM
Crie o arquivo keytab:
/opt/mssql/bin/mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser
Você será solicitado a reiniciar o serviço SQL Server para adotar a nova configuração do Active Directory, o que poderá ser feito na próxima seção.
Confirme se o keytab foi criado com as entradas corretas:
klist -kte /var/opt/mssql/secrets/mssql.keytab
Você deverá ver uma saída semelhante a este exemplo:
keytab name: FILE:/var/opt/mssql/secrets/mssql.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 4 12/30/2021 14:02:08 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96)
Se o arquivo
/var/opt/mssql/mssql.conf
não pertencer amssql
, você deverá configurar mssql-conf para definir os valores network.kerberoskeytabfile e network.privilegedadaccount de acordo com as etapas anteriores. Digite a senha quando solicitado./opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab /opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser
Valide sua configuração para garantir que a autenticação do Active Directory funcione sem problemas.
/opt/mssql/bin/mssql-conf validate-ad-config /var/opt/mssql/secrets/mssql.keytab
Você deverá ver uma saída semelhante ao seguinte exemplo:
Detected Configuration: Default Realm: CONTOSO.COM Keytab: /var/opt/mssql/secrets/mssql.keytab Reverse DNS Result: sql1.contoso.com SQL Server Port: 1433 Detected SPNs (SPN, KVNO): (MSSQLSvc/sql1.CONTOSO.COM:1433, 4) (MSSQLSvc/sql1.CONTOSO.COM, 4) (MSSQLSvc/sql1:1433, 4) (MSSQLSvc/sql1, 4) Privileged Account (Name, KVNO): (sqluser, 4)
Criar o arquivo keytab do serviço SQL Server manualmente
Se você instalou o adutil e o integrou ao mssql-conf, pule para Criar o arquivo keytab do serviço SQL Server usando mssql-conf.
Crie o arquivo keytab que contém entradas para cada um dos quatro SPNs criados anteriormente, bem como um para o usuário.
adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H sql1.contoso.com --password 'P@ssw0rd' -s MSSQLSvc
As opções de linha de comando possíveis são:
-k
: o caminho no qual o arquivomssql.keytab
foi criado. No exemplo anterior, o diretório/var/opt/mssql/secrets/
já deveria existir no host.-p
: a porta a ser usada para gerar SPNs. Se não for especificado, os SPNs serão gerados sem uma porta.-H
: o nome do host a ser usado para gerar SPNs. Se não for especificado, o FQDN do host local será usado. Nesse caso, o nome do host ésql1
e o FQDN ésql1.contoso.com
.-s
: o nome do serviço a ser usado para gerar SPNs. Para este exemplo, o nome do serviço SQL Server éMSSQLSvc
.--password
: a senha da conta de usuário privilegiada do Active Directory que foi criada anteriormente.-e
ou--enctype
: Tipos de criptografia para a entrada de keytab. Use uma lista de valores separados por vírgulas. Se não for especificado, um prompt interativo será apresentado.
Você pode escolher mais de um tipo de criptografia, desde que o host e o domínio deem suporte ao tipo de criptografia. Neste exemplo, você pode escolher
aes256-cts-hmac-sha1-96
eaes128-cts-hmac-sha1-96
. No entanto, você deve evitararcfour-hmac
em um ambiente de produção porque ele tem criptografia fraca.Se você quiser escolher o tipo de criptografia sem solicitação, poderá especificar sua escolha de tipo de criptografia com o argumento
-e
no comando anterior. Para obter mais ajuda com as opçõesadutil keytab
, execute este comando:adutil keytab createauto --help
Adicione uma entrada no keytab para o nome da entidade de segurança e sua senha que o SQL Server usa para se conectar ao Active Directory:
adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password 'P@ssw0rd'
-k
: caminho em que você deseja criar o arquivomssql.keytab
.-p
: entidade de segurança a ser adicionada ao keytab.
O
adutil keytab [ create | autocreate ]
não substitui os arquivos anteriores; ele apenas será acrescentado ao arquivo se ele já estiver presente.Verifique se o keytab criado pertence ao usuário
mssql
e se somente o usuáriomssql
tem acesso de leitura/gravação ao arquivo. Você pode executar os comandoschown
echmod
da seguinte maneira:chown mssql /var/opt/mssql/secrets/mssql.keytab chmod 440 /var/opt/mssql/secrets/mssql.keytab
Configurar o SQL Server para usar o keytab
Execute os comandos abaixo para configurar o SQL Server para usar o keytab criado na etapa anterior e defina a conta do Active Directory com privilégio como o usuário criado anteriormente. Em nosso exemplo, o nome de usuário é sqluser
.
/opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
/opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser
Reiniciar o SQL Server
Execute o seguinte comando para reiniciar o serviço SQL Server:
sudo systemctl restart mssql-server
Criar logons do SQL Server baseados no Active Directory no Transact-SQL
Conecte-se ao SQL Server e execute os comandos a seguir para criar o logon e confirme se ele existe.
CREATE LOGIN [contoso\privilegeduser] FROM WINDOWS;
SELECT name FROM sys.server_principals;
Conectar-se ao SQL Server usando a autenticação do Active Directory
Para se conectar usando o SSMS ou o Azure Data Studio, faça logon no SQL Server com suas credenciais do Windows.
Você também pode usar uma ferramenta como sqlcmd para se conectar ao SQL Server usando a Autenticação do Windows.
sqlcmd -E -S 'sql1.contoso.com'
Conteúdo relacionado
- Noções básicas sobre a autenticação do Active Directory para SQL Server no Linux e em contêineres
- Solucionar problemas de autenticação do Active Directory para SQL Server no Linux e em contêineres
- Autenticação do Active Directory para o SQL Server no Linux
- Tutorial: Configurar a autenticação do Active Directory com contêineres do SQL Server em Linux
- Girar keytabs para SQL Server no Linux