Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Linked

Cria senha especifica para o meu banco de dados

Recommended Posts

Olá pessoal,

 

Me desculpem pela pergunta que vou fazer, pois é uma pergunta de iniciante.

 

Instalei o meu banco de dados em uma máquina de outra pessoa no MS SQL Server management studio 2012. O proprietário dessa máquina detém o usuário ("SA") e a senha mestre do gerenciador, ou seja, no meu entendimento ele terá acesso a qualquer banco de dados lá instalado inclusive o meu.

 

É possível impedir que o usuário "SA" acesse o meu banco de dados? E se for possível, algum colega poderia me ensinar a fazer isso ?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

independente do usuario, o fato dele ser sysadmin já tera acesso a sua base.

O que vc pode tentar fazer é uma trigger de logon, mas teria que testar em uma base de teste.

eu tenho esta trigger para bloquear conexoes pelo MMS.

 

 

USE master
GO
 
 
/*
SE NECESSARIO TEM QUE CRIAR O LOGIN ANTES 
USE [master]
GO
-- CRIACAO LOGIN
CREATE LOGIN [login] WITH PASSWORD=N'senha'
, DEFAULT_DATABASE=[master]
, CHECK_EXPIRATION=OFF
, CHECK_POLICY=OFF
GO
 
-- ATRIBUICAO DO LOGIN A BASE COMO OWNER
USE [BASE]
GO
 
CREATE USER [login] FOR LOGIN [login]
GO
 
USE [BASE]
GO
 
EXEC sp_addrolemember N'db_owner', N'login'
GO
 
*/
 
GRANT VIEW SERVER STATE TO [LOGIN]; -- COLOCA O LOGIN DO USUARIO A SER BLOQUEADO
GO
 
CREATE TRIGGER connection_limit_mms
ON ALL SERVER WITH EXECUTE AS 'teste' -- COLOCA O LOGIN DO USUARIO A SER BLOQUEADO
FOR LOGON
AS
BEGIN
IF (SELECT COUNT(*) FROM sys.dm_exec_sessions
WHERE is_user_process = 1 
AND original_login_name = 'teste' -- COLOCA O LOGIN DO USUARIO A SER BLOQUEADO
and program_name like '%Management%') > 0 -- LISTA OS PROGRAMAS A SEREM BLOQUEADOS
    ROLLBACK;
END;
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

independente do usuario, o fato dele ser sysadmin já tera acesso a sua base.

O que você pode tentar fazer é uma trigger de logon, mas teria que testar em uma base de teste.

eu tenho esta trigger para bloquear conexoes pelo MMS.

USE master
GO
 
 
/*
SE NECESSARIO TEM QUE CRIAR O LOGIN ANTES 
USE [master]
GO
-- CRIACAO LOGIN
CREATE LOGIN [login] WITH PASSWORD=N'senha'
, DEFAULT_DATABASE=[master]
, CHECK_EXPIRATION=OFF
, CHECK_POLICY=OFF
GO
 
-- ATRIBUICAO DO LOGIN A BASE COMO OWNER
USE [BASE]
GO
 
CREATE USER [login] FOR LOGIN [login]
GO
 
USE [BASE]
GO
 
EXEC sp_addrolemember N'db_owner', N'login'
GO
 
*/
 
GRANT VIEW SERVER STATE TO [LOGIN]; -- COLOCA O LOGIN DO USUARIO A SER BLOQUEADO
GO
 
CREATE TRIGGER connection_limit_mms
ON ALL SERVER WITH EXECUTE AS 'teste' -- COLOCA O LOGIN DO USUARIO A SER BLOQUEADO
FOR LOGON
AS
BEGIN
IF (SELECT COUNT(*) FROM sys.dm_exec_sessions
WHERE is_user_process = 1 
AND original_login_name = 'teste' -- COLOCA O LOGIN DO USUARIO A SER BLOQUEADO
and program_name like '%Management%') > 0 -- LISTA OS PROGRAMAS A SEREM BLOQUEADOS
    ROLLBACK;
END;
 

 

Bom dia A.Jr, muito obrigado por responder prontamente a minha questão.

 

Vou fazer uns testes aqui em minhas instalações pra ver se funciona.

 

O cara que tem a senha mestre do "SA", pode no máximo fazer backup do meu banco de dados, mas jamais poderá abri-lo para ver os dados.

 

Me diga uma coisa, essa trigger que você me passou, quando disparada só afetará o meu banco de dados certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Linked, teria que testar, mas a alteracao afeta sua instancia, ou seja, todos os seus DBs...

 

A parte que ira ser alterada sera esta:

 

 

(SELECT COUNT(*) FROM sys.dm_exec_sessions
WHERE is_user_process = 1 
AND original_login_name = 'teste' -- COLOCA O LOGIN DO USUARIO A SER BLOQUEADO
and program_name like '%Management%'

 

Estou sem ambiente de teste, mas de uma olhada nos campos da sys.dm_exec_sessions qual seria o database, ou databaseID

Compartilhar este post


Link para o post
Compartilhar em outros sites

Linked, teria que testar, mas a alteracao afeta sua instancia, ou seja, todos os seus DBs...

 

A parte que ira ser alterada sera esta:

(SELECT COUNT(*) FROM sys.dm_exec_sessions
WHERE is_user_process = 1 
AND original_login_name = 'teste' -- COLOCA O LOGIN DO USUARIO A SER BLOQUEADO
and program_name like '%Management%'

Estou sem ambiente de teste, mas de uma olhada nos campos da sys.dm_exec_sessions qual seria o database, ou databaseID

 

Valeu demais A.Jr., obrigado mesmo por se dispor a me ajudar!

 

O seu problema de não ter um ambiente de teste é o mesmo que o meu.

 

Vou ver se consigo uma máquina de algum amigo meu para testar isso e, assim que eu tiver um resultado e entro aqui e comento contigo ok?

 

Abraços e fique na paz!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conseguiu??? O_o

 

Bom dia A.Jr.

 

Me perdoe pela demora em dar-lhe um feedback.

 

Infelizmente tive um imprevisto, meu HD foi para o "brejo" e estou já alguns dias tentando recuperar meus dados para voltar a trabalhar normalmente. Para nós desenvolvedores, temos muitas ferramentas e configurações no nosso ambiente de desenvolvimento.

 

Quando estiver tudo normalizado entrarei em contato contigo ok?

 

Um abraço e fique na paz!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.