none
Isolar usuário a uma única database RRS feed

  • Pergunta

  • Olá pessoal, estou testando uma nova forma de acesso e fiquei com receio por causa da segurança do acesso.

    Gostaria de criar um logon para cada database, de forma que só pudesse ser feito SELECT, INSERT, UPDATE e DELETE nesta determinada tabela, e que este usuário não pudesse nem ver quais outras databases estão no servidor SQL.

    O servidor tem várias bases, e quero isolar o acesso dele aos dados apenas. Nada de gestão, performance ou outros objetos, ok.

    Se isso for algo razoavelmente simples, alguém pode me ajudar? Se for muito complexo, aceito orçamentos para fazer isso.

    Minha versão é 2008 R2 Web edition

    Agradeço antecipadamente. 

    Desejo a você que possa ser o seu melhor EU em 2017. Abs.

    quinta-feira, 5 de janeiro de 2017 18:58

Todas as Respostas

  • Eduardo,

    Em relação a configuração de visibilidade das bases de dados, você terá que realizar isso para cada usuário negando a capacidade de acesso a View Any Databases.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 5 de janeiro de 2017 22:20
    Moderador
  • Bom dia, Eduardo!

     

    Você vai ter que criar um login só com role padrão (Public) depois criar um usuário no banco que você quer que ele tenha acesso, negando as permissões de escrita e leitura e em seguida garantir acesso somente à(s) tabela(s) que você quer que ele acesso:

     

     

    USE [master]

    GO

     

    CREATE LOGIN [fulano]

    WITH PASSWORD=N'xJWRGxKu0lrhQqjx1uX46VNr+ws5bnxsXKt9wV0jeD8='

    Go

     

    Use Teste

    Go

     

    CREATE USER [fulano] FOR LOGIN [fulano] WITH DEFAULT_SCHEMA=[dbo]

     

    ALTER ROLE [db_denydatareader] ADD MEMBER [fulano]

    ALTER ROLE [db_denydatawriter] ADD MEMBER [fulano]

     

    USE [Teste]

    GO

     

    ALTER ROLE [db_denydatareader] ADD MEMBER [fulano]

    ALTER ROLE [db_denydatawriter] ADD MEMBER [fulano]

     

    GRANT DELETE ON [dbo].[t_Teste] TO [fulano]

    GRANT INSERT ON [dbo].[t_Teste] TO [fulano]

    GRANT SELECT ON [dbo].[t_Teste] TO [fulano]

    GRANT UPDATE ON [dbo].[t_Teste] TO [fulano]

     

    Quanto à impedir que ele veja outros bancos, no final das contas, você vai ser obrigado a dar acesso completo ao banco para o usuário em questão (db_owner).

    PS: Tive que reescrever a resposta, fui alterar algo e acabei excluindo.


    att,
    Mailson Santana - DBA
    MCSE: Data Management and Analytics
    Site: www.mailsonsantana.com.br
    Linkedin: mailsonsantana





    sexta-feira, 6 de janeiro de 2017 11:22