Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Microsoft ODBC Driver para SQL Server no Linux e macOS suporta ligações que utilizam autenticação integrada Kerberos. Suporta o MIT Kerberos Key Distribution Center (KDC) e funciona com as bibliotecas Generic Security Services Application Program Interface (GSSAPI) e Kerberos v5.
A partir da versão 17.6, o driver também suporta autenticação integrada com o Microsoft Entra ID (anteriormente Azure Active Directory) usando uma conta federada, apesar das limitações da biblioteca do sistema. Consulte Utilização do ID Microsoft Entra para mais informações.
Utilização de Autenticação Integrada para Ligar a SQL Server a partir de uma Aplicação ODBC
Pode ativar a autenticação integrada do Kerberos especificando Trusted_Connection=sim na string de ligação do SQLDriverConnect ou SQLConnect. Por exemplo:
Driver='ODBC Driver 18 for SQL Server';Server=your_server;Encrypt=yes;Trusted_Connection=yes
Ao ligar-se a uma DSN, também pode adicionar Trusted_Connection=sim à entrada da DSN em odbc.ini.
A -E opção de sqlcmd e a -T opção de bcp também podem ser usadas para especificar autenticação integrada; veja Ligação com sqlcmd e Ligação com bcp para mais informações.
Certifique-se de que o principal cliente que vai ligar-se ao SQL Server já está autenticado com o KDC Kerberos.
ServerSPN e FailoverPartnerSPN não são suportados.
Implementação de uma aplicação de driver ODBC para Linux ou macOS concebida para funcionar como um serviço
Um administrador de sistemas pode implementar uma aplicação para executar como serviço que utilize Autenticação Kerberos para se ligar ao SQL Server.
Primeiro, precisa de configurar o Kerberos no cliente e depois garantir que a aplicação pode utilizar a credencial de Kerberos do principal predefinido.
Certifique-se de que utiliza kinit ou PAM (Módulo de Autenticação Plugável) para obter e armazenar em cache o TGT do principal usado pela conexão, através de um dos seguintes métodos:
Execute
kinit, passando um nome principal e uma palavra-passe.Execute
kinit, passando um nome principal e a localização de um ficheiro keytab que contém a chave do principal criada porktutil.Certifique-se de que o login no sistema foi feito usando o Kerberos PAM (Módulo de Autenticação Pluggable).
Quando uma aplicação é executada como serviço, porque as credenciais do Kerberos expiram por design, renove as credenciais para garantir a disponibilidade contínua do serviço. O controlador ODBC não renova as credenciais sozinho; garanta que existe uma cron tarefa ou script que seja executado periodicamente para renovar as credenciais antes da sua expiração. Para evitar exigir a palavra-passe em cada renovação, pode usar um ficheiro keytab.
O Kerberos Configuração e Utilização fornece detalhes sobre formas de Kerberizar serviços no Linux.
Rastreio do Acesso a uma Base de Dados
Um administrador de bases de dados pode criar um registo de auditoria do acesso a uma base de dados ao utilizar contas do sistema para aceder ao SQL Server através da Autenticação Integrada.
Iniciar sessão no SQL Server usa a conta do sistema e não existe funcionalidade no Linux para imitar contexto de segurança. Por isso, é necessário mais para determinar o utilizador.
Para auditar atividades no SQL Server em nome de utilizadores que não sejam a conta do sistema, a aplicação deve usar Transact-SQL EXECUTE AS.
Para melhorar o desempenho da aplicação, uma aplicação pode usar pool de conexões com Autenticação Integrada e auditoria. No entanto, a combinação de pooling de ligações, autenticação integrada e auditoria cria um risco de segurança porque o gestor de drivers unixODBC permite que diferentes utilizadores reutilizem ligações agrupadas. Para mais informações, consulte ODBC Connection Pooling.
Antes de reutilizar, uma aplicação deve reiniciar as ligações em pool executando sp_reset_connection.
Utilização do Active Directory para Gerir Identidades de Utilizadores
Um administrador de sistemas de aplicações não tem de gerir conjuntos separados de credenciais de login para o SQL Server. É possível configurar o Active Directory como um centro de distribuição de chaves (KDC) para Autenticação Integrada. Consulte Microsoft Kerberos para mais informações.
Utilização de Servidores Ligados e Consultas Distribuídas
Os programadores podem implementar uma aplicação que utilize um servidor ligado ou consultas distribuídas sem um administrador de base de dados que mantenha conjuntos separados de credenciais SQL. Nesta situação, um programador deve configurar uma aplicação para usar autenticação integrada:
O utilizador inicia sessão numa máquina cliente e autentica-se no servidor de aplicações.
O servidor de aplicações autentica-se como uma base de dados diferente e liga-se ao SQL Server.
O SQL Server autentica-se como utilizador de base de dados noutra base de dados (SQL Server.
Após a autenticação integrada ser configurada, as credenciais serão passadas para o servidor ligado.
Autenticação integrada e sqlcmd
Para aceder ao SQL Server usando autenticação integrada, utilize a -E opção de sqlcmd. Certifique-se de que a conta que executa o sqlcmd está associada ao principal de cliente Kerberos predefinido.
Autenticação Integrada e BCP
Para aceder ao SQL Server usando autenticação integrada, utilize a -T opção de bcp. Certifique-se de que a conta que executa bcp está associada ao principal de cliente Kerberos padrão.
É um erro usar -T com a opção -U ou opção -P.
Sintaxe suportada para um SPN registado pelo SQL Server
A sintaxe que os SPNs usam na cadeia de ligação ou atributos de ligação é a seguinte:
| Sintaxe | Description |
|---|---|
| MSSQLSvc/fqdn:port | O SPN gerado pelo fornecedor, como padrão, quando o TCP é utilizado. porta é um número de porta TCP. FQDN é um nome de domínio totalmente qualificado. |
Autenticação de um Computador Linux ou macOS com Active Directory
Para configurar o Kerberos, introduza os dados no krb5.conf ficheiro.
krb5.conf está em /etc/, mas pode-se referir a outro ficheiro usando a sintaxe, ex. export KRB5_CONFIG=/home/dbapp/etc/krb5.conf. O seguinte é um ficheiro de exemplo krb5.conf:
[libdefaults]
default_realm = YYYY.CORP.CONTOSO.COM
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = yes
[domain_realm]
.yyyy.corp.contoso.com = YYYY.CORP.CONTOSO.COM
.zzzz.corp.contoso.com = ZZZZ.CORP.CONTOSO.COM
Se o seu computador Linux ou macOS estiver configurado para usar o Protocolo de Configuração Dinâmica de Host (DHCP) com um servidor DHCP Windows a fornecer os servidores DNS a utilizar, pode usar dns_lookup_kdc=true. Agora, pode usar o Kerberos para iniciar sessão no seu domínio emitindo o comando kinit alias@YYYY.CORP.CONTOSO.COM. Os parâmetros passados para kinit são sensíveis a maiúsculas e minúsculas, e o computador SQL Server configurado para estar no domínio deve ter esse utilizador alias@YYYY.CORP.CONTOSO.COM adicionado para login. Agora, pode usar ligações de confiança (Trusted_Connection=YES numa cadeia de conexão, bcp -T ou sqlcmd -E).
A hora no computador Linux ou macOS e a hora no Centro de Distribuição de Chaves Kerberos (KDC) devem ser próximas. Certifique-se de que a hora do seu sistema está corretamente definida, por exemplo, utilizando o Protocolo de Tempo de Rede (NTP).
Se a autenticação Kerberos falhar, o driver ODBC no Linux ou macOS não utiliza autenticação NTLM.
Para mais informações sobre autenticação de computadores Linux ou macOS com Active Directory, consulte Autenticar Clientes Linux com Active Directory. Para mais informações sobre a configuração do Kerberos, consulte a Documentação do Kerberos do MIT.