Como você configura um MS SQL Server para impedir a exposição de todos os nomes e logins de bancos de dados a qualquer usuário autenticado?

6

Sou novo no MS SQL e faço essa pergunta como um desenvolvedor da Web com experiência limitada em sysadmin que deseja que seus provedores de serviços usem práticas recomendadas.

Temos um banco de dados em um servidor MS SQL remoto fornecido pela nossa empresa de hospedagem. Outros clientes da nossa empresa de hospedagem usam esse mesmo servidor para seus bancos de dados. Quando efetuo login no servidor usando o Microsoft SQL Server Management Studio Express, posso ver muitas informações, incluindo os nomes de todos os bancos de dados no servidor e todos os logins.

Embora não possa acessar bancos de dados de outros clientes nem ver senhas, parece-me estranho que eu possa ver essas informações. Eu certamente não quero que outros clientes saibam o nome do meu banco de dados ou o meu login. Quando eu levantei essa preocupação com o meu provedor de serviços, esta foi sua resposta:

I checked with my SQL guy and he said that unfortunately is a limitation of MSSQL Server. Although the database names are visible, you cannot access any database without the password for that database.

Isso é o que vejo depois de fazer login:

  • mssql.server.com
    • Bancos de dados
      • Bancos de dados do sistema
      • Um monte de bancos de dados de clientes ...
    • Segurança
      • Logins
      • Um monte de logins de clientes ...
    • Objetos de servidor
    • Replicação
    • Gerenciamento

Este é o caminho certo para configurar um SQL Server? Por favor, confirme ou negue a minha suspeita de que a resposta é não e eu preciso encontrar alguém para hospedar nosso banco de dados.

    
por nselikoff 04.03.2010 / 18:43

5 respostas

4

Falando do lado do desenvolvimento, posso dizer que o administrador deve ser capaz de bloquear todos para o seu próprio banco de dados (e provavelmente dominar também, para metadados). Do MSDN, a lista de securables do SQL Server inclui bancos de dados e o < href="http://msdn.microsoft.com/en-us/library/ms191291(SQL.90).aspx"> permissões incluem a possibilidade de ver o banco de dados. Aqui é um link para as considerações sobre Segurança do MSDN para bancos de dados.

    
por 04.03.2010 / 19:06
3

O Management Studio obtém a lista de bancos de dados de sys.databases. As permissões padrão em sys.databases é para cada login ver apenas seu próprio banco de dados:

If the caller of sys.databases is not the owner of the database and the database is not master or tempdb, the minimum permissions required to see the corresponding row are ALTER ANY DATABASE or VIEW ANY DATABASE server-level permission, or CREATE DATABASE permission in the master database. The database to which the caller is connected can always be viewed in sys.databases.

Se você tiver logins que vêem bancos de dados diferentes deles, isso significa que os logins mencionados possuem privilégios desnecessários, como CREATE DATABASE.

    
por 04.03.2010 / 21:50
0

Usar o MS SQL dessa maneira como um host compartilhado não me parece tão desejável - mas você recebe pelo que paga. Se os seus termos e condições do seu contrato não disserem que você obtém sua própria instância do SQL e só obtém um banco de dados em uma instância compartilhada, então, de fato, você está obtendo o que paga.

    
por 04.03.2010 / 18:53
0

Isso oculta outros DBs e usuários, mas apenas para um único usuário (provavelmente o que você está procurando). Eu testei no MS SQL 2008 R2.

No Server Management Studio:

  • Crie uma conta de usuário, não defina nenhuma permissão
  • Abra as propriedades do servidor > Permissões > selecione a nova conta > marque a caixa "Negar para visualizar bancos de dados"
  • Abra as propriedades do banco de dados > Arquivos > defina o proprietário do banco de dados para a conta do usuário
por 23.05.2013 / 03:39
0

Para ocultar os bancos de dados de todos os LOGINS, remova / revogue a permissão "VIEW ANY DATABASE" da função de servidor público

link

    
por 08.10.2014 / 18:04