Partilhar via


Tutorial: Usar adutil para configurar a autenticação do Ative Directory com o SQL Server no Linux

Aplica-se a:SQL Server em Linux

Este tutorial explica como configurar a autenticação do Windows Ative Directory para SQL Server no Linux usando adutil. Para outro método de configuração da autenticação do Ative Directory usando ktpass, consulte Tutorial: Usar a autenticação do Ative Directory com o SQL Server no Linux.

Este tutorial consiste nas seguintes tarefas:

  • Instalar adutil
  • Junte a máquina Linux ao seu domínio do Ative Directory
  • Crie um usuário do Ative Directory para o SQL Server e defina o SPN (Nome da Entidade de Serviço) usando adutil
  • Criar o arquivo keytab de serviço do SQL Server (tabela de chaves)
  • Configurar o SQL Server para usar o arquivo keytab
  • Criar logons do SQL Server baseados no Ative Directory usando o Transact-SQL
  • Conectar-se ao SQL Server usando a autenticação do Ative Directory

Pré-requisitos

Antes de configurar a autenticação do Ative Directory, você precisa:

  • Um Controlador de Domínio do Windows executando os Serviços de Domínio Ative Directory em sua rede.
  • A ferramenta adutil instalada numa máquina anfitriã ligada a um domínio.

Preparação de máquinas de domínio

Verifique se há uma entrada de host de encaminhamento (A) adicionada no Ative Directory para o endereço IP do host Linux. Neste tutorial, o endereço IP da sql1 máquina host é 10.0.0.10. Adicionamos a entrada do anfitrião de encaminhamento no Active Directory no exemplo seguinte. A entrada garante que, quando os usuários se conectam ao sql1.contoso.com, ele atinge o host certo.

Captura de tela de adicionar registro de host.

Para este tutorial, você usa um ambiente no Azure com três máquinas virtuais. Uma máquina virtual (VM) é um computador Windows Server chamado adVM.contoso.com, a funcionar como um controlador de domínio (DC) com o nome de domínio contoso.com. A segunda VM é uma máquina cliente que executa o Windows 10 chamada winbox, que tem o SQL Server Management Studio (SSMS) instalado. A terceira máquina é uma máquina Ubuntu 18.04 LTS chamada sql1, que hospeda o SQL Server.

Junte a máquina host Linux ao seu domínio do Ative Directory

Para ingressar sql1 no domínio do Ative Directory, consulte Associar o SQL Server em um host Linux a um domínio do Ative Directory.

Instalar adutil

Para instalar o adutil, siga as etapas explicadas no artigo Introdução ao adutil - Utilitário Ative Directory na máquina host que você adicionou ao domínio na etapa anterior.

Use adutil para criar um usuário do Ative Directory para o SQL Server e definir o SPN (Nome da Entidade de Serviço)

  1. Obtenha ou renove o Kerberos TGT (tíquete de concessão de tíquetes) usando o comando kinit. Você deve usar uma conta privilegiada para o kinit comando e a máquina host já deve fazer parte do domínio. A conta precisa de permissão para se conectar ao domínio e criar contas e SPNs no domínio.

    Neste script de exemplo, um usuário privilegiado chamado privilegeduser@CONTOSO.COM já está criado no controlador de domínio.

    kinit privilegeduser@CONTOSO.COM
    
  2. Usando adutil, crie o novo usuário para usar como a conta privilegiada do Ative Directory 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 '<password>'
    

    Você pode especificar o nome da conta usando o nome distinto (--distname), como mostrado anteriormente, ou pode usar o nome da Unidade Organizacional (UO). O nome da UO (--ou) tem precedência sobre o nome distinto, caso você especifique ambos. Você pode executar o seguinte comando para obter mais detalhes:

    adutil user create --help
    

    Atenção

    A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

  3. Registre SPNs na entidade de segurança criada anteriormente. Você deve usar o FQDN (nome de domínio totalmente qualificado) da máquina. Neste tutorial, estamos usando a porta padrão do SQL Server, 1433. O 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, desde que haja privilégios suficientes para a kinit conta.
    • -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, e é por isso que o nome do serviço é MSSQLSvc.
    • -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 são gerados sem uma porta. As conexões SQL só funcionam nesse caso quando a instância do SQL Server está escutando a porta padrão, 1433.

Criar o arquivo keytab de serviço do SQL Server usando mssql-conf

Você pode instalar o adutil e integrá-lo ao mssql-conf, para criar e configurar o keytab usando mssql-conf diretamente. Esse método é preferido para criar um arquivo keytab de serviço do SQL Server. Caso contrário, você pode criar o arquivo keytab de serviço do SQL Server manualmente.

