-- Poizvedba po dovoljenjih uporabnika za objekte
exec sp_helprotect NULL, 'Uporabniško ime'
-- Poizvedba o vlogi uporabnika
izvršni sp_helpuser 'Uporabniško ime'
-- Poizvedite, kateri uporabniki imajo določeno sistemsko vlogo
izvršni sp_helpsrvrolemember 'sysadmin'
-- Gnezdene vloge je mogoče poizvedovati
Z tree_roles
(
IZBERI role_principal_id, member_principal_id
OD sys.database_role_members
KJER member_principal_id = USER_ID('Uporabniško ime')
SINDIKAT VSI
IZBERI c.role_principal_id,c.member_principal_id
FROM sys.database_role_members kot c
Notranji spoj tree_roles
on tree_roles.member_principal_id = c.role_principal_id
)
SELECT distinct USER_NAME(role_principal_id) RoleName
OD tree_roles
-- Osnovna tabela, povezana z drugimi dovoljenji
Izberite * med sistemskimi uporabniki
Izberite * iz SysPermissions
-- Kdo ima dostop do moje SQL Server instance?
IZBRATI
ime kot UserName, type_desc kot UserType, is_disabled kot IsDisabled
OD sys.server_principals
kjer type_desc v('WINDOWS_LOGIN', 'SQL_LOGIN')
order by UserType, ime, IsDisabled
-- Kdo ima dostop do mojih baz podatkov?
IZBRATI
dp.name kot Uporabniško ime, dp.type_desc kot Uporabniški tip, sp.name kot LoginName sp.type_desc kot LoginType
OD sys.database_principals dp
JOIN sys.server_principals SP ON dp.principal_id = sp.principal_id
vrstni red po UserType
Izberi * izmed sys.database_principals
-- Strežniške vloge
izbrati
p.name kot UserName, p.type_desc kot UserType, pp.name kot ServerRoleName pp.type_desc kot ServerRoleType
Iz sys.server_role_members vlog
združi sys.server_principals p na roles.member_principal_id = p.principal_id
Pridruži se sys.server_principals pp na roles.role_principal_id = pp.principal_id
kje pp.name v ('sysadmin')
vrstni red po ServerRoleName, UserName
-- Vloge v podatkovnih bazah
IZBRATI
p.name kot UserName, p.type_desc kot UserType, pp.name kot DBRoleName, pp.type_desc kot DBRoleType pp.is_fixed_role kot IfFixedRole
FROM sys.database_role_members vloge
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
kjer pp.name v('db_owner', 'db_datawriter')
-- Kaj lahko ti uporabniki storijo?
IZBRATI
grantor.name kot GrantorName, dp.state_desc kot StateDesc, dp.class_desc kot ClassDesc, dp.permission_name kot PermissionName,
OBJECT_NAME(major_id) kot ObjectName, GranteeName = grantee.name
OD sys.database_permissions dp
PRIDRUŽITE sys.database_principals prejemniku sredstev na dp.grantee_principal_id = grantee.principal_id
JOIN sys.database_principals donator na dp.grantor_principal_id = grantor.principal_id
kjer permission_name na primer '%UPDATE%'