Identificando logins com permissões elevadas no SQL Server


Outro título: "sabes quem tem poder de fogo no teu servidor?"

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:

EvidenciaPermiss

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

, ,

Leave a Reply

Your email address will not be published. Required fields are marked *