🛠️Para identificar todos os usuários cadastrados:
SELECT name
FROM sys.database_principals
WHERE type IN ('S', 'U', 'G')
AND name NOT LIKE '##%'
ORDER BY name;
🛠️ Detalhamento de usuários, grupos e permissões
SELECT princ.name AS UserName,
princ.type_desc AS UserType,
roleprinc.name AS RoleName,
perm.permission_name AS PermissionType
FROM sys.database_principals AS princ
LEFT JOIN sys.database_role_members AS members ON princ.principal_id = members.member_principal_id
LEFT JOIN sys.database_principals AS roleprinc ON members.role_principal_id = roleprinc.principal_id
LEFT JOIN sys.database_permissions AS perm ON perm.grantee_principal_id = princ.principal_id
WHERE princ.type IN ('S', 'U', 'G')
AND princ.name NOT LIKE '##%'
ORDER BY princ.name;
A coluna UserType indica o tipo de usuário.
No exemplo acima, SQL_SERVER significa que é um usuário do SQL SERVER. Outros valores possíveis seriam WINDOWS_USER para usuários do Windows autenticados e WINDOWS_GROUP para grupos do Windows autenticados.
A coluna RoleName indica o nome do grupo ao qual o usuário pertence.
A coluna PermissionType indica o tipo de permissão que o usuário tem. O valor CONNECT indica que o usuário tem permissão para se conectar ao banco de dados. Outros tipos de permissões poderiam ser SELECT, INSERT, UPDATE, DELETE, etc.
🛠️Identificar grupos existentes relacionados ao gerenciamento de privilégios
SELECT name
FROM sys.database_principals
WHERE type_desc = 'DATABASE_ROLE';
Grupos padrões no SQL Server
1. public: Todos os usuários fazem parte do grupo "public" por padrão. É um grupo especial que contém todas as permissões básicas que todos os usuários devem ter no banco de dados. Os usuários herdam as permissões do grupo "public" automaticamente.
2. db_owner: Os membros deste grupo têm controle total sobre o banco de dados. Eles podem executar qualquer operação no banco de dados, incluindo a alteração de sua estrutura, adição/remoção de usuários, etc.
3. db_accessadmin: Os membros deste grupo podem adicionar ou remover logons de usuários de banco de dados.
4. db_securityadmin: Os membros deste grupo podem gerenciar as permissões de segurança no banco de dados, como conceder ou revogar permissões de usuário.
5. db_ddladmin: Os membros deste grupo podem executar operações DDL (Data Definition Language), como criar, modificar ou excluir objetos de banco de dados.
6. db_backupoperator: Os membros deste grupo podem fazer backups ou restaurações do banco de dados.
7. db_datareader: Os membros deste grupo podem ler (selecionar) todos os dados em todas as tabelas do banco de dados.
8. db_datawriter: Os membros deste grupo podem modificar (inserir, atualizar e excluir) todos os dados em todas as tabelas do banco de dados.
9. db_denydatareader: Os membros deste grupo são explicitamente negados de ler dados em todas as tabelas do banco de dados. Essa negação pode ser útil quando você deseja negar permissões a um grupo específico.
10. db_denydatawriter: Os membros deste grupo são explicitamente negados de modificar dados em todas as tabelas do banco de dados. Mais uma vez, essa negação pode ser útil quando você deseja negar permissões a um grupo específico.