Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
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)
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 okinitcomando 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.COMjá está criado no controlador de domínio.kinit privilegeduser@CONTOSO.COMUsando 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 --helpAtençã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.
- Usando o sinalizador de senha:
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-
addautocria os SPNs automaticamente, desde que haja privilégios suficientes para akinitconta. -
-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 ésql1e 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
Certifique-se de que o
mssqlusuário é o proprietário do/var/opt/mssql/mssql.confarquivo, e nãoroot. Caso contrário, você deve executar os comandos mssql-conf usandosudo.Em um controlador de domínio, nas configurações do Ative Directory para a
network.privilegedadaccountconta (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.
Mude para o
oracleutilizador:su mssqlEntre como usuário do Ative Directory usando o
kinitcomando:kinit privilegeduser@CONTOSO.COMCrie o arquivo keytab:
/opt/mssql/bin/mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluserQuando 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.
Confirme se o keytab foi criado com as entradas certas:
klist -kte /var/opt/mssql/secrets/mssql.keytabVocê 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.confarquivo não pertencer aomssql, você deverá configurar o mssql-conf para definir osnetwork.kerberoskeytabfilevalores enetwork.privilegedadaccountde 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 sqluserValide 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.keytabVocê 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.
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 MSSQLSvcAtençã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 omssql.keytabarquivo é 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 ésql1e 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. -
-eou--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-96eaes128-cts-hmac-sha1-96. No entanto, você deve evitararcfour-hmacem 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
-eargumento no comando anterior. Para obter mais ajuda sobre asadutil keytabopções, execute este comando:adutil keytab createauto --help-
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 arquivomssql.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.-
Certifique-se de que o
mssqlusuário possui o keytab criado e que apenas omssqlusuário tem acesso de leitura/gravação ao arquivo. Você pode executar oschowncomandos echmodda 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'
Conteúdo relacionado
- Compreender a autenticação do Ative Directory para SQL Server no Linux e contêineres
- Solucionar problemas de autenticação do Ative Directory para SQL Server no Linux e contêineres
- autenticação do Active Directory para SQL Server no Linux
- Tutorial: Configurar a autenticação do Ative Directory com o SQL Server em contêineres Linux
- Girar keytabs para SQL Server no Linux