J'ai cherché partout et je n'ai pas trouvé de réponse concluante à cette question.
J'ai besoin d'un script qui peut donner TOUTES les autorisations pour un rôle associé.
Des pensées, ou est-ce même possible?
Cela me rapproche - mais je n'arrive pas à le retourner et à donner le résumé des rôles plutôt que des utilisateurs.
WITH perms_cte as
(
select USER_NAME(p.grantee_principal_id) AS principal_name,
dp.principal_id,
dp.type_desc AS principal_type_desc,
p.class_desc,
OBJECT_NAME(p.major_id) AS object_name,
p.permission_name,
p.state_desc AS permission_state_desc
from sys.database_permissions p
inner JOIN sys.database_principals dp
on p.grantee_principal_id = dp.principal_id
)
--role members
SELECT rm.member_principal_name, rm.principal_type_desc, p.class_desc,
p.object_name, p.permission_name, p.permission_state_desc,rm.role_name
FROM perms_cte p
right outer JOIN (
select role_principal_id, dp.type_desc as principal_type_desc,
member_principal_id,user_name(member_principal_id) as member_principal_name,
user_name(role_principal_id) as role_name--,*
from sys.database_role_members rm
INNER JOIN sys.database_principals dp
ON rm.member_principal_id = dp.principal_id
) rm
ON rm.role_principal_id = p.principal_id
order by 1
sql-server
sql-server-2008-r2
elgabito
la source
la source
Je ne trouve pas la référence, mais voici un script très descriptif (je l'ai dans mon référentiel depuis des années - très utile pour l'audit):
la source
Je pense que cela devrait le faire, remplacez 'blah' par votre nom de rôle ou un utilisateur de base de données (notez que les rôles intégrés ne s'affichent pas comme ayant des autorisations):
la source
Juste pour ajouter à la liste, j'ai quelques SP sp_dbpermissions et sp_srvpermissions qui peuvent être utilisés pour renvoyer le même type d'informations.
Tu peux courir
Et obtenez ceci
(Vous ne pouvez pas le voir, mais le script d'octroi est à droite sur le troisième ensemble de données et déposez / créez des scripts à droite sur le premier ensemble de données.)
la source
Ceci est mon effort. J'ai un script plus long qui parcourt également toutes les bases de données, faites-moi savoir si cela est plus utile:
la source
juste pour ajouter à la réponse acceptée , un rôle peut parfois appartenir à un autre rôle.
la source
Depuis que cela est remonté via le bot communautaire, je vais jeter mon script dans le chapeau car il est assez exhaustif et je n'ai rien trouvé qui ne soit pas identifié. Le bonus est que la sortie est bien formatée et permet également des rôles de base de données assez étendus:
la source