Inquiridor
Limitar acesso aos usuarios

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?
Todas as Respostas
-
-
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;
GOO CASCADE vai proibir também acesso a todos os objetos do user
-
-
-
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. -
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 ?
-
-
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.
-
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. -
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.
-
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 -
-