none
Limitar acesso aos usuarios RRS feed

  • Pergunta

  • Instalei o SQL 2005 e vou disponibilizar dezenas de bancos, cada banco terá seu próprio usuário, e proibi o acesso a outros bancos usando o DENY VIEW ANY DATABASE. Mas ele ainda tem acesso a tabela master, eu sei que ele precisa ter acesso, mas tem como probir mais funções do usuário?


     

    terça-feira, 3 de julho de 2007 16:43

Todas as Respostas

  • Pablo,

     

    A qual Database Role este usuário pertence?

    terça-feira, 3 de julho de 2007 17:16
    Moderador
  • Pablo,

     

    você está implementando o novo servidor e não que que por enquanto os usuários acessem os bancos que você está criando cada um com seu usuário não é ?

     

    Se for, você pode desabilitar o login deles.

    ALTER LOGIN login_name DISABLE

     

    Ou então,

     

    USE master
    DENY CONNECT SQL TO <user> CASCADE;
    GO

     

    O CASCADE vai proibir também acesso a todos os objetos do user

    terça-feira, 3 de julho de 2007 17:27
  • Pablo,

     

    Você poderia utilizar a stored procedure sp_revokedbaccess para bloquear o acesso aos bancos de sistema.

     

    Procure mais informações e exemplos no Books On-Line do SQL Server 2005.

    terça-feira, 3 de julho de 2007 18:09
    Moderador
  •  

    Pablo,

     

    Não entendi sua pergunta. Cada banco terá um único usuário ou seria um owner para cada banco?

     

     

    quarta-feira, 4 de julho de 2007 18:39
  • Alexandre,

    Correto. Cada banco terá seu owner, e não quero que eles compartilhem nada por questão de segurança. Já achei várias maneiras de fechar ao máximo isso, mas cada usuário tem acesso a seu banco, ao master e ao tempodb, mas ele consegue ver tudo. Queria que ele tivesse acesso somente ao seu banco.
    sexta-feira, 6 de julho de 2007 12:21
  •  

    Pablo,

     

    Se voce atribuir "owner" para os usuários em seus respectivos bancos e estiverem na mesma instancia; não tem jeito. Se a quantidade de bancos não for grande, não seria uma melhor opção criar instancias e colocar cada banco e seu respectivo owner em instancias distintas ?

     

     

    sexta-feira, 6 de julho de 2007 13:33
  • Poisé, pensei nisso. Mas são centenas de bancos. E o que eles podem fazer com acesso a essas tabelas? Não tem como restringir mais alguma coisa?
    sexta-feira, 6 de julho de 2007 13:35
  •  

    Pablo,

     

    Qual seria o real motivo de atribuir tão poderosa permissão a esses usuários que voce, teóricamente, não confia ?

     

    Talvez você possa resolver de outra forma, atribuindo permissões de forma individual aos objetos dos bancos, é mais trabalhoso mas preservaria o seu master.mdf.

     

     

    domingo, 8 de julho de 2007 12:24
  • Alexandre,

    Sou um provedor de hosting, então é por isso que preciso ter uma segurança muito grande. Como vários usuários terão bancos, preciso ter uma segurança maximizada. Já consegui que tirar o acesso publico aos outros bancos, pois antes o usuário conseguia vizualizar todos os bancos.
    domingo, 8 de julho de 2007 15:33
  •  

    Pablo,

     

    Esqueça tudo que foi dito antes. Como provedor de hosting, voce pode ter uma única instancia com vários databases e ter um database para cada usuário sendo que este não terá direitos de owner. É isso que voce precisa, correto ?

     

    Se positivo, voce terá de fazer o seguinte:

     

    1) Criar o usuário no banco se direitos de DBO ou mesmo owner do banco;

    2) Fazer uso intensivo da sp_addapprole e sp_setapprole;

    3) Criar uma interface HTML para fazer o front-end com o pseudo-dba.

     

    É trabalhoso? Sim, mas você terá um usuário no banco como guest pensando que é owner.

     

    Recomendo que, além do SQL Server 2005, seja utilizado uma ferramenta como o Visual Basic Express Edition para fazer a interface.

     

    Voce deve estar perguntando porque falei isso tudo, correto ? Há um tempo atrás, gerenciei um projeto em um grande web hosting e datacenter que queria exatamente isso, foi um trabalho custoso e profissional, mas até hoje nunca teve problemas de segurança.

     

     

     

     

    domingo, 8 de julho de 2007 15:56
  • Alexandre,

    Obrigado por suas dicas. Mas preciso com mais detalhes. Irei testar o que você disse. Eu implementei:

    --Habilita configurações avançadas
    exec sp_configure 'show advanced options', 1
    reconfigure
    go

    --Tempo de timout da sessão (em segundos)
    exec sp_configure 'query governor cost limit', 300
    reconfigure
    go

    --Bloqueia visualizar o estado do servidor
    deny view server state to public

    --Confiança entre databases
    --exec trustworthy off
    --go

    --Desabilitar trigger
    disable trigger all on all server

    --Configura a memoria para 3Gb
    exec sp_configure 'min server memory (mb)', 3072
    exec sp_configure 'max server memory (mb)', 3072
    exec sp_configure 'set working set size', 1
    reconfigure with override
    go
    segunda-feira, 9 de julho de 2007 14:25
  •  

    Pablo,

     

    O caminho foi o que te passei acima. Utilize uma interface web para fazer o front-end entre o usuário e as stored procedures que citei.

     

    Pesquise ambas no books online.

     

     

    segunda-feira, 9 de julho de 2007 18:16
  • Beleza, vou verificar.

    segunda-feira, 9 de julho de 2007 18:18