Pré-requisitos

  1. Certifique-se de que o mssql usuário é o proprietário do /var/opt/mssql/mssql.conf arquivo, e não root. Caso contrário, você deve executar os comandos mssql-conf usando sudo.

  2. Em um controlador de domínio, nas configurações do Ative Directory para a network.privilegedadaccount conta (nestes exemplos, sqluser@CONTOSO.COM), habilite as seguintes opções na guia Conta , na seção Opções de conta :

    • Esta conta suporta criptografia Kerberos AES de 128 bits
    • Esta conta suporta criptografia Kerberos AES de 256 bits

Criar o arquivo keytab

Depois de criar o usuário e os SPNs, você pode criar o keytab usando as etapas a seguir.

  1. Mude para o oracle utilizador:

    su mssql
    
  2. Entre como usuário do Ative Directory usando o kinit comando:

    kinit privilegeduser@CONTOSO.COM
    
  3. Crie o arquivo keytab:

    /opt/mssql/bin/mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser
    

    Quando solicitado a reiniciar o serviço do SQL Server para adotar a nova configuração do Ative Directory, você pode fazer isso na próxima seção.

  4. Confirme se o keytab foi criado com as entradas certas:

    klist -kte /var/opt/mssql/secrets/mssql.keytab
    

    Você deve 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 /var/opt/mssql/mssql.conf arquivo não pertencer ao mssql, você deverá configurar o mssql-conf para definir os network.kerberoskeytabfile valores 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
    
  5. Valide sua configuração para garantir que a autenticação do Ative Directory funcione sem problemas.

    /opt/mssql/bin/mssql-conf validate-ad-config /var/opt/mssql/secrets/mssql.keytab
    

    Você deve ver uma saída semelhante ao exemplo a seguir:

    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 de serviço do SQL Server manualmente

Se você instalou o adutil e o integrou ao mssql-conf, poderá pular para Criar o arquivo keytab de serviço do SQL Server usando mssql-conf.

  1. Crie o arquivo keytab que contém entradas para cada um dos quatro SPNs criados anteriormente e um para o usuário.

    adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H sql1.contoso.com --password '<password>' -s MSSQLSvc
    

    Atenção

    A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

    As opções de linha de comando possíveis são:

    • -k: O caminho onde o mssql.keytab arquivo é 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 sã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. Neste exemplo, o nome do serviço SQL Server é MSSQLSvc.
    • --password: A senha da conta de usuário privilegiada do Ative Directory que foi criada anteriormente.
    • -e ou --enctype: Tipos de criptografia para a entrada keytab. Use uma lista de valores separados por vírgula. Se não for especificado, um prompt interativo será apresentado.

    Você pode escolher mais de um tipo de criptografia, desde que seu host e domínio suportem o tipo de criptografia. Neste exemplo, você pode escolher aes256-cts-hmac-sha1-96 e aes128-cts-hmac-sha1-96. No entanto, você deve evitar arcfour-hmac em um ambiente de produção porque ele tem criptografia fraca.

    Se quiser escolher o tipo de criptografia sem solicitar, você pode especificar sua escolha de tipo de criptografia usando o -e argumento no comando anterior. Para obter mais ajuda sobre as adutil keytab opções, execute este comando:

    adutil keytab createauto --help
    
  2. Adicione uma entrada no keytab para o nome principal e a senha que o SQL Server usa para se conectar ao Ative Directory:

    adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password '<password>'
    

    Atenção

    A sua palavra-passe deve seguir a política de palavra-passe padrão do SQL Server . Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.

    • -k: Caminho onde pretendes criar o arquivo mssql.keytab.
    • -p: Principal para adicionar ao keytab.

    O adutil keytab [ create | autocreate ] não substitui os arquivos anteriores, apenas acrescenta ao arquivo se já estiver presente.

  3. Certifique-se de que o mssql usuário possui o keytab criado e que apenas o mssql usuário tem acesso de leitura/gravação ao arquivo. Você pode executar os chown comandos e chmod da seguinte maneira:

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

Configurar o SQL Server para utilizar o keytab

Execute os comandos abaixo para configurar o SQL Server para usar o keytab criado na etapa anterior e defina a conta privilegiada do Ative Directory como o usuário criado anteriormente. No nosso exemplo, o nome de utilizador é 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 Ative Directory no Transact-SQL

Conecte-se à instância do SQL Server e execute os seguintes comandos para criar o logon e confirmar 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 Ative Directory

Use as suas credenciais do Windows para se ligar à instância SQL Server usando o SQL Server Management Studio (SSMS).

Você também pode usar uma ferramenta como o utilitário sqlcmd para se conectar à instância do SQL Server usando a Autenticação do Windows.

sqlcmd -E -S 'sql1.contoso.com'