-- Запит на дозволи об'єкта користувача
exec sp_helprotect NULL, 'Ім'я користувача'
-- Запит до ролі користувача
exec sp_helpuser 'UserName'
-- Запит, які користувачі мають вказану системну роль
exec sp_helpsrvrolemember 'sysadmin'
-- Вкладені ролі можна запитувати
З tree_roles як
(
ВИБЕРІТЬ role_principal_id, member_principal_id
Від sys.database_role_members
ДЕ member_principal_id = USER_ID('Ім'я користувача')
UNION ALL
ВИБЕРІТЬ c.role_principal_id,c.member_principal_id
ВІД sys.database_role_members як c
внутрішній приєднуйся tree_roles
на tree_roles.member_principal_id = c.role_principal_id
)
SELECT distinct USER_NAME(role_principal_id) RoleName
З tree_roles
-- Базова таблиця, пов'язана з іншими правами доступу
вибрати * від системних користувачів
вибрати * з syspermissions
-- Хто має доступ до мого екземпляра SQL Server?
ВИБЕРІТЬ
ім'я як Ім'я користувача, type_desc як UserType, is_disabled як IsDisabled
Від sys.server_principals
де type_desc у ('WINDOWS_LOGIN', 'SQL_LOGIN')
порядок за типом користувача, ім'ям, IsDisabled
-- Хто має доступ до моїх баз даних?
ВИБЕРІТЬ
dp.name як ім'я користувача, dp.type_desc як UserType, sp.name як LoginName, sp.type_desc як LoginType
ВІД sys.database_principals DP
JOIN sys.server_principals sp ON dp.principal_id = sp.principal_id
Порядок за типом користувача
вибрати * з sys.database_principals
-- Ролі сервера
Виберіть
p.name як Ім'я користувача, p.type_desc як UserType, pp.name як ServerRoleName, pp.type_desc як ServerRoleType
З sys.server_role_members ролей
об'єднати sys.server_principals p на roles.member_principal_id = p.principal_id
Приєднатися до sys.server_principals PP на roles.role_principal_id = pp.principal_id
Де pp.name у ('sysadmin')
порядок за ServerRoleName, UserName
-- Ролі в базі даних
ВИБЕРІТЬ
p.name як Ім'я користувача, p.type_desc як UserType, pp.name як DBRoleName, pp.type_desc як DBRoleType, pp.is_fixed_role як IfFixedRole
З sys.database_role_members ролей
JOIN sys.database_principals p ON roles.member_principal_id = p.principal_id
ПРИЄДНАТИСЯ sys.database_principals PP НА roles.role_principal_id = pp.principal_id
де pp.name в ('db_owner', 'db_datawriter')
-- Що можуть робити ці користувачі?
ВИБЕРІТЬ
grantor.name як GrantorName, dp.state_desc як StateDesc, dp.class_desc як ClassDesc, dp.permission_name як PermissionName,
OBJECT_NAME(major_id) як ObjectName, GranteeName = grantee.name
Від sys.database_permissions DP
ПРИЄДНУЙТЕСЬ sys.database_principals грантоотримувача на dp.grantee_principal_id = grantee.principal_id
JOIN sys.database_principals grantor on dp.grantor_principal_id = grantor.principal_id
де permission_name як '%UPDATE%'