Utilisation de l’authentification intégrée
Microsoft ODBC Driver for SQL Server sur Linux et macOS prend en charge les connexions qui utilisent l’authentification intégrée Kerberos. Il prend en charge le centre de distribution de clés (KDC) MIT Kerberos et fonctionne avec l’interface GSSAPI (Generic Security Services Application Program Interface) et les bibliothèques Kerberos v5.
Depuis la version 17.6, le pilote prend également en charge l’authentification intégrée avec Microsoft Entra ID (anciennement Azure Active Directory) à l’aide d’un compte fédéré, nonobstant les limitations de la bibliothèque système. Pour plus d’informations, consultez Utilisation de Microsoft Entra ID.
Utilisation de l’authentification intégrée pour se connecter à SQL Server à partir d’une application ODBC
Vous pouvez activer l’authentification intégrée Kerberos en spécifiant Trusted_Connection=yes dans la chaîne de connexion SQLDriverConnect ou SQLConnect. Par exemple :
Driver='ODBC Driver 18 for SQL Server';Server=your_server;Encrypt=yes;Trusted_Connection=yes
Quand vous vous connectez avec un nom de source de données, vous pouvez également ajouter Trusted_Connection=yes à l’entrée de ce dernier dans odbc.ini
.
Vous pouvez également utiliser l’option -E
de sqlcmd
et l’option -T
de bcp
pour spécifier l’authentification intégrée ; pour plus d’informations, consultez Connexion avec sqlcmd et Connexion avec bcp.
Vérifiez que le principal de client qui va se connecter à SQL Server est déjà authentifié auprès du centre KDC Kerberos.
ServerSPN et FailoverPartnerSPN ne sont pas pris en charge.
Déploiement d’une application de pilote ODBC Linux ou macOS conçue pour s’exécuter en tant que service
Un administrateur système peut déployer une application pour qu’elle s’exécute en tant que service qui utilise l’authentification Kerberos pour se connecter à SQL Server.
Vous devez d’abord configurer Kerberos sur le client, puis vous assurer que l’application peut utiliser les informations d’identification Kerberos du principal par défaut.
Vérifiez que vous utilisez kinit
ou PAM (Pluggable Authentication Module) pour obtenir et mettre en cache le ticket TGT pour le principal utilisé par la connexion avec l’une des méthodes suivantes :
Exécutez
kinit
, en passant un nom et un mot de passe de principal.Exécutez
kinit
, en passant un nom de principal et l’emplacement du fichier keytab contenant la clé du principal créée parktutil
.Vérifiez que la connexion au système a été effectuée à l’aide du module PAM Kerberos.
Quand une application s’exécute en tant que service, comme les informations d’identification Kerberos expirent de par leur conception, vous devez renouveler les informations d’identification pour garantir une disponibilité continue du service. Le pilote ODBC ne renouvelle pas les informations d’identification lui-même ; vérifiez qu’un script ou une tâche cron
s’exécute régulièrement pour renouveler les informations d’identification avant leur expiration. Pour éviter d’exiger le mot de passe à chaque renouvellement, vous pouvez utiliser un fichier keytab.
L’articleKerberos Configuration and Use fournit des détails sur l’implémentation de Kerberos pour les services sur Linux.
Suivi de l’accès à une base de données
Un administrateur de base de données peut créer une piste d’audit de l’accès à une base de données lors de l’utilisation des comptes système pour accéder à SQL Server à l’aide de l’authentification intégrée.
La connexion à SQL Server utilise le compte système et il n’existe aucune fonctionnalité sur Linux pour emprunter l’identité du contexte de sécurité. Ainsi, des opérations supplémentaires sont nécessaires pour déterminer l’utilisateur.
Afin d’auditer les activités dans SQL Server pour les utilisateurs autres que le compte système, l’application doit utiliser Transact-SQL EXECUTE AS.
Pour améliorer ses performances, une application peut utiliser le regroupement de connexions avec l’authentification intégrée et l’audit. Toutefois, le fait de combiner le regroupement de connexions, l’authentification intégrée et l’audit crée un risque de sécurité, car le Gestionnaire de pilotes unixODBC permet à différents utilisateurs de réutiliser les connexions regroupées. Pour plus d’informations, consultez ODBC Connection Pooling.
Avant d’être réutilisée, une application doit réinitialiser les connexions regroupées en exécutant sp_reset_connection
.
Utilisation d’Active Directory pour gérer les identités des utilisateurs
Un administrateur système d’application n’a pas besoin de gérer des ensembles distincts d’informations d’identification de connexion pour SQL Server. Il est possible de configurer Active Directory comme Centre de distribution de clés pour l’authentification intégrée. Pour plus d’informations, consultez Microsoft Kerberos.
Utilisation de serveur lié et de requêtes distribuées
Les développeurs peuvent déployer une application qui utilise un serveur lié ou des requêtes distribuées sans qu’un administrateur de base de données ait à tenir à jour des ensembles distincts d’informations d’identification SQL. Dans ce cas, un développeur doit configurer une application pour qu’elle utilise l’authentification intégrée :
L’utilisateur se connecte à un ordinateur client et s’authentifie auprès du serveur d’applications.
Le serveur d’applications s’authentifie en tant qu’autre base de données et se connecte à SQL Server.
SQL Server s’authentifie en tant qu’utilisateur de base de données pour une autre base de données (SQL Server).
Une fois l’authentification intégrée configurée, les informations d’identification sont transmises au serveur lié.
Authentification intégrée et sqlcmd
Pour accéder à SQL Server à l’aide de l’authentification intégrée, utilisez l’option -E
de sqlcmd
. Assurez-vous que le compte qui exécute sqlcmd
est associé au principal de client Kerberos par défaut.
Authentification intégrée et bcp
Pour accéder à SQL Server à l’aide de l’authentification intégrée, utilisez l’option -T
de bcp
. Assurez-vous que le compte qui exécute bcp
est associé au principal de client Kerberos par défaut.
L’utilisation de -T
avec l’option -U
ou -P
constitue une erreur.
Syntaxe prise en charge pour un SPN inscrit par SQL Server
La syntaxe que les noms de principal du service utilisent dans la chaîne de connexion ou les attributs de connexion est la suivante :
Syntaxe | Description |
---|---|
MSSQLSvc/fqdn:port | Nom principal de service par défaut, généré par le fournisseur, lorsque le protocole TCP est utilisé. port est un numéro de port TCP. fqdn est un nom de domaine complet. |
Authentification d’un ordinateur Linux ou macOS avec Active Directory
Pour configurer Kerberos, entrez des données dans le fichier krb5.conf
. krb5.conf
se trouve dans /etc/
, mais vous pouvez faire référence à un autre fichier, par exemple à l’aide de la syntaxe export KRB5_CONFIG=/home/dbapp/etc/krb5.conf
. Voici un exemple de fichier 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
Si votre ordinateur Linux ou macOS est configuré pour utiliser le protocole DHCP (Dynamic Host Configuration Protocol) avec un serveur DHCP Windows fournissant les serveurs DNS à utiliser, vous pouvez faire appel à dns_lookup_kdc=true. À présent, vous pouvez utiliser Kerberos pour vous connecter à votre domaine en exécutant la commande kinit alias@YYYY.CORP.CONTOSO.COM
. Les paramètres passés à kinit
sont sensibles à la casse, et vous devez ajouter alias@YYYY.CORP.CONTOSO.COM
à l’ordinateur SQL Server configuré pour être dans le domaine pour la connexion. À présent, vous pouvez utiliser des connexions approuvées (Trusted_Connection=YES dans une chaîne de connexion, bcp -T ou sqlcmd -E).
L’heure sur l’ordinateur Linux ou macOS et l’heure sur le centre de distribution de clés Kerberos (KDC) doivent être proches. Vérifiez que l’heure système est correctement définie, par exemple en utilisant le protocole NTP (Network Time Protocol).
Si l’authentification Kerberos échoue, le pilote ODBC sur Linux ou macOS n’utilise pas l’authentification NTLM.
Pour plus d’informations sur l’authentification de vos ordinateurs Linux ou macOS avec Active Directory, consultez Authentifier les clients de Linux à Active Directory. Pour plus d’informations sur la configuration de Kerberos, consultez la documentation MIT Kerberos.