Temos uma demanda para criar um novo usuário com capacidade de SELECIONAR apenas 4 tabelas específicas. Para fazer isso, criamos o login e o mapeamos para o banco de dados necessário:
USE [master]
GO
CREATE LOGIN [pos] WITH PASSWORD=N'XXXX', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [TARGETED_DB_NAME]
GO
CREATE USER [pos] FOR LOGIN [pos]
GO
Depois disso, o usuário pode fazer qualquer instrução DML, enquanto não tem privilégios, exceto a função pública. Verificamos as permissões de função pública, permissões de servidor, etc., mas não descobrimos por que o usuário pode ver todas as tabelas do banco de dados.
O problema não está presente quando criamos o usuário em outro banco de dados na mesma instância.
Alguma idéia de por que o login pos obter esses privilégios?
A consulta a seguir ajudaria a obter uma visão das permissões que determinado usuário obteve Direta ou Indiretamente , com base no resultado, você pode analisar/identificar qual é a causa do problema.