Sécurité des serveurs liés

Au cours d'une connexion à un serveur lié (par exemple, pendant qu'il traite une requête distribuée), le serveur émetteur fournit un nom et un mot de passe de connexion afin de se connecter au serveur récepteur. Pour que cette connexion fonctionne, créez un mappage de connexion entre les serveurs liés en utilisant des procédures stockées système SQL Server.

Des mappages de connexion de serveur lié peuvent être ajoutés en utilisant sp_addlinkedsrvlogin et supprimés à l'aide de sp_droplinkedsrvlogin. Un mappage de connexion de serveur lié établit une connexion et un mot de passe distants pour un serveur lié spécifié ainsi qu'une connexion locale. Lorsque SQL Server se connecte à un serveur lié pour exécuter une requête distribuée ou une procédure stockée, SQL Server recherche tous les mappages de connexion pour la connexion en cours qui exécute la requête ou la procédure. S'il existe un mappage de connexion, SQL Server envoie le mot de passe et la connexion distants correspondants lors de la connexion au serveur lié.

Prenons l'exemple d'un mappage destiné à un serveur lié, S1, créé pour une connexion d'accès local, U1, vers une connexion d'accès distant, U2, en utilisant le mot de passe distant 8r4li034j7$. Lorsque la connexion d'accès local U1 exécute une requête distribuée qui accède à une table stockée sur le serveur S1, U2 et 8r4li034j7$ sont transmis en tant qu'ID d'utilisateur et mot de passe au moment où SQL Server se connecte au serveur lié S1.

Le mappage par défaut d'une configuration de serveurs liés consiste à émuler les informations d'identification de sécurité actuelles de la connexion. Ce type de mappage est qualifié d'auto-mappage. Lors de l'ajout d'un serveur lié à l'aide de sp_addlinkedserver, un auto-mappage par défaut est ajouté pour toutes les connexions locales. Si la délégation de compte de sécurité est disponible et que le serveur lié prend en charge l'authentification Windows, l'auto-mappage pour les connexions Windows authentifiées est pris en charge.

[!REMARQUE]

Utilisez si possible l'authentification Windows.

Si la délégation de compte de sécurité n'est pas disponible sur le client ou le serveur d'envoi, ou que le serveur/fournisseur lié ne reconnaît pas le mode d'authentification Windows, l'auto-mappage ne fonctionne pas pour les connexions qui utilisent l'authentification Windows. Par conséquent, vous devez définir un mappage de connexion locale à partir d'une connexion qui utilise l'authentification Windows avec une connexion spécifique sur le serveur lié qui n'utilise pas l'authentification Windows. Dans ce cas, la connexion distante utilise l'authentification SQL Server si le serveur lié est une instance de SQL Server.

Les requêtes distribuées sont soumises aux autorisations accordées par le serveur lié sur la table distante à la connexion distante. Toutefois, SQL Server n'effectue aucune validation des autorisations au moment de la compilation. Toute violation d'autorisation est détectée au moment de l'exécution de la requête, comme le signale le fournisseur.

[!REMARQUE]

Pour créer les meilleurs plans de requête lorsque vous utilisez une table sur un serveur lié, le processeur de requêtes doit posséder des statistiques de distribution de données du serveur lié. Les utilisateurs avec des autorisations limitées sur les colonnes de la table peuvent ne pas disposer des autorisations suffisantes pour obtenir toutes les statistiques utiles. Ils peuvent de surcroît recevoir un plan de requête moins efficace et bénéficier de performances médiocres. Si le serveur lié est une instance de SQL Server, pour obtenir toutes les statistiques disponibles, l'utilisateur doit posséder la table ou être membre du rôle serveur fixe sysadmin, du rôle de base de données fixe db_owner ou du rôle de base de données fixe db_ddladmin sur le serveur lié.

Test des serveurs liés

Dans l'Explorateur d'objets, cliquez avec le bouton droit sur le serveur lié puis cliquez sur Tester la connexion.