web-dev-qa-db-fra.com

Différence entre un utilisateur et une connexion dans SQL Server

J'ai récemment couru dans de nombreux domaines de SQL Server avec lesquels je ne plaisante pas normalement. L'un d'eux qui m'a confondu est le domaine des connexions et des utilisateurs. On dirait que cela devrait être un sujet assez simple ...

Il apparaît que chaque connexion ne peut avoir qu'un seul utilisateur et que chaque utilisateur ne peut en avoir qu'un.

Une connexion peut être associée à plusieurs tables, associant ainsi cet utilisateur à plusieurs tables.

Donc, ma question est pourquoi même avoir un identifiant et un utilisateur? ils semblent être à peu près un dans le même. Quelles sont les différences ou qu'est-ce qui me manque?

165
corymathews

Un "Login" accorde l'entrée principale dans le SERVEUR.

Un "utilisateur" accorde une entrée de connexion dans une seule base de données.

Un "Login" peut être associé à plusieurs utilisateurs (un par base de données).

Chacun des objets ci-dessus peut avoir des autorisations qui lui sont accordées à son propre niveau. Voir les articles suivants pour une explication de chaque

190
Scott Ivey

Une des raisons pour avoir les deux est que l'authentification puisse être effectuée par le serveur de base de données, mais l'autorisation peut être étendue à la base de données. Ainsi, si vous déplacez votre base de données sur un autre serveur, vous pouvez toujours remapper la relation utilisateur-connexion sur le serveur de base de données, mais votre base de données ne doit pas être modifiée.

31
Tom Resing

Je pense qu’il existe un très bon article de blog MSDN à propos de ce sujet par Laurentiu Cristofor:

La première chose importante à comprendre à propos de la sécurité SQL Server est que deux domaines de sécurité sont impliqués: le serveur et la base de données. Le domaine du serveur englobe plusieurs domaines de la base de données. Tout le travail est effectué dans le contexte d’une base de données, mais pour pouvoir le faire, il faut d’abord avoir accès au serveur, puis à la base de données.

L'accès au serveur est accordé via les connexions. Il existe deux catégories principales de connexions: les connexions authentifiées par SQL Server et les connexions authentifiées par Windows. J'y ferai généralement référence en utilisant les noms abrégés des connexions SQL et Windows. Les connexions authentifiées Windows peuvent être des connexions mappées aux utilisateurs Windows ou des connexions mappées à des groupes Windows. Ainsi, pour pouvoir se connecter au serveur, il faut avoir accès via l’un de ces types ou connexions: les connexions fournissent un accès au domaine du serveur.

Mais les connexions ne suffisent pas, car le travail est généralement effectué dans une base de données et les bases de données sont des domaines distincts. L'accès aux bases de données est accordé via les utilisateurs.

Les utilisateurs sont mappés aux connexions et le mappage est exprimé par la propriété SID des connexions et des utilisateurs. Une connexion se connecte à un utilisateur dans une base de données si leurs valeurs SID sont identiques. En fonction du type de login, nous pouvons donc avoir une catégorisation des utilisateurs qui imite la catégorisation ci-dessus pour les logins; nous avons donc des utilisateurs SQL et des utilisateurs Windows, et cette dernière catégorie comprend les utilisateurs mappés vers les connexions utilisateur Windows et les utilisateurs mappés sur les connexions de groupe Windows.

Revenons un peu en arrière pour un aperçu rapide: un login vous permet d’accéder au serveur et d’obtenir un accès ultérieur à une base de données, un utilisateur associé à la connexion doit exister dans la base de données.

c'est le lien vers le post complet.

23
David Leitner

En bref,

Connexions aura l'accès du serveur.

et

tilisateurs aura accès à la base de données.

21
Vikrant Kedari

Je pense que c'est une question très utile avec une bonne réponse. Juste pour ajouter mes deux cents de la MSDN Créer une connexion page:

Une connexion est une entité de sécurité ou une entité pouvant être authentifiée par un système sécurisé. Les utilisateurs ont besoin d'une connexion pour se connecter à SQL Server. Vous pouvez créer une connexion basée sur un principal Windows (tel qu'un utilisateur de domaine ou un groupe de domaine Windows) ou créer une connexion qui n'est pas basée sur un principal Windows (telle qu'une connexion SQL Server).

Remarque:
Pour utiliser l'authentification SQL Server, le moteur de base de données doit utiliser une authentification en mode mixte. Pour plus d'informations, voir Choisir un mode d'authentification.

En tant que principal de sécurité, des autorisations peuvent être accordées aux connexions. La portée d'une connexion est l'ensemble du moteur de base de données. Pour vous connecter à une base de données spécifique sur l'instance de SQL Server, une connexion doit être mappée à un utilisateur de base de données. Les autorisations à l'intérieur de la base de données sont accordées et refusées à l'utilisateur de la base de données, pas à la connexion. Les autorisations qui ont la portée de toute l'instance de SQL Server (par exemple, l'autorisation CREATE ENDPOINT) peuvent être accordées à une connexion.

6
ilmatte