Mais
Consulta ao SQL Server para encontrar todas as permissões/acesso para todos os usuários em uma base de dados
Eu gostaria de escrever uma consulta em um sql 2008 que irá relatar todos os usuários que têm acesso a uma base de dados específica, ou objetos dentro da base de dados, tais como tabelas, visões e procedimentos armazenados, seja diretamente ou devido a funções, etc. Este relatório seria utilizado para fins de auditoria de segurança. Não tenho certeza se alguém tem uma consulta que se encaixe completamente nas minhas necessidades, mas espero que algo que me dê um bom começo. Ou o sql 2008, 2005 ou 2000 serve, eu provavelmente posso converter conforme necessário.
180
3
Esta é a minha primeira vez em uma consulta, baseada nas sugestões de Andomar's. Esta consulta destina-se a fornecer uma lista de permissões que um usuário aplicou diretamente à conta do usuário, ou através de funções que o usuário tem.
A partir do SQL Server 2005, você pode usar as visões do sistema para isso. Por exemplo, esta consulta lista todos os utilizadores de uma base de dados, com os seus direitos:
Esteja ciente de que um usuário também pode ter direitos através de um papel. Por exemplo, a função
db_data_reader' concede direitos
select' sobre a maioria dos objectos.Can't comment on accepted answer so I'will add some comments here:
sys.objects' contém apenas objetos delimitados por esquemas. Então para obter informações sobre "nível superior" objetos (ou seja, esquemas no nosso caso) você precisa utilizar a tabela
sys.schemas`.[ObjectType]
it's é melhor utilizarobj.type_desc
apenas para a classe de permissãoOBJECT_OR_COLUMN
. Para todos os outros casos utilizeperm.[class_desc]
.IMPERSONATE
. Para obter informações sobre imitações, deve-seLEFT JOIN
comsys.database_principals
emperm.major_id = imp.principal_id
.sys.login_token' por
sys.server_principals', pois mostrará também os Logins SQL, não apenas os do Windows.'G'
para permitir tipos principais para permitir grupos Windowssys
eINFORMATION_SCHEMA
da tabela resultante, já que estes usuários são utilizados apenas para o serviçoI'publicará a primeira peça de script com todas as correções propostas, outras peças também devem ser alteradas: