Introdução
É uma informação crítica e vital caso você administre servidores de banco de dados conhecer quem possui permissões elevadas.
O que defino aqui como login com permissão elevada é aquele que:
• Está incluído na role de servidor sysadmin;
• Está incluído na role de servidor securityadmin
• Possui a permissão de CONTROL SERVER;
O post traz um script básico com o intuito de identificar quem são eles:
Script
O script se divide em duas partes: a primeira analisa roles de servidor com permissões importantes (nesse caso, sysadmin e securityadmin). A segunda analisa permissões de servidor (CONTROL SERVER, leia os motivos aqui). Ambas as partes ignoram logins desativados.
Compatibilidade do script: SQL Server 2005 ou superior.
SELECT DISTINCT Suser_name(member_principal_id) AS [Login],
Upper(Suser_name(role_principal_id)) AS [Permissão],
Getdate() AS [Data Coleta]
FROM sys.server_role_members rm
INNER JOIN sys.server_principals p
ON p.principal_id = rm.member_principal_id
LEFT JOIN sys.server_permissions per
ON per.grantee_principal_id = rm.member_principal_id
WHERE Suser_name(role_principal_id) IN ( 'SYSADMIN', 'SECURITYADMIN' )
AND Suser_name(member_principal_id) NOT LIKE '%SERVICE\%'
AND P.is_disabled = 0
UNION ALL
SELECT NAME AS [Login],
'CONTROL SERVER' AS [Permissão],
Getdate() AS [Data Coleta]
FROM sys.server_principals p
INNER JOIN sys.server_permissions per
ON per.grantee_principal_id = p.principal_id
WHERE PER.permission_name = 'CONTROL SERVER '
AND P.is_disabled = 0
Segue exemplo de resultado:
Customização vai a gosto do freguês: filtrar certificados, outras roles que você pode considerar importante (dbcreator por exemplo), considerar também logins desabilitados…
Espero que você não tenha surpresas ao localizar algum login de modo inesperado e que o script ajude alguém. Mas se encontrar, espero que você resolva da melhor forma possível antes de ter algum problema chato por causa de falha na segurança.
[]’s
Sugestões de leitura
Roles do SQL Server: Sysadmin – http://renatomsiqueira.com.br/roles-do-sql-server-sysadmin/
Roles do SQL Server: Setupadmin e Securityadmin – http://renatomsiqueira.com.br/roles-do-sql-server-setupadmin-e-securityadmin/
[]’s

