Cela semble être une question stupide, mais malgré certaines recherches, je n'ai pas pu trouver d'informations à ce sujet uniquement (peut-être en raison de l'utilisation d'une mauvaise terminologie).
Est-il possible de connecter plusieurs connexions serveur (authentification du serveur SQL) à un seul utilisateur de base de données (qui dispose d'autorisations attribuées en étant membre d'un rôle de base de données)?
J'ai des dizaines de connexions SQL (authentification de serveur SQL) qui doivent lire un paramètre d'une base de données centrale et je préfère mapper toutes ces connexions à un seul utilisateur DB dans la base de données cible plutôt que de créer un propre utilisateur DB pour chaque connexion.
Si oui, quelle serait la syntaxe T-SQL correcte?
la source
ROLE
, puis d'ajouter des utilisateurs au rôle. De cette façon, vous accordez simplement des autorisations au rôle. Cela vous aidera à mieux gérer la sécurité. De plus, quelle est la version du serveur SQL - 2008R2, 2012?Réponses:
D'abord pour s'assurer de la terminologie. Une connexion est un principal de sécurité au niveau de l'instance (
sys.server_principals
) et un utilisateur est un principal de sécurité au niveau de la base de données (sys.database_principals
). Ils sont réunis par un SID (identifiant de sécurité). Si vous regardez dans les vues système ci-dessus, vous pouvez voir comment elles sont réunies dans un format 1: 1 par SID. C'est 1 connexion à 1 utilisateur dans une base de données. Une connexion peut avoir plusieurs utilisateurs, mais ils doivent se trouver dans différentes bases de données.Vous devrez donc créer un utilisateur dans votre base de données pour chaque connexion à laquelle vous souhaitez y accéder. C'est une commande assez simple.
De là, vous pouvez mettre tous vos utilisateurs dans un seul (ou plusieurs) rôle. Un rôle est un conteneur qui dispose d'autorisations et partage ces autorisations avec chaque utilisateur (pour les rôles de base de données) ou connexion (pour les rôles d'instance). Il existe un rôle de base de données intégré appelé
db_datareader
qui donne un accès en lecture à chaque table et vue de la base de données. Vous pouvez ajouter tous vos utilisateurs à ce rôle. Cependant, une meilleure idée serait de créer un nouveau rôle et de l'ajouter audb_datareader
rôle. Ajoutez ensuite tous vos utilisateurs au nouveau rôle. L'avantage ici est que si vous souhaitez ajouter des autorisations supplémentaires au groupe, vous pouvez simplement modifier les autorisations sur le rôle.Créez le rôle en:
Ajouter un utilisateur à un rôle (ou un rôle à un autre)
ou si vous êtes en 2012 ou plus
la source
That's 1 Login to 1 User in a database
.