web-dev-qa-db-fra.com

Vérifier les utilisateurs d'un groupe de sécurité dans SQL Server

Dans le dossier Sécurité/Utilisateurs de ma base de données, j'ai plusieurs groupes de sécurité, dont "Utilisateurs de mon application". Je dois vérifier si je fais partie de ce groupe (ou d'un autre utilisateur), mais je ne sais pas comment le rechercher ni où je pourrais voir cette information. J'ai essayé de chercher dans les propriétés, mais je n'ai rien trouvé. Des idées?

10
Anna

Vérifier vous-même ou l'utilisateur actuel:

SELECT IS_MEMBER('[group or role]')

Un résultat de 1 = oui, 0 = non et null = le groupe ou le rôle interrogé n'est pas valide.

Pour obtenir la liste des utilisateurs, essayez xp_logininfo si les procédures étendues sont activées et si le groupe en question est un groupe Windows:

EXEC master..xp_logininfo 
@acctname = '[group]',
@option = 'members'
13
DeanG

Pour une vue rapide de quels groupes/rôles l'utilisateur actuel est membre;

select
      [principal_id]
    , [name]
    , [type_desc]
    , is_member(name) as [is_member]
from [sys].[database_principals]
where [type] in ('R','G')
order by [is_member] desc,[type],[name]
5
Edward Comeau

Réponse acceptée de DeanG est la solution privilégiée pour obtenir ces informations dans SQL Server


Vous pouvez utiliser les outils Active Directory pour cela. J'aime Utilisateurs et ordinateurs Active Directory qui fait partie des Outils d'administration de serveur distant . Suivez le lien pour télécharger et installer les outils sous Windows 7.

Une fois installé, vous pouvez rechercher un nom de groupe spécifique:

Search

Ensuite, vous pouvez voir l'appartenance à un groupe en utilisant l'onglet Membres:

Members

Si vous ne souhaitez pas utiliser le navigateur AD fourni avec les outils RSA, plusieurs autres sont disponibles.

3
Bryan

Vous pas.

A la place, vous utilisez les utilisateurs et les groupes pour octroyer/refuser des privilèges et laisser le moteur les appliquer correctement. Tenter de faire votre propre sécurité ne vous mènera nulle part rapidement. Un exemple banal est celui où vous ne respecterez pas la règle du «un refus l'emporte sur tous les octrois». Et vous ne pourrez pas naviguer dans les subtilités de EXECUTE AS. Sans parler de la sécurité basée sur les signatures de modules.

Pour l'enregistrement: les utilisateurs, les rôles et les groupes sont exposés dans la vue sys.database_principals catalogue. sys.fn_my_permissions renverra les autorisations de contexte actuelles sur un objet sécurisable spécifique.

2
Remus Rusanu

Pour trouver les membres du groupe AD dans l'instance, nous pouvons utiliser la requête ci-dessous:

xp_logininfo 'DomainName\AD_GroupName', 'members'

En utilisant cette requête, nous pouvons trouver les états ci-dessous.

account name, type, privilege, mapped login name, permission path
0
Saranya Kumaran