Comment ajouter un groupe d'utilisateurs Active Directory en tant que connexion dans SQL Server

108

J'ai une application .net qui se connecte au serveur SQL en utilisant l'authentification Windows.

Nous ne pouvons pas utiliser l'authentification SQL Server dans l'application. Nous avons de nombreux utilisateurs Active Directory pour notre projet. Nous devons donc créer un compte de connexion distinct pour chaque utilisateur Active Directory dans SQL Server plutôt que de créer un compte de connexion distinct pour chaque utilisateur AD, existe-t-il un moyen d'utiliser le groupe d'utilisateurs Active Directory dans SQL Server?

Jibu P C_Adoor
la source

Réponses:

162

Dans SQL Server Management Studio, accédez à Object Explorer > (your server) > Security > Loginset cliquez avec le bouton droit de la souris New Login:

entrez la description de l'image ici

Ensuite, dans la boîte de dialogue qui apparaît, choisissez les types d'objets que vous souhaitez voir ( Groupsest désactivé par défaut - cochez-le!) Et choisissez l'emplacement où vous souhaitez rechercher vos objets (par exemple, utilisez Entire Directory), puis trouvez votre groupe AD .

entrez la description de l'image ici

Vous disposez désormais d'une connexion SQL Server standard, comme lorsque vous en créez une pour un seul utilisateur AD. Donnez à cette nouvelle connexion les autorisations sur les bases de données dont elle a besoin, et c'est parti!

Tout membre de ce groupe AD peut désormais se connecter à SQL Server et utiliser votre base de données.

marc_s
la source
Y a-t-il une chance de créer des groupes dans mysql comme ci-dessus?
uzay95
2
Merci pour une réponse très claire avec des captures d'écran annotées! Je souhaite que toutes les réponses soient comme ça ...
NickG
1
@NickG: J'ai utilisé le Paint.NET gratuit pour charger l'image et insérer les rectangles rouges arrondis
marc_s
7
Cela ne fonctionne pas pour moi. J'ai un groupe Windows "DataAccess", dont "UserX" est membre. J'ai créé une connexion pour le groupe DataAccess et défini le mappage utilisateur de la connexion pour avoir un accès public, datareader et datawriter sur une base de données. L'utilisateur ne peut pas se connecter. Si j'ajoute l'utilisateur spécifiquement et que j'attribue exactement la même autorisation de mappage, il peut se connecter. Lorsque je clique sur Sécurisables> Autorisations effectives pour le groupe, le message "Impossible d'exécuter en tant que principal du serveur car le principal 'GroupName' ne se ferme pas, ce type de principal ne peut pas être emprunté ou vous n'avez pas l'autorisation. "
Triynko
1
@Tim: le nom de l'utilisateur - c'est toujours l'utilisateur qui se connecte - il n'est tout simplement pas autorisé directement - en tant qu'utilisateur - mais en étant membre de ce groupe qui a des autorisations
marc_s
21

Vous pouvez utiliser T-SQL:

use master
GO
CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO
CREATE LOGIN [NT AUTHORITY\NETWORKSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName

J'utilise ceci dans le cadre de la restauration du serveur de production vers la machine de test:

USE master
GO
ALTER DATABASE yourDbName SET OFFLINE WITH ROLLBACK IMMEDIATE
RESTORE DATABASE yourDbName FROM DISK = 'd:\DropBox\backup\myDB.bak'
ALTER DATABASE yourDbName SET ONLINE
GO
CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO
CREATE LOGIN [NT AUTHORITY\NETWORKSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO

Vous devrez utiliser le nom localisé des services dans le cas de Windows allemand ou français, voir Comment créer une connexion SQL Server pour un compte de service sur un Windows non anglais?

Tomas Kubes
la source
Au cas où vous auriez également besoin de définir le login / principal au niveau de la base de données, voici une autre réponse que j'ai trouvée utile dba.stackexchange.com/a/2578/60876
Agostino
Je me demande si cela peut être utilisé pour accorder à un certain groupe Active Directory un accès en lecture à un certain schéma - dans pseudo sql CREATE LOGIN ... WITH DEFAULT_SCHEMAles points ... doivent référencer un certain groupe d'annonces. Nous avons plusieurs groupes et aimerions donner à un groupe Active Directory l' accountantsaccès au schéma «A» mais pas aux schémas «B» et «C». De même, le groupe «facturation» ne doit avoir accès qu'au schéma «B». En tant qu'interface, nous utilisons l'accès msft.
surfmuggle
0

Accédez à SQL Server Management Studio, accédez à Sécurité, accédez à Connexions et cliquez dessus avec le bouton droit. Un menu apparaîtra avec un bouton disant "Nouvelle connexion". Vous pourrez y ajouter des utilisateurs et / ou des groupes d'Active Directory à vos "autorisations" SQL Server. J'espère que cela t'aides


la source
0

Voici mon observation. J'ai créé une connexion (en lecture seule) pour un compte d'utilisateur de groupe Windows (AD) mais, elle agit de manière provocante dans différents serveurs SQL. Dans les serveurs SQl que les utilisateurs ne peuvent pas voir les bases de données, j'ai ajouté une définition de vue vérifiée et j'ai également donné une perméation d'exécution de base de données à la base de données principale pour éviter l'erreur 229. Je n'ai pas ce problème si je crée une connexion pour un utilisateur.

BDEZ
la source
Cela aurait pu être commenté plutôt que d'utiliser une réponse. Mais vous ne pouvez pas encore commenter. Alors ne haha ​​^^
finnmglas