Managed Instance – Como se conectar direto do SSMS utilizando uma VPN?
Fala Pessoal,
No meu post anterior criamos uma MI.
Mas e ai Fabrício, como eu acesso o MI? Tentei aqui e não funcionou…
Antes de seguir, sugiro ler os posts anteriores caso ainda naõ tenha visto:
- https://www.fabriciolima.net/blog/2018/03/17/azure-sql-db-managed-instance-introducao/
- https://www.fabriciolima.net/blog/2018/11/16/managed-instance-criando-minha-primeira-instancia/
Após concluir a criação do Managed Instance, clicando nele, podemos ver essa mensagem destacada em verde:
O Azure nos fornece duas opções para acessar o MI via SSMS, uma através de uma VM com SSMS e outra através de uma VPN com o SSMS na sua máquina.
O Azure fornece scripts em powershell prontos para configurar tudo para vocês.
Contudo, eu tentei rodar os as duas opções, coloquei os parâmetros do meu ambiente, mas nenhum dos dois funcionou. Façam um teste e dando certo comentem aqui no post para eu saber.
Nesse post vamos fazer manualmente a configuração da VPN. Em um próximo posso falar do acesso via VM (nesse caso você terá um custo para manter essa VM a mais).
O primeiro passo é criarmos um Virtual Network Gateway para nossa VPN:
1 – Clica em Create a Resource.
2 – Digite Virtual Network Gateway.
3 – Clique em Create.
Em seguida, abra o recurso criado e configure conforme abaixo:
1 – Escolha um nome para o seu Gateway.
2 – Utilize a vnet que foi criada quando criamos nossa MI no post anterior.
3 – Dê um nome para o IP que será gerado automaticamente.
4 – Escolha a subscription.
5 – Utilize a mesma localização que criou o MI.
Clique em CREATE.
Após concluir o deploy, olhando meu Resource Group onde coloquei tudo da minha instância gerenciada, podemos ver que temos 2 novos objetos:
- Public Ip Adress
- Virtual Network Gateway
Abra o Virtual Network Gateway que acabamos de criar:
1 – Clique em Point-to-site configuration
2 – Adicione um Address pool. É um range de ip privado que temos que especificar. Os clientes que se conectam através da nossa VPN vão receber um IP desse dinamicamente.
3 – O item 3 é um pouco chato de se fazer.
Para gerar e exportar o certificado da nossa VPN (item 3 da figura), vamos seguir o documento abaixo:
- https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-certificates-point-to-site#clientcert
Primeiro temos que rodar esse comando powershell para criar nosso certificado root:
1 2 3 4 |
$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature ` -Subject "CN=P2SRootCertMIbusinessCritical" -KeyExportPolicy Exportable ` -HashAlgorithm sha256 -KeyLength 2048 ` -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSign |
Coloquei esse nome no meu: P2SRootCertMIbusinessCritical
Logo em seguida, na tela do powershell temos que rodar o comando abaixo para gerar o certificado que já é automaticamente instalado em nossa máquina.
Todo computador que vai conectar na nossa VNet tem que ter esse certificado instalado.
1 2 3 4 5 |
New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature ` -Subject "CN=P2SChildCertmibusinesscritical" -KeyExportPolicy Exportable ` -HashAlgorithm sha256 -KeyLength 2048 ` -CertStoreLocation "Cert:\CurrentUser\My" ` -Signer $cert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2") |
Coloquei esse nome no meu: P2SChildCertmibusinesscritical
Segue os dois certificados criados na minha máquina (win+certmgr.msc para visualizar).
O próximo passo é exportar o certificado root para gerar o código e colocar no Azure (item 3).
Ainda na tela do certificado, clique no certificado Root (P2SRootCertMIbusinessCritical) com o botão direito->All Taks->Export
No link que coloquei tem os prints em detalhes, aqui vou só descrever para encurtar o post.
Abrindo a tela, clique em next->Mantenha a opção “No”->Nessa próxima tela mude para “Base-64 encoded X.509(.CER)”->Escolha um caminho e salve o certificado->Finish
Abra o certificado que acabou de salvar em um bloco de notas e copie o texto gerado conforme o print abaixo (meu arquivo se chama rootBC):
Agora basta copiar esse código e colocar na configuração do Gateway que estamos criando para nossa VPN (item 3):
Coloque o nome do arquivo do certificado e o código que copiamos desse arquivo.
4 – O último passo é fazer o Download do arquivo de configuração da nossa VPN.
Baixe ele, quando abrir verá 3 pastas, execute de acordo com a arquitetura da sua máquina (no meu caso rodei o da pasta WindowsAmd64).
Abra as vpn do windows, vai ver a VPN já criada “vnet-mibusinesscritical”. Se tudo deu certo, vai conseguir conectar:
Após logado na VPN, para conectar via SSMS é parecido com o Azure SQL Database.
Pegue o endereço da instância no portal e autentique com o usuário e senha que criou:
Ufa! Depois de todo esse trabalho, finalmente consegui me conectar:
Agradeço novamente ao Dimitri que citei no post anterior. Estava batendo cabeça para fazer isso funcionar na minha máquina.
Quem tiver créditos no Azure para testar, faça e me dê o feedback se deu tudo certo.
Até o próximo post.
Abraços,
Fabrício Lima
Microsoft Data Platform MVP
Consultor e Instrutor SQL Server
Trabalha com SQL Server desde 2006