A autenticação do Windows no SQL Server permite que o usuário veja QUALQUER banco de dados

2

Eu tenho uma instância do SQL Server com cerca de 50 bancos de dados. Um desenvolvedor, chame-o de Joe, quer acesso a um banco de dados existente. Então eu fui em frente e criei uma nova conta de login no sql server 2005 management studio e na seção de mapeamento de usuários eu especifiquei que ele tem acesso a este banco de dados.

Ao fazer o login, percebemos que ele pode acessar QUALQUER um dos bancos de dados e abrir todas as tabelas, descartar tabelas, etc.

Como posso limitá-lo sem torná-lo o db_owner do banco de dados? Tem algo a ver com o acesso "Público" sob papéis?

Aqui estão os passos que fiz no estúdio de gerenciamento e fui para segurança > logins e cliquei com o botão direito do mouse e adicionei um novo "Log on". Selecionado "windows authentication". Na guia de mapeamento de usuários, selecionei o banco de dados que ele deveria ter acesso, achando que isso daria a ele somente acesso a esse banco de dados.

Então eu liguei para o estúdio de gerenciamento e entrei como ele (autenticação do Windows) e ele pode abrir e ver todas as tabelas de todos os bancos de dados? Mas eu não quero que ele acesse tudo isso?

    
por oJM86o 08.11.2011 / 21:29

2 respostas

4

Parece que Joe é membro de um grupo de domínio que tem mais direitos no SQL Server do que você deseja, ou você está mexendo com os direitos das funções públicas nos outros bancos de dados no servidor. Em ambos os casos, você precisará descobrir de onde os direitos extras estão vindo para corrigi-los.

Você pode usar o procedimento armazenado xp_logininfo para ver com que grupos de domínio Joe é possível acessar o banco de dados.

exec xp_logininfo 'YourDomain\JoesUserName'

Se isso não apontar você na direção certa, será necessário investigar os direitos concedidos à função pública nos outros bancos de dados.

    
por 08.11.2011 / 21:59
2

Eles têm mais direitos do que você espera.

Não é a autenticação do Windows, mas as permissões.

Ver em todos os bancos de dados significa que eles têm direitos "sysadmin" no nível do servidor ou têm acesso por meio de um grupo do Windows. Normalmente, alguém pode ver todo o banco de dados, mas receberá um erro ao tentar expandi-lo. Nenhum erro = algumas permissões atribuídas.

E "DROP" significa sysadmin se se aplicar a todos os bancos de dados.

"Joe" é um membro de um grupo de administração do SQL?

    
por 08.11.2011 / 21:39

Tags