Conectando no SQL Server utilizando Credencial do Windows

Olá pessoal, tudo certo?

No post de hoje vou compartilhar um caso do dia-a-dia que tive que atender e achei bem interessante.

Como muitos sabem, neste momento obscuro da humanidade causado pelo COVID-19, muitas empresas tem implementado a rotina de trabalho home-office, o que creio que será o futuro de muitas empresas, mesmo quando essa pandemia acabar.

Entendendo o cenário:

Uma das empresas que atendo implementou a rotina de trabalho home-office. Com isso, foi solicitado que as pessoas que precisam acessar o banco de dados continuem utilizando o método de autenticação “Windows Authentication”.

Os desenvolvedores fazem o acesso da seguinte forma:

  • Utilizam os seus computadores pessoais;
  • Conectam na VPN da empresa;
  • Conectam diretamente no servidor utilizando um Remote Desktop;
  • Por fim, acessam o banco de dados usando o SSMS com a autenticação “Windows Authentication”.

O cenário desejado para os desenvolvedores é:

  • Que eles parem de utilizar o Remote Desktop para acessar diretamente o servidor;
  • Passem a utilizar o seu próprio computador pessoal para acessar o banco de dados via SSMS (SQL Server Management Studio). Entretanto, eles ainda precisam utilizar a autenticação “Windows Authentication”.

Solução:

Pensei em algumas soluções possíveis:

  • Publicar somente o SSMS no Remote Desktop, mas isso não atenderia à solicitação do cliente, pois eles continuariam utilizando o Remote Desktop; (solução descartada)
  • Outra solução pensada foi utilizar o AD Azure, mas também demandaria tempo e custo; (solução descartada)
  • Por fim, trocando uma ideia com o Wiluey Sousa, ele sugeriu criar as credenciais no Cofre de Credenciais do Windows. (solução utilizada!)

Agora vou mostrar um passo a passo de como podemos fazer isso!

Step-by-Step:

Em primeiro lugar, vamos abrir o “Control Panel” e pesquisar por “credential”.

No “Credential Manager”, selecione o “Windows Credentials” -à “Add a Windows credential”.

Nas credenciais, devemos cria-la utilizando o Endereço IP. Se você preferir utilizar o FQDN, será necessário adicionar uma entrada no Registro do Host do Windows. Agora vou mostrar como podemos fazer essas duas configurações. Vamos lá!

Criando a credencial utilizando o Endereço IP:

  • Internet or network address – Nome do Servidor ou Endereço IP a ser utilizado. Um ponto muito importante é informar a PORTA do serviço do SQL Server. No meu caso, estou utilizando a porta 1433 (porta padrão do SQL Server).
  • User Name – Informar o Nome do Usuário que você vai utilizar para se autenticar no AD.
  • Password – Informar a Senha do Usuário. Um ponto de atenção é que se você digitar a senha errada ele não vai dar erro para criar a credencial, porém ao tentar se autenticar no SQL Server vai dar erro.

Ao criar a credencial, nós estamos vinculando o nosso usuário local com o usuário do servidor (Windows Authentication), como se estivéssemos utilizando o Remote Desktop.

Depois disso, no SSMS devemos informar o IP e selecionar o “Windows Authentication”.

Mesmo utilizando o “User Name” com o nome do seu usuário local, na verdade você vai se conectar no banco de dados utilizando a credencial no AD que você criou anteriormente.

Após conseguir conectar no banco de dados, podemos fazer um teste e visualizar as sessões utilizando o script abaixo:

SELECT conn.session_id, host_name, program_name,
    nt_domain, login_name, connect_time, last_request_end_time 
FROM sys.dm_exec_sessions AS sess
JOIN sys.dm_exec_connections AS conn
   ON sess.session_id = conn.session_id;

Como podemos ver, o “login_name” está utilizando o usuário do domínio ao invés do usuário local que tinha aparecido na tela de conexão do SSMS! Show, conseguimos!!!

Criando a credencial utilizando o FQDN:

As informações são as mesmas da configuração utilizando o IP, a única diferença é que agora você deverá colocar o nome do DNS, mantendo a porta também.

Para conectar no SSMS é necessário adicionar as entradas na tabela de hosts do WindowsC:\Windows\System32\drivers\etc\hosts”.

Após adicionar as entradas na tabela de hosts, basta conectar no SSMS normalmente.

 SELECT conn.session_id, host_name, program_name,
    nt_domain, login_name, connect_time, last_request_end_time 
FROM sys.dm_exec_sessions AS sess
JOIN sys.dm_exec_connections AS conn
   ON sess.session_id = conn.session_id;

Essa foi a solução implementada no cliente! Espero que se vocês passarem por uma necessidade deste tipo, essa solução também possa ser útil.

Bom pessoal por hoje é isso.

Abraços,

Tiago Neves

3 Comments

Deixe uma resposta