Usuário com melhor resposta
Bloquear Autenticação do Windows no SQL Server 2005 e 2008 express

Pergunta
-
Olá Pessoal...
Preciso bloquear o acesso a um BD com o Windows Authentication através de um SCRIPT ou via código(Vb.Net).
Eu consigo fazer o bloqueio indo pela interface do SQL Server, verificando quais os usuário e grupos estão com a permissão SYSADMIN e os desabilitando.
Gostaria de identificar quais usuários tem esta permissão(SYSADMIN) e bloqueá-los automaticamente(permitir apenas o usuário SA para SQL Server Authentication).
Não sei se está é a forma correta ou se tem outra forma? Se alguém puder ajudar agradeço...abraço a todos.
quinta-feira, 28 de março de 2013 13:25
Respostas
-
AndersonFC,
A trigger abaixo barra o login via windows authentication uma vez que pelo SQL Server temos apenas os meios:
1 - Windows Authentication
2 - Mixed Mode (Windows Authentication + SQL Server Authentication)
Ou seja, não temos apenas SQL Server Authentication.
Apenas tome cuidado com a mesma pois ela esta sem backdoor, ou seja, TODOS! os usuarios via Windows Authentication serão barrados.
CREATE TRIGGER ImpedeConexaoViaWindowsAuthentication ON ALL SERVER WITH EXECUTE AS 'sa' FOR LOGON AS BEGIN IF(EXISTS(SELECT TOP 1 1 FROM sys.dm_exec_sessions WHERE is_user_process = 1 AND LEN(LTRIM(RTRIM(nt_domain))) > 0 AND original_login_name LIKE ORIGINAL_LOGIN())) ROLLBACK; END;
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Marcado como Resposta Fabrizzio CaputoModerator quinta-feira, 28 de março de 2013 14:53
quinta-feira, 28 de março de 2013 13:50Moderador -
Anderson,
Sou "obrigado" a falar também que a trigger funciona, mas mais eficiente e menos perigoso seria um gerenciamento desses usuarios e a simples não criação de logins via Windows Authentication.Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Sugerido como Resposta Alexandre Matayosi quinta-feira, 28 de março de 2013 13:58
- Marcado como Resposta Fabrizzio CaputoModerator quinta-feira, 28 de março de 2013 14:53
quinta-feira, 28 de março de 2013 13:52Moderador -
Anderson,
Tem certeza que o usuario é o SA? A exclusão da trigger é simples e pode ser feita via interface grafica conforme abaixo:
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Marcado como Resposta Junior Galvão - MVPMVP, Moderator segunda-feira, 23 de dezembro de 2019 01:24
quinta-feira, 28 de março de 2013 17:43Moderador
Todas as Respostas
-
Anderson,
São 2 coisas distintas, voce quer impedir o bloqueio de pessoas com SysAdmin com exceção do SA ou quer impedir o bloqueio de pessoa via Windows Authentication.
Podemos ter pessoas com login sql e SysAdmin, assim como podemos ter pessoas com Windows Authentication e SysAdmin.
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.comquinta-feira, 28 de março de 2013 13:30Moderador -
Olá Fabrizzio...
O que eu preciso é " impedir o bloqueio de pessoa via Windows Authentication", é como coloquei no post "Não sei se está é a forma correta ou se tem outra forma? ".
Se você puder me auxiliar nesta questão agradeço!
quinta-feira, 28 de março de 2013 13:43 -
AndersonFC,
A trigger abaixo barra o login via windows authentication uma vez que pelo SQL Server temos apenas os meios:
1 - Windows Authentication
2 - Mixed Mode (Windows Authentication + SQL Server Authentication)
Ou seja, não temos apenas SQL Server Authentication.
Apenas tome cuidado com a mesma pois ela esta sem backdoor, ou seja, TODOS! os usuarios via Windows Authentication serão barrados.
CREATE TRIGGER ImpedeConexaoViaWindowsAuthentication ON ALL SERVER WITH EXECUTE AS 'sa' FOR LOGON AS BEGIN IF(EXISTS(SELECT TOP 1 1 FROM sys.dm_exec_sessions WHERE is_user_process = 1 AND LEN(LTRIM(RTRIM(nt_domain))) > 0 AND original_login_name LIKE ORIGINAL_LOGIN())) ROLLBACK; END;
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Marcado como Resposta Fabrizzio CaputoModerator quinta-feira, 28 de março de 2013 14:53
quinta-feira, 28 de março de 2013 13:50Moderador -
Anderson,
Sou "obrigado" a falar também que a trigger funciona, mas mais eficiente e menos perigoso seria um gerenciamento desses usuarios e a simples não criação de logins via Windows Authentication.Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Sugerido como Resposta Alexandre Matayosi quinta-feira, 28 de março de 2013 13:58
- Marcado como Resposta Fabrizzio CaputoModerator quinta-feira, 28 de março de 2013 14:53
quinta-feira, 28 de março de 2013 13:52Moderador -
Olá Fabrizzio...
Funcionou 100% na minha máquina!!!
Só gostaria de saber se entendi o porcesso corretamente:
1) Este sccript cria uma trigger que verifica os dados da "sys.dm_exec_sessions"
2) Caso a trigger encontre um registro com as características colocadas aqui:
SELECT TOP 1 1
FROM sys.dm_exec_sessions
WHERE is_user_process = 1
AND LEN(LTRIM(RTRIM(nt_domain))) > 0
AND original_login_name
LIKE ORIGINAL_LOGIN()))Apagao registro com o ROLLBACK.
3) Para retornar a permitir Windows Athentication é só Logar com o usuário SA(SQL Authentication) e excluir a trigger
Muito obrigado
- Marcado como Resposta AndersonFC quinta-feira, 28 de março de 2013 14:47
- Não Marcado como Resposta Fabrizzio CaputoModerator quinta-feira, 28 de março de 2013 14:53
quinta-feira, 28 de março de 2013 14:40 -
Anderson,
1 - Sim
2 - Sim, pega os dados de conexão do usuario que esta fazendo a autenticação, caso seja encontrado ele da ROLLBACK na ação de login.
3 - Isso mesmo, qualquer usuario com permissão SysAdmin e autenticação via SQL Server consegue excluir a trigger.
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.comquinta-feira, 28 de março de 2013 14:42Moderador -
Fabrizzio...
Sua solução funcionou perfeitamente, muito obrigado pela atenção e presteza!!!
quinta-feira, 28 de março de 2013 14:49 -
Fabrizzio...
Quando vou excluir a trigger(DROP TRIGGER ImpedeConexaoViaWindowsAuthentication) esta retornando:
Cannot drop the trigger 'ImpedeConexaoViaWindowsAuthentication', because it does not exist or you do not have permission.
Eu estou logando com o usuário SA!
- Editado AndersonFC quinta-feira, 28 de março de 2013 17:42
quinta-feira, 28 de março de 2013 17:38 -
Anderson,
Tem certeza que o usuario é o SA? A exclusão da trigger é simples e pode ser feita via interface grafica conforme abaixo:
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Marcado como Resposta Junior Galvão - MVPMVP, Moderator segunda-feira, 23 de dezembro de 2019 01:24
quinta-feira, 28 de março de 2013 17:43Moderador -
Fabrizzio...
Pela interface do SQL Server exclui sem problema!!! Mais uma vez obrigado.
quinta-feira, 28 de março de 2013 19:39