none
Restringir acesso ao banco de dados. RRS feed

  • Pergunta

  • Ola,

    Tenho seguinte cenário:

    Um banco de dados com um usuário para aplicação e outro para o pessoal do desenvolvimento. Onde o usuario da plicação pode fazer INSERT/SELECT/UPDATE/DELETE e etc. O usuário do desenvolvimento pode fazer o mesmo que o usuario da aplicação e modificar a estrutura do banco ALTER TABLE/DROP COLUMN e etc.

    A problemática é a seguinte: meu banco de dados pode ser restaurado e acessado por qualquer um que tenha o backup dele. Preciso que só quem tenha os usuários mencionados acima possa restaurar o backup e acessar os dados.

    sexta-feira, 5 de outubro de 2018 11:59

Respostas

Todas as Respostas

  • Higor, 

    A primeira coisa que pergunto é: "meu banco de dados pode ser restaurado e acessado por qualquer um que tenha o backup dele"

    Então esse "qualquer um" tem um usuário com acesso alto, certo? Um sysadmin por exemplo?

    É só você desabilitar o usuário que eles estão utilizando,e criar os outros dois usuários que mencionou.

    Coloque o usuário de aplicação como membros nas roles  
    db_datareader e db_datawriter.

    Para o usuário  de desenvolvimento, use as mesmas roles acima e adicione a role db_ddladmin. Isso permitirá que o usuário faça alterações DDL nas bases. 

    Se quiser dar acesso a backup/restore, pode adicionar db_backupoperator


    Espero ter ajudado.



    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    sexta-feira, 5 de outubro de 2018 16:41
  • Mariana, desculpe se o problema é simples. Mas eu não entendendo muito.

    No meu banco não tem nenhum usuário a não ser o dbo. Vou no banco e clico com botão direito e vou em Security -> Users e só tem o dbo.

    Se eu fizer o backup deste banco e tentar restaurar em outra instancia ele restaura sem problema.

    Em na estancia que fiz o backup esto logado com um usuario X. Na que estou restaurando estou com o usuário SA.


    sexta-feira, 5 de outubro de 2018 18:36
  • Ah! Ok Higor. Eu não havia entendido que você estava falando do restore em outra instância.

    Uma coisa são permissões de usuários. O que os usuários podem ou não fazer. 
    Outra coisa é não permitir que um arquivo de backup de uma instância seja restaurado na outra.


    Se você quer impedir que seus backups sejam restaurados em qualquer outra máquina, você terá que criptografar seu backup.
    Basicamente você irá criar uma MasterKey (fazer backup dela), criar um certificado e usar esse certificado para restaurar o seu backup.
    Dessa maneira apenas você que possui o certificado poderá restaurar o backup feito.

    Se precisar restaurar esse backup em qualquer outra máquina, basta restaurar o backup da MASTER KEY na nova máquina, criar o certificado e efetuar o restore.



    https://www.brunodba.com/2018/04/15/criptografando-backups-sql-server/

    https://www.tiagoneves.net/blog/criando-um-backup-criptografado-no-sql-server/

    https://viniciusfonsecadba.wordpress.com/2018/05/02/criptografia-de-backup-no-sql-server/Espero ter ajudado!


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    sexta-feira, 5 de outubro de 2018 18:58