Arquitetura de conectividade de uma Instância Gerenciada de SQL
Aplica-se a:Instância Gerenciada de SQL do Azure
Este artigo descreve a arquitetura de conectividade da Instância Gerenciada de SQL do Azure e como os componentes direcionam o tráfego de comunicação para uma instância gerenciada.
Visão geral
Na Instância Gerenciada de SQL, uma instância é colocada na rede virtual do Azure e na sub-rede dedicada para instâncias gerenciadas. A implantação fornece:
- Um endereço IP local de rede virtual seguro (VNet-local).
- A possibilidade de conectar uma rede local a uma Instância Gerenciada de SQL.
- A possibilidade de conectar uma Instância Gerenciada de SQL a um servidor vinculado ou a outro armazenamento de dados local.
- A possibilidade de conectar uma Instância Gerenciada de SQL a recursos do Azure.
Arquitetura de alto nível de conectividade
A Instância Gerenciada de SQL é composta por componentes de serviço hospedados em um conjunto dedicado de máquinas virtuais isoladas que são agrupadas por atributos de configuração semelhantes e unidas a um cluster virtual. Alguns componentes de serviço são implantados na sub-rede da rede virtual do cliente, enquanto outros serviços operam em um ambiente de rede seguro gerenciado pela Microsoft.
Os aplicativos do cliente podem se conectar à Instância Gerenciada de SQL e consultar e atualizar bancos de dados na rede virtual, rede virtual emparelhada ou rede conectada por VPN ou Azure ExpressRoute.
O diagrama a seguir mostra entidades que se conectam a uma Instância Gerenciada de SQL. Mostra também os recursos que precisam se comunicar com uma instância gerenciada. O processo de comunicação descrito na parte inferior do diagrama representa os aplicativos e ferramentas do cliente que se conectam à Instância Gerenciada de SQL como fonte de dados.
A Instância Gerenciada de SQL é uma oferta de plataforma como serviço de locatário único que opera em dois planos: no plano de dados e no painel de controle.
O plano de dados é implantado na sub-rede do cliente para proporcionar compatibilidade, conectividade e isolamento de rede. O plano de dados depende de serviços do Azure, como o armazenamento do Azure, o Microsoft Entra ID (antigo Azure Active Directory) para autenticação e os serviços de coleta de telemetria. Você verá o tráfego originado em sub-redes que contêm a Instância Gerenciada de SQL indo para esses serviços.
O painel de controle carrega as funções de implantação, gerenciamento e manutenção do serviço principal por meio de agentes automatizados. Esses agentes têm acesso exclusivo aos recursos de computação que operam o serviço. Você não pode usar ssh
o ou o Protocolo de Área de Trabalho Remota para acessar esses hosts. Todas as comunicações do painel de controle são criptografadas e assinadas por meio de certificados. Para verificar a confiabilidade dos participantes da comunicação, a Instância Gerenciada de SQL verifica constantemente esses certificados usando as listas de certificados revogados.
Visão geral da comunicação
Os aplicativos podem se conectar à Instância Gerenciada de SQL por meio de três tipos de pontos de extremidade: de ponto de extremidade local da VNet, de ponto de extremidade público e pontos de extremidade privados. Esses pontos de extremidade exibem propriedades e comportamentos distintos adequados para cenários diferentes.
Ponto de extremidade local da VNet
O ponto de extremidade local da VNet é o meio padrão para se conectar à Instância Gerenciada de SQL. É um nome de domínio na forma de <mi_name>.<dns_zone>.database.windows.net
. Esse nome de domínio é resolvido para um endereço IP do intervalo de endereços da sub-rede. O ponto de extremidade local da VNet pode ser usado para conectar a uma Instância Gerenciada de SQL em todos os cenários de conectividade padrão. A porta do ponto de extremidade local da VNet é 1433.
O ponto de extremidade local da VNet dá suporte a tipos de conexão de proxy e redirecionamento.
Ao se conectar ao ponto de extremidade local da VNet, sempre use seu nome de domínio e permita o tráfego de entrada nas portas necessárias em todo o intervalo de sub-rede, pois o endereço IP subjacente às vezes pode mudar.
Ponto de extremidade público
O ponto de extremidade público é um nome de domínio na forma de <mi_name>.public.<dns_zone>.database.windows.net
. Esse nome de domínio direciona para um endereço IP público acessível a partir da Internet. O ponto de extremidade público é adequado para cenários em que uma instância gerenciada precisa estar acessível por meio da Internet pública, por exemplo, ao se conectar a ela de uma rede virtual diferente quando pontos de extremidade privados ou de emparelhamento não estão disponíveis. Os pontos de extremidade públicos transmitem apenas o tráfego do cliente e não podem ser usados para replicação de dados entre duas instâncias, como grupos de failover ou Link de Instância Gerenciada. A porta do ponto de extremidade público é 3342.
O ponto de extremidade público sempre usa o tipo de conexão proxy, independentemente das configurações do tipo de conexão.
Ao se conectar ao ponto de extremidade público, sempre use seu nome de domínio e permita o tráfego de entrada na porta 3342 em toda a faixa da sub-rede, pois o endereço IP subjacente pode mudar ocasionalmente.
Saiba como configurar um ponto de extremidade público em Configurar ponto de extremidade público para Instância Gerenciada de SQL do Azure.
Pontos de extremidade privados
Um ponto de extremidade privado é um endereço IP fixo opcional em outra rede virtual que conduz o tráfego para a sua instância gerenciada de SQL. Uma Instância Gerenciada de SQL do Azure pode ter vários pontos de extremidade privados em várias redes virtuais. Os pontos de extremidade privados transmitem apenas o tráfego do cliente e não podem ser usados para replicação de dados entre duas instâncias, como grupos de failover ou Link de Instância Gerenciada. A porta do ponto de extremidade privado é 1143.
Os pontos de extremidade privados sempre usam o tipo de conexão proxy, independentemente das configurações do tipo de conexão.
Ao se conectar a um ponto de extremidade privado, sempre use o nome de domínio, pois ainda não há suporte para a conexão com a Instância Gerenciada de SQL do Azure por meio do seu endereço IP. Porém, o endereço IP de um ponto de extremidade privado não muda.
Saiba mais sobre pontos de extremidade privados e como configurá-los em Link Privado do Azure para Instância Gerenciada de SQL do Azure.
Arquitetura de conectividade do cluster virtual
O diagrama a seguir mostra o layout conceitual da arquitetura do cluster virtual:
O nome de domínio do ponto de extremidade local VNet é resolvido para o endereço IP privado de um balanceador de carga interno. Embora esse nome de domínio esteja registrado em uma zona pública do Sistema de Nome de Domínio (DNS) e possa ser resolvido publicamente, seu endereço IP pertence ao intervalo de endereços da sub-rede e só pode ser acessado de dentro de sua rede virtual por padrão.
O balanceador de carga direciona o tráfego para um gateway da Instância Gerenciada de SQL. Como várias instâncias gerenciadas podem ser executadas no mesmo cluster, o gateway usa o nome do host da Instância Gerenciada de SQL, como visto na cadeia de caracteres, para redirecionar o tráfego para o serviço de mecanismo SQL correto.
O valor para dns-zone
é gerado automaticamente quando você cria um cluster. Se um cluster recém-criado estiver hospedando uma instância gerenciada secundária, ele compartilhará sua ID de zona com o cluster primário.
Requisitos de rede
A Instância Gerenciada de SQL do Azure exige que os aspectos da sub-rede delegada sejam configurados de maneiras específicas, o que você pode obter usando a configuração de sub-rede auxiliada pelo serviço. Além do que o serviço exige, os usuários têm controle total sobre a configuração de rede da sub-rede, como:
- Permitir ou bloquear o tráfego em algumas ou todas as portas
- Adicionar entradas à tabela de rotas para rotear o tráfego por meio de dispositivos de rede virtual ou de um gateway
- Configurar a resolução DNS personalizada ou
- Configurar o emparelhamento ou uma VPN
Para atender aos critérios de "Configuração de Rede Compatível" no Contrato de Nível de Serviço para o Microsoft Online Services, a rede virtual e a sub-rede na qual a Instância Gerenciada de SQL é implantada devem atender aos seguintes requisitos:
- Sub-rede dedicada: a sub-rede usada pela Instância Gerenciada de SQL só pode ser delegada ao serviço da Instância Gerenciada de SQL. Ela não pode ser uma sub-rede de gateway, e você só pode implantar os recursos da Instância Gerenciada de SQL nela.
- Delegação de sub-rede: A sub-rede da Instância Gerenciada de SQL deve ser delegada ao provedor de recursos de
Microsoft.Sql/managedInstances
. - Grupo de segurança de rede: precisa ser associado à sub-rede da Instância Gerenciada de SQL. Você pode usar um grupo de segurança de rede para controlar o acesso ao ponto de extremidade de dados da Instância Gerenciada de SQL filtrando o tráfego na porta 1433 e nas portas 11000 – 11999 quando a Instância Gerenciada de SQL estiver configurada para conexões de redirecionamento. O serviço automaticamente provisiona as regras e as mantém atualizadas para permitir o fluxo ininterrupto do tráfego de gerenciamento.
- Tabela de rotas: uma tabela de rotas precisa estar associada à sub-rede da Instância Gerenciada de SQL. Você pode adicionar entradas a essa tabela de rotas, por exemplo, para encaminhar o tráfego para locais por meio de um gateway de rede virtual, ou para adicionar a rota 0.0.0.0/0 padrão direcionando todo o tráfego por meio de um dispositivo de rede virtual, como um firewall. A Instância Gerenciada de SQL do Azure provisiona e gerencia automaticamente suas entradas necessárias na tabela de rotas.
- Endereços IP suficientes: a sub-rede da Instância Gerenciada de SQL deve ter pelo menos 32 endereços IP. Para obter mais informações, consulte Determinar o tamanho da sub-rede para Instância Gerenciada de SQL. Você pode implantar instâncias gerenciadas na rede existente após configurá-las para cumprir os requisitos de rede para a Instância Gerenciada de SQL. Caso contrário, crie uma nova rede e sub-rede.
- Permitido pelas políticas do Azure: se você usa o Azure Policy para evitar a criação ou a modificação de recursos no escopo que inclui a sub-rede ou a rede virtual da Instância Gerenciada de SQL, essas políticas não devem impedir a Instância Gerenciada de SQL de gerenciar os recursos internos. Os seguintes recursos precisam ser excluídos dos efeitos de negação da política para operação normal:
- Recursos do tipo
Microsoft.Network/serviceEndpointPolicies
, quando o nome do recurso começa com\_e41f87a2\_
- Todos os recursos do tipo
Microsoft.Network/networkIntentPolicies
- Todos os recursos do tipo
Microsoft.Network/virtualNetworks/subnets/contextualServiceEndpointPolicies
- Recursos do tipo
- Bloqueios na rede virtual: os Bloqueios na rede virtual da sub-rede dedicada, do grupo de recursos pai ou da assinatura ocasionalmente podem interferir nas operações de gerenciamento e manutenção da Instância Gerenciada de SQL do Azure. Tome cuidado especial ao usar esses bloqueios.
- registros DNS públicos resolvíveis: Se a rede virtual estiver configurada para usar um servidor DNS personalizado, o servidor DNS deverá ser capaz de resolver registros DNS públicos. Usar recursos como a autenticação do Microsoft Entra pode exigir a resolução de mais nomes de domínio totalmente qualificados (FQDNs). Para obter mais informações, confira Resolver nomes DNS privados na Instância Gerenciada de SQL do Azure.
- Registros DNS necessários: as instâncias gerenciadas dependem de ter determinados nomes de domínio resolvidos corretamente. Esses nomes de domínio não devem ser sobrescritos em suas redes virtuais, seja via zonas DNS privadas do Azure ou por um servidor DNS personalizado. Caso contrário, as instâncias gerenciadas não serão implantadas ou poderão ficar indisponíveis. Os domínios a seguir não devem ser substituídos:
windows.net
,database.windows.net
,core.windows.net
,blob.core.windows.net
,table.core.windows.net
,management.core.windows.net
,monitoring.core.windows.net
,queue.core.windows.net
,graph.windows.net
,login.microsoftonline.com
,login.windows.net
,servicebus.windows.net
evault.azure.net
. Porém, observe que você ainda pode criar pontos de extremidade privados dentro da rede virtual de uma instância gerenciada, mesmo para recursos nos domínios mencionados acima. Os pontos de extremidade privados usam um mecanismo DNS que não exige que um servidor DNS local se torne autoritativo para uma zona inteira. - AzurePlatformDNS: o uso da marca de serviço do AzurePlatformDNS para bloquear a resolução de DNS da plataforma pode tornar as Instâncias Gerenciadas de SQL indisponíveis. Embora a Instância Gerenciada de SQL dê suporte ao DNS definido pelo cliente para a resolução de DNS dentro do mecanismo, há uma dependência do DNS do Azure para operações da plataforma.
Configuração de sub-rede auxiliada por serviço
Para melhorar a segurança, a capacidade de gerenciamento e a disponibilidade do serviço, a Instância Gerenciada de SQL usa a configuração de sub-rede auxiliada pelo serviço e a política de intenção de rede na infraestrutura de rede virtual do Azure para configurar a rede, os componentes associados e a tabela de rotas, a fim de garantir que os requisitos mínimos da Instância Gerenciada de SQL sejam atendidos.
A segurança da rede e as regras da tabela de rotas configuradas automaticamente são visíveis para o cliente e anotadas com um destes prefixos:
Microsoft.Sql-managedInstances_UseOnly_mi-
para regras e rotas obrigatóriasMicrosoft.Sql-managedInstances_UseOnly_mi-optional-
para regras e rotas opcionais
Para obter mais detalhes, examine a configuração da sub-rede auxiliada pelo serviço.
Para obter mais informações sobre a arquitetura de conectividade e o tráfego de gerenciamento, confira a seção Arquitetura de conectividade de alto nível.
Restrições de rede
As seguintes restrições em recursos de rede virtual e tráfego estão em vigor:
- Sub-redes privadas: no momento, não há suporte para a implantação de instâncias gerenciadas em sub-redes privadas (em que o acesso de saída padrão esteja desabilitado).
- Database Mail para retransmissões SMTP externas na porta 25: o envio de Database Mail pela porta 25 para serviços de hospedagem de email externos só está disponível para determinados tipos de assinatura no Microsoft Azure. Instâncias em outros tipos de assinatura devem usar uma porta diferente (por exemplo, 587) para contatar retransmissões SMTP externas. Caso contrário, as instâncias podem falhar ao entregar Database Mail. Para saber mais, confira Solucionar problemas de conectividade de SMTP de saída no Azure.
- Emparelhamento da Microsoft: habilitar o Emparelhamento da Microsoft em circuitos do ExpressRoute emparelhados direta ou transitivamente com a rede virtual em que a Instância Gerenciada de SQL reside afeta o fluxo de tráfego entre componentes da Instância Gerenciada de SQL na rede virtual e os serviços dos quais ela depende. Pode resultar em problemas de disponibilidade. É esperado que haja falha em implantações da Instância Gerenciada de SQL na rede virtual que já tenham o emparelhamento da Microsoft habilitado.
- Emparelhamento de rede virtual global: a conectividade do Emparelhamento de rede virtual entre regiões do Azure não funciona para Instâncias Gerenciadas de SQL colocadas em sub-redes criadas antes de 9 de setembro de 2020.
- Emparelhamento de rede virtual – configuração: ao estabelecer o emparelhamento de rede virtual entre redes virtuais que contenham sub-redes com Instâncias Gerenciadas de SQL, essas sub-redes devem usar tabelas de rotas e grupos de segurança de rede (NSG) diferentes. A reutilização da tabela de rotas e do NSG em duas ou mais sub-redes participantes do emparelhamento de rede virtual causará problemas de conectividade em todas as sub-redes que usam essas tabelas de rotas ou NSG, além de levar à falha das operações de gerenciamento da Instância Gerenciada de SQL.
- Gateway da NAT: usar a NAT da Rede Virtual do Azure para controlar a conectividade de saída com um endereço IP público específico torna a Instância Gerenciada de SQL indisponível. O serviço da Instância Gerenciada de SQL atualmente está limitado ao uso do balanceador de carga básico que não permite a coexistência de fluxos de entrada e saída com NAT da Rede Virtual do Azure.
- IPv6 para rede virtual do Azure: é esperado que haja falha em implantações de Instância Gerenciada de SQL em redes virtuais IPv4/IPv6 de pilha dupla. Associar um grupo de segurança de rede ou uma tabela de rotas a UDRs (rotas definidas pelo usuário) que contenham prefixos de endereço IPv6 para uma sub-rede da Instância Gerenciada de SQL torna a Instância Gerenciada de SQL indisponível. E adicionar prefixos de endereço IPv6 a um grupo de segurança de rede ou UDR que já esteja associado a uma sub-rede de instância gerenciada torna a Instância Gerenciada de SQL indisponível. É esperado que haja falha em implantações de uma Instância Gerenciada de SQL em sub-redes com um grupo de segurança de rede e UDR que já tenham prefixos IPv6.
- TLS 1.2 é imposta em conexões de saída: a partir de janeiro de 2020, a Microsoft impôs o TLS 1.2 para tráfego interno de todos os serviços do Azure. Na Instância Gerenciada de SQL, isso causava a imposição do TLS 1.2 nas conexões de saída usadas para replicação e nas conexões de servidor vinculado com o SQL Server. Se você usar uma versão do SQL Server anterior a 2016 com a Instância Gerenciada de SQL, certifique-se de aplicar as atualizações específicas do TLS 1.2.
- Fallback interno para DNS do Azure: as instâncias gerenciadas dependem da resolução correta de DNS em suas redes virtuais. Se a rede virtual de uma instância gerenciada estiver configurada para usar servidores DNS personalizados e uma solicitação DNS emitida para servidores DNS personalizados não for concluída em um determinado intervalo (de 1 a 2 segundos), a instância gerenciada repetirá a solicitação em DNS do Azure nessa rede virtual.
Conteúdo relacionado
- Confira O que é a Instância Gerenciada de SQL do Azure? para ter uma visão geral.
- Para saber mais, confira
- Arquitetura do cluster virtual
- Configuração de sub-rede auxiliada por serviço
- Configurar uma nova rede virtual do Azure ou uma rede virtual existente do Azure na qual você possa implantar uma Instância Gerenciada de SQL.
- Calcule o tamanho da sub-rede na qual você deseja implantar uma Instância Gerenciada de SQL.
- Saiba como criar uma instância gerenciada: