web-dev-qa-db-fra.com

Comment attribuer un accès de sécurité à un groupe Active Directory complet dans SQL Server 2008?

Je souhaite utiliser la sécurité intégrée avec mon application interne qui est entièrement sur un domaine. Malheureusement, je n'ai jamais réussi à faire fonctionner cela correctement. Je voudrais attribuer à un groupe Exchange (Active Directory) entier un rôle dans SQL Server pour l'accès en lecture/écriture à certaines tables. De cette façon, je n'aurais pas à créer un opérateur à chaque embauche ou à supprimer un opérateur à chaque licenciement. Est-ce possible? Quelles mesures devrais-je prendre pour ce faire?

40
  • Définissez le groupe AD comme identifiant. Et "connexion" signifie une connexion au niveau du serveur et non le concept AD d'utilisateur/connexion. Dans SQL Server, il s'agit d'un principal au niveau du serveur
  • Créez un utilisateur mappé dans. Vous ne devez pas vraiment autoriser un utilisateur directement sur les tables. Et "utilisateur" signifie utilisateur de base de données et non le concept AD de l'utilisateur: dans SQL Server, il s'agit d'un "principal au niveau de la base de données"
  • Ajouter un utilisateur au rôle (également un "principal au niveau de la base de données")
  • Accordez des autorisations aux rôles sur les tables (une table ou un proc, etc. est un "sécurisable")

Exemple de script

USE master;
GO
CREATE LOGIN [MYDOMAIN\APPLICATION SUPPORT] FROM WINDOWS;
GO
USE mydb;
GO
CREATE USER [MYDOMAIN\APPLICATION SUPPORT] FROM LOGIN [MYDOMAIN\APPLICATION SUPPORT];
GO
CREATE ROLE rSupport;
GO
EXEC sp_addrolemember 'rSupport', 'MYDOMAIN\APPLICATION SUPPORT';
GO
GRANT SELECT, INSERT,UPDATE, etc ON Mytable TO rSupport;
GO

sp_addrolemember est déconseillé à partir de SQL Server 2012, où ALTER ROLE doit être utilisé à la place.

50
gbn

De marc_s réponse "Comment ajouter un groupe d'utilisateurs Active Directory en tant que connexion dans SQL Server" :

Dans SQL Server Management Studio, accédez à Object Explorer > (your server) > Security > Logins et cliquez avec le bouton droit sur New Login:

enter image description here

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

enter image description here

Vous disposez désormais d'une connexion SQL Server standard, tout 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.

5
Even Mien

L'octroi des autorisations dans SQL Server à un groupe AD est relativement simple. Cela peut être fait via T-SQL ou Management Studio.

Par exemple, si vous avez un groupe AD appelé MYDOMAIN\APPLICATION SUPPORT, vous devez créer la connexion au niveau du serveur, puis utiliser des mappages vers des bases de données individuelles pour accorder des autorisations légèrement plus précises, comme un lecteur de données.

Idéalement, tous les accès aux applications doivent se faire par le biais de procédures stockées *, de sorte que seules les autorisations sur ces procédures stockées dans cette base de données sont requises.

* Du point de vue de la sécurité, pour permettre à un utilisateur particulier de voir des données spécifiques, vous pouvez créer une procédure et accorder à l'utilisateur exécuter l'autorisation sur cette procédure, et rien d'autre. Permettre à l'utilisateur d'interroger directement signifierait donner sélectionner l'autorisation sur toutes les tables impliquées. Il est également plus facile de travailler avec des procédures et de déboguer.

Les procédures stockées résument l'accès à la table et limitent l'accès. Pour les types DBA, c'est comme "laissez-moi voir toutes vos variables d'instance: je ne veux pas utiliser de méthodes, de getters ou de setters".

4
Peter Schofield

Si l'utilisateur est membre d'un DOMAIN\SecurityGroup disposant des droits Sysadmin en SQL, celui-ci sera utilisé lors de l'accès aux bases de données. Sinon, vous devez regarder quels DOMAIN\SecurityGroup (s) ont donné l'autorité dans chaque base de données. Si l'utilisateur est membre de 2 groupes de sécurité, SecGroupA ayant l'autorité de sélection et SecGroupB ayant l'autorité d'insertion, l'utilisateur peut sélectionner et insérer.

1
Piyush Agrawal