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