-- Interroger les permissions d’objet de l’utilisateur
exécutif sp_helprotect NULL, 'UserName'
-- Interroger le rôle de l’utilisateur
exec sp_helpuser 'UserName'
-- Interroger quels utilisateurs ont un rôle système spécifié
exécutif sp_helpsrvrolemember « sysadmin »
-- Les rôles imbriqués peuvent être interrogés
AVEC tree_roles
(
SÉLECTIONNEZ role_principal_id, member_principal_id
DE sys.database_role_members
OÙ member_principal_id = USER_ID(« Nom d’utilisateur »)
UNION ALL
SÉLECTIONNEZ c.role_principal_id c.member_principal_id
DE sys.database_role_members EN C
jonction interne tree_roles
sur tree_roles.member_principal_id = c.role_principal_id
)
SELECT distinct USER_NAME(role_principal_id) Nom du rôle
DE tree_roles
-- Tableau de base lié aux autres autorisations
Select * à partir des sysusers
Select * depuis syspermissions
-- Qui a accès à mon instance SQL Server ?
CHOISIR
nom comme UserName, type_desc comme UserType is_disabled comme IsDisabled
DE sys.server_principals
où type_desc dans ('WINDOWS_LOGIN', 'SQL_LOGIN')
ordre par type d’utilisateur, nom, IsDisabled
-- Qui a accès à mes bases de données ?
CHOISIR
dp.name comme UserName, dp.type_desc comme UserType, sp.name comme LoginName sp.type_desc comme LoginType
DE sys.database_principals DP
JOINDRE sys.server_principals SP SUR dp.principal_id = sp.principal_id
ordre par UserType
sélectionner * depuis sys.database_principals
-- Rôles de serveur
choisir
p.name comme Nom d’Utilisateur, p.type_desc comme Type d’Utilisateur, pp.name comme NomDerôleServeur, pp.type_desc comme RôleServeurType
De sys.server_role_members rôles
rejoindre sys.server_principals p sur roles.member_principal_id = p.principal_id
rejoindre sys.server_principals pp sur roles.role_principal_id = pp.principal_id
où pp.name dans ('sysadmin')
ordre par NomrôleServeur, Nom d’utilisateur
-- Rôles dans les bases de données
CHOISIR
p.name comme UserName, p.type_desc comme UserType, pp.name comme DBRoleName, pp.type_desc comme DBRoleType pp.is_fixed_role comme IfFixedRole
DE sys.database_role_members rôles
JOIN sys.database_principals p ON roles.member_principal_id = p.principal_id
JOIN sys.database_principals pp ON roles.role_principal_id = pp.principal_id
où pp.name dans ('db_owner', 'db_datawriter')
-- Que peuvent faire ces utilisateurs ?
CHOISIR
grantor.name en tant que GrantName, dp.state_desc en StateDesc, dp.class_desc en ClassDesc, dp.permission_name en PermissionName ,
OBJECT_NAME(major_id) en tant qu’ObjectName, GranteName = grantee.name
DE sys.database_permissions DP
REJOIGNEZ sys.database_principals bénéficiaire sur dp.grantee_principal_id = grantee.principal_id
REJOIGNEZ sys.database_principals donateur sur dp.grantor_principal_id = grantor.principal_id
où permission_name comme ' %UPDATE %'