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.

Diagrama que mostra a arquitetura de conectividade de alto nível para a Instância Gerenciada de SQL do Azure após novembro de 2022.

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.

Diagrama que mostra entidades na arquitetura de conectividade para Instância Gerenciada de SQL do Azure após novembro de 2022.

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. Esses pontos de extremidade atendem a cenários diferentes e exibem propriedades e comportamentos de rede distintos.

Diagrama que mostra o escopo de visibilidade para VNet-local, pontos de extremidade públicos e privados para uma Instância Gerenciada de SQL do Azure.

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. O ponto de extremidade VNet-local é um nome de domínio com o formato <mi_name>.<dns_zone>.database.windows.net que é resolvido para um endereço IP do pool de endereços da sub-rede, daí o nome local da VNet, ou um ponto de extremidade local para a rede virtual. 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.

Os pontos de extremidade locais da VNet oferecem suporte para os tipos de conexão de proxy e de redirecionamento.

Ao conectar-se ao ponto de extremidade local da VNet, sempre use seu nome de domínio, pois o endereço IP subjacente pode mudar ocasionalmente.

Ponto de extremidade público

O ponto de extremidade público é um nome de domínio opcional com o formato <mi_name>.public.<dns_zone>.database.windows.net que é resolvido para um endereço IP público acessível pela Internet. O ponto de extremidade público permite que o tráfego TDS chegue apenas à Instância Gerenciada de SQL na porta 3342 e não pode ser usado para cenários de integração, como grupos de failover, link de Instância Gerenciada e tecnologias semelhantes.

Ao conectar-se ao ponto de extremidade público, sempre use o nome de domínio, pois o endereço IP subjacente pode alterar ocasionalmente.

O ponto de extremidade público sempre usa o tipo de conexão proxy, independentemente das configurações do tipo de conexão.

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 permitem que o tráfego TDS alcance apenas a Instância Gerenciada de SQL na porta 1433 e não podem ser usados para cenários de integração, como grupos de failover, link de Instância Gerenciada e outras tecnologias semelhantes.

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.

Os pontos de extremidade privados sempre usam o tipo de conexão proxy, independentemente das configurações do tipo de conexão.

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:

Diagrama que mostra a arquitetura de conectividade do cluster virtual para a Instância Gerenciada de SQL do Azure.

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

A sub-rede na qual a Instância Gerenciada de SQL é implantada precisa 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
  • 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.
  • Tráfego de replicação: o tráfego de replicação para grupos de failover entre duas Instâncias gerenciadas deve ser direto e não direcionado por meio de uma rede de hubs.
  • Servidor DNS personalizado: se a rede virtual estiver configurada para usar um servidor DNS personalizado, esse servidor precisará conseguir 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.

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órias
  • Microsoft.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

  • 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.

No momento, não há suporte para os seguintes recursos de rede virtual com Instância Gerenciada de SQL:

  • 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 da Instância Gerenciada 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.
  • 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 ofereça suporte ao DNS definido pelo cliente para a resolução DNS no mecanismo, há dependência no DNS da plataforma para operações da plataforma.
  • 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.
  • Registros DNS para serviços reservados da Microsoft: os seguintes nomes de domínio são reservados e sua resolução, conforme definido no DNS do Azure, não deve ser substituída em uma rede virtual que hospede instâncias gerenciadas: 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 e vault.azure.net. Implantar uma Instância Gerenciada de SQL em uma rede virtual na qual um ou mais desses nomes de domínio tenham sido substituídos, seja por meio de Zonas Privadas do DNS do Azure ou de um servidor DNS personalizado, falhará. Substituir a resolução desses domínios em uma rede virtual que contenha uma instância gerenciada torna essa instância gerenciada indisponível. Para obter informações sobre como configurar registros DNS de Link Privado dentro de uma rede virtual que contenha instâncias gerenciadas, consulte Configuração de DNS do Ponto de Extremidade Privado do Azure.