Use as regras e pontos de extremidade de serviço da rede virtual para os servidores no Banco de Dados SQL do Azure

Aplica-se a:Banco de Dados SQL do AzureAzure Synapse Analytics

As regras da rede virtual são um recurso de segurança de firewall que controla se o servidor para seus bancos de dados e pools elásticos no Banco de Dados SQL do Azure ou para seus bancos de dados do pool SQL dedicado (antigamente chamado de SQL DW) no Azure Synapse Analytics aceita comunicações enviadas de sub-redes específicas nas redes virtuais. Este artigo explica por que as regras de rede virtual são, às vezes, a melhor opção para permitir uma comunicação segura com o banco de dados SQL e o Azure Synapse Analytics.

Observação

Este artigo aplica-se ao Banco de Dados SQL e ao Azure Synapse Analytics. Para simplificar, o termo banco de dados se refere aos bancos de dados no Banco de Dados SQL e no Azure Synapse Analytics. Da mesma forma, as referências a servidor dizem respeito ao servidor lógico que hospeda o banco de dados SQL e o Azure Synapse Analytics.

Para criar uma regra da rede virtual, primeiro, é preciso que haja um ponto de extremidade de serviço de rede virtual para a regra de referência.

Observação

O Microsoft Entra ID era anteriormente conhecido como Azure Active Directory (Azure AD).

Criar uma regra da rede virtual

Se você quer apenas criar uma regra da rede virtual, poderá pular para as etapas e explicação posteriores neste artigo.

Detalhes sobre as regras da rede virtual

Esta seção descreve vários detalhes sobre as regras da rede virtual.

Apenas uma região geográfica

Cada ponto de extremidade de serviço de rede virtual se aplica a apenas uma região do Azure. O ponto de extremidade não permite que outras regiões aceitem a comunicação da sub-rede.

Qualquer regra da rede virtual é limitada à região à qual seu ponto de extremidade subjacente se aplica.

Nível de servidor, não o nível de banco de dados

Cada regra da rede virtual se aplica a todo o seu servidor, não apenas a determinado banco de dados no servidor. Em outras palavras, as regras da rede virtual se aplicam no nível de servidor, não no nível do banco de dados.

Por outro lado, as regras de IP podem ser aplicadas em qualquer nível.

Funções de administração de segurança

Há uma separação de funções de segurança na administração de pontos de extremidade de serviço de rede virtual. A ação é necessária em cada uma das seguintes funções:

  • Administrador de Rede (função de Colaborador de Rede): ativa o ponto de extremidade.
  • Administrador de Banco de dados (função de Colaborador do SQL Server): atualiza a ACL (lista de controle de acesso) para adicionar a sub-rede indicada ao servidor.

Alternativa ao Azure RBAC

As funções de Administrador de banco de dados e Administrador de rede têm mais recursos do que o necessário para gerenciar regras da rede virtual. É necessário apenas um subconjunto de seus recursos.

Você tem a opção de usar o controle de acesso baseado em função (RBAC) no Azure para criar uma única função personalizada que tenha apenas o subconjunto necessário de recursos. Em vez de envolver o Administrador da Rede ou o do Banco de Dados, você pode usar a função personalizada. A área de superfície de sua exposição de segurança será menor se você adicionar um usuário a uma função personalizada em vez de adicioná-lo às outras duas funções principais de administrador.

Observação

Em alguns casos, o banco de dados no Banco de Dados SQL e a sub-rede da rede virtual estão em assinaturas diferentes. Nesses casos, você deve garantir as seguintes configurações:

  • As duas assinaturas devem estar no mesmo locatário do Microsoft Entra.
  • O usuário tem as permissões necessárias para iniciar operações, como habilitar pontos de extremidade de serviço e adicionar uma sub-rede da rede virtual ao servidor.
  • Ambas as assinaturas devem ter o provedor Microsoft.Sql registrado.

Limitações

Para o Banco de Dados SQL, o recurso de regras da rede virtual tem as seguintes limitações:

  • No firewall do seu banco de dados no Banco de Dados SQL, cada regra da rede virtual faz referência a uma sub-rede. Todas essas sub-redes referenciadas devem ser hospedadas na mesma região geográfica que hospeda o banco de dados.
  • Cada servidor pode ter até 128 entradas de ACL para uma rede virtual.
  • As regras da rede virtual se aplicam somente a redes virtuais do Azure Resource Manager; e não a redes do modelo de implantação clássico.
  • A ativação de pontos de extremidade de serviço de rede virtual para o Banco de Dados SQL também ativa os pontos de extremidade do Banco de Dados do Azure para MySQL e do Banco de Dados do Azure para PostgreSQL. Com os pontos de extremidade definidos como ON, as tentativas de conexão dos pontos de extremidade para suas instâncias do Banco de Dados do Azure para MySQL ou do Banco de Dados do Azure para PostgreSQL podem falhar.
    • O motivo por trás disso é que o Banco de Dados do Azure para MySQL e o Banco de Dados do Azure para PostgreSQL provavelmente não têm uma regra da rede virtual configurada. Você precisará configurar uma regra da rede virtual para o Banco de Dados do Azure para MySQL e para o Banco de Dados do Azure para PostgreSQL.
    • Para definir regras de firewall de rede virtual em um servidor lógico do SQL que já esteja configurado com pontos de extremidade privados, defina Negar acesso à rede pública como Não.
  • No firewall, os intervalos de endereços IP se aplicam aos seguintes itens de rede; as regras da rede virtual, não:

Considerações sobre o uso de pontos de extremidade de serviço

Ao usar pontos de extremidade de serviço para o Banco de Dados SQL do Azure, examine as seguintes considerações:

  • É necessária uma saída para IPs públicos do Banco de Dados SQL do Azure. Os NSGs (grupos de segurança de rede) precisam estar abertos para IPs do Banco de Dados SQL para permitir a conectividade. Você pode fazer isso usando marcas de serviço do NSG para o Banco de Dados SQL.

ExpressRoute

Se você usa o ExpressRoute localmente, para emparelhamento público ou emparelhamento da Microsoft, será necessário identificar os endereços IP NAT usados. Para emparelhamento público, cada circuito do ExpressRoute usará dois endereços IP de NAT, que serão aplicados ao tráfego do serviço do Azure quando o tráfego entrar no backbone da rede do Microsoft Azure. Para emparelhamento da Microsoft, os endereços IP de NAT usados são fornecidos pelo cliente ou pelo provedor de serviço. Para permitir o acesso aos recursos do serviço, você deve permitir estes endereços IP públicos na configuração do firewall de IP do recurso. Para localizar os endereços IP do circuito do ExpressRoute de emparelhamento público, abra um tíquete de suporte com o ExpressRoute por meio do Portal do Azure. Para saber mais sobre NAT para o emparelhamento do ExpressRoute público e da Microsoft, confira Requisitos de NAT para o emparelhamento público do Azure.

Para permitir a comunicação do seu circuito com o Banco de Dados SQL, você precisará criar regras de rede IP para os endereços IP públicos do seu NAT.

Impacto do uso de pontos de extremidade de serviço de rede virtual com o Armazenamento do Microsoft Azure

O Armazenamento do Azure implementou o mesmo recurso que permite que você limite a conectividade à sua conta de Armazenamento do Azure. Se optar por usar esse recurso com uma conta de Armazenamento do Microsoft Azure usada pelo Banco de Dados SQL, você poderá ter problemas. A seguir há uma lista e uma descrição de recursos do Banco de Dados SQL e do Azure Synapse Analytics que são afetados por isso.

Instrução COPY e PolyBase do Azure Synapse Analytics

O PolyBase e a instrução COPY são usados normalmente para carregar dados no Azure Synapse Analytics de contas do Armazenamento do Microsoft Azure para uma ingestão de dados com alta taxa de transferência. Se a conta do Armazenamento do Microsoft Azure da qual você está carregando dados limita o acesso apenas a um conjunto de sub-redes de rede virtual, a conectividade com a conta de armazenamento no uso do PolyBase e da instrução COPY falha. Para habilitar os cenários de importação e exportação com o uso de COPY e PolyBase e o Azure Synapse Analytics conectando-se ao Armazenamento do Microsoft Azure protegido por uma rede virtual, siga as etapas desta seção.

Pré-requisitos

  • Instale o PowerShell do Azure. Para saber mais, confira Instalar o módulo Az PowerShell do Azure.
  • Se você tiver uma conta de uso geral v1 ou de Armazenamento de Blobs do Azure, primeiro será necessário atualizar para a versão de uso geral v2 seguindo as etapas em Atualizar para uma conta de armazenamento de uso geral v2.
  • É necessário ativar Permitir que os serviços confiáveis da Microsoft acessem essa conta de armazenamento no menu de configurações Firewalls e redes virtuais da conta do Armazenamento do Microsoft Azure. Habilitar essa configuração permitirá que o PolyBase e a instrução COPY se conectem à conta de armazenamento usando a autenticação forte em que o tráfego de rede permanece no backbone do Azure. Para obter mais informações, confira este guia.

Importante

O módulo do Azure Resource Manager para PowerShell ainda é compatível com o Banco de Dados SQL do Azure, mas todos os desenvolvimentos futuros serão destinados ao módulo Az.Sql. O módulo AzureRM continuará a receber as correções de bugs até pelo menos dezembro de 2020. Os argumentos para os comandos no módulo Az e nos módulos AzureRm são substancialmente idênticos. Para saber mais sobre a compatibilidade entre eles, confira Apresentação do novo módulo Az do Azure PowerShell.

Etapas

  1. Se você tiver um pool de SQL dedicado autônomo (antigo SQL DW), registre o SQL Server no Microsoft Entra ID usando o PowerShell:

    Connect-AzAccount
    Select-AzSubscription -SubscriptionId <subscriptionId>
    Set-AzSqlServer -ResourceGroupName your-database-server-resourceGroup -ServerName your-SQL-servername -AssignIdentity
    

    Essa etapa não é exigida para os pools de SQL dedicados em um espaço de trabalho do Azure Synapse Analytics. A identidade gerenciada atribuída pelo sistema (SA-MI) do workspace é membro da função de Administrador do Synapse e, portanto, tem privilégios elevados nos pools de SQL dedicados do workspace.

  2. Crie uma Conta de armazenamento de uso geral v2 seguindo as etapas em Criar uma conta de armazenamento.

  3. Na página da sua conta de armazenamento, selecione Controle de acesso (IAM).

  4. Selecione Adicionar>Adicionar atribuição de função para abrir a página Adicionar atribuição de função.

  5. Atribua a função a seguir. Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.

    Configuração Valor
    Função Colaborador de dados de blob de armazenamento
    Atribuir acesso a Usuário, grupo ou entidade de serviço
    Membros Servidor ou espaço de trabalho que hospeda o pool de SQL dedicado que você registrou no Microsoft Entra ID

    Screenshot that shows Add role assignment page in Azure portal.

    Observação

    Somente membros com privilégio de Proprietário na conta de armazenamento podem realizar esta etapa. Para conhecer as várias funções internas do Azure, confira Funções internas do Azure.

  6. Para habilitar a conectividade do PolyBase com a conta de Armazenamento do Microsoft Azure:

    1. Crie uma chave mestra de banco de dados se ainda não tiver criado uma anteriormente.

      CREATE MASTER KEY [ENCRYPTION BY PASSWORD = 'somepassword'];
      
    2. Crie uma credencial com escopo de banco de dados com IDENTITY = 'Managed Service Identity' .

      CREATE DATABASE SCOPED CREDENTIAL msi_cred WITH IDENTITY = 'Managed Service Identity';
      
      • Não é necessário especificar SECRET com uma chave de acesso de Armazenamento do Microsoft Azure, porque esse mecanismo usa Identidade gerenciada nos bastidores. Essa etapa não é exigida para os pools de SQL dedicados em um espaço de trabalho do Azure Synapse Analytics. A identidade gerenciada atribuída pelo sistema (SA-MI) do workspace é membro da função de Administrador do Synapse e, portanto, tem privilégios elevados nos pools de SQL dedicados do workspace.

      • O nome IDENTITY deve ser 'Managed Service Identity' para que a conectividade do PolyBase funcione com a conta do Armazenamento do Microsoft Azure protegida por uma rede virtual.

    3. Crie uma fonte de dados externa com o esquema abfss:// para conectar-se a sua conta de armazenamento de uso geral v2 usando o PolyBase.

      CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss WITH (TYPE = hadoop, LOCATION = 'abfss://myfile@mystorageaccount.dfs.core.windows.net', CREDENTIAL = msi_cred);
      
      • Se você já tiver tabelas externas associadas a uma conta de uso geral v1 ou a uma conta de Armazenamento de Blobs, deverá primeiro remover essas tabelas externas. Em seguida, remova a fonte de dados externa correspondente. Em seguida, crie uma fonte de dados externa com o esquema abfss:// que se conecta a uma conta de armazenamento de uso geral v2, como mostrado anteriormente. Em seguida, recrie todas as tabelas externas usando essa nova fonte de dados externa. Use o Assistente para gerar e publicar scripts a fim de gerar scripts de criação para todas as tabelas externas com facilidade.
      • Para obter mais informações sobre o esquema abfss://, confira Usar URI do Azure Data Lake Storage Gen2.
      • Para saber mais sobre os comandos T-SQL, confira CREATE EXTERNAL DATA SOURCE.
    4. Consulte normalmente usando tabelas externas.

Auditoria de blobs do Banco de Dados SQL

A auditoria do SQL do Azure pode gravar os logs de auditoria do SQL na sua conta de armazenamento. Se essa conta de armazenamento usar o recurso de pontos de extremidade de serviço de rede virtual, confira como gravar a auditoria em uma conta de armazenamento por trás da VNet e do firewall.

Adicionar uma regra de firewall de rede virtual ao servidor

Antigamente, antes que esse recurso fosse aprimorado, era necessário ativar os pontos de extremidade de serviço de rede virtual antes de implementar uma regra da rede virtual ativa no firewall. Os pontos de extremidade relacionavam determinada sub-rede de rede virtual a um banco de dados no Banco de Dados SQL. Desde janeiro de 2018, você pode contornar esse requisito definindo o sinalizador IgnoreMissingVNetServiceEndpoint. Agora, você pode adicionar uma regra de firewall de rede virtual ao seu servidor sem ativar os pontos de extremidade de serviço de rede virtual.

A simples configuração de uma regra de firewall não ajuda a proteger o servidor. Você também precisa ativar os pontos de extremidade de serviço de rede virtual para que a segurança comece a funcionar. Quando você ativa pontos de extremidade de serviço, sua sub-rede de rede virtual passa por tempo de inatividade até concluir a transição de desativada para ativada. Esse período de inatividade ocorre principalmente no contexto de grandes redes virtuais. Use o sinalizador IgnoreMissingVNetServiceEndpoint para reduzir ou eliminar o tempo de inatividade durante a transição.

Defina o sinalizador IgnoreMissingVNetServiceEndpoint usando o PowerShell. Para obter mais informações, confira PowerShell para criar uma regra e um ponto de extremidade de serviço de rede virtual para o banco de dados SQL.

Observação

Para obter instruções semelhantes no Azure Synapse Analytics, confira Regras de firewall IP do Azure Synapse Analytics

Usar o portal do Azure para criar uma regra de rede virtual

Esta seção ilustra como você pode usar o portal do Azure para criar uma regra da rede virtual no seu banco de dados do Banco de Bados SQL. A regra informa ao banco de dados para aceitar a comunicação de uma sub-rede específica que foi marcada como sendo um ponto de extremidade de serviço de rede virtual.

Observação

Se você pretende adicionar um ponto de extremidade de serviço às regras de firewall da rede virtual do servidor, verifique se os pontos de extremidade de serviço estão ativados para a sub-rede.

Se os pontos de extremidade de serviço não estão ativados para a sub-rede, o portal pede para você habilitá-los. Selecione o botão Habilitar no mesmo painel em que você adicionou a regra.

Pré-requisitos

Você já deve ter uma sub-rede que esteja marcada com o ponto de extremidade de serviço de rede virtual específico nome do tipo relevante para o banco de dados SQL.

etapas do portal do Azure

  1. Entre no portal do Azure.

  2. Procure e selecione Servidores SQLe selecione seu servidor. Em Segurança, selecione Rede.

  3. Na guia Acesso público, verifique se o Acesso à rede pública está definido como Determinadas redes, caso contrário, as configurações de Redes virtuais ficarão ocultas. Selecione + Adicionar rede virtual existente na seção Redes virtuais.

    Screenshot that shows logical server properties for Networking.

  4. No novo painel Criar/Atualizar, preencha as caixas com os nomes dos recursos do Azure.

    Dica

    Você precisa incluir o prefixo de endereço correto para a sua sub-rede. Você pode encontrar o valor do Prefixo de endereço no Portal. Acesse Todos os recursos>Todos os tipos>Redes virtuais. O filtro exibe suas redes virtuais. Selecione rede virtual e selecione Sub-redes. A coluna INTERVALO DE ENDEREÇOS tem o prefixo de endereço de que você precisa.

    Screenshot that shows filling in boxes for the new rule.

  5. Confira a regra da rede virtual resultante no painel Firewall.

    Screenshot that shows the new rule on the Firewall pane.

  6. Defina Permitir que serviços e recursos do Azure acessem este servidor como Não.

    Importante

    Se você mantiver Permitir que os serviços e recursos do Azure acessem este servidor marcado, o servidor aceitará a comunicação de qualquer sub-rede dentro do limite do Azure. Essa é a comunicação que se origina de um dos endereços IP que são reconhecidos como dentro de intervalos definidos para os data centers do Azure. Deixar o controle habilitado pode resultar em um acesso excessivo do ponto de vista da segurança. O recurso de ponto de extremidade de serviço de Rede Virtual do Microsoft Azure, em conjunto com o recurso de regras da rede virtual do Banco de dados SQL do Microsoft Azure, pode reduzir a área de superfície de segurança.

  7. Selecione o botão OK perto da parte inferior do painel.

Observação

O status ou os estados a seguir se aplicam às regras:

  • Pronto: indica que a operação que você iniciou foi bem-sucedida.
  • Falha: indica que a operação que você iniciou falhou.
  • Excluído: só se aplica à operação de exclusão e indica que a regra foi excluída e não se aplica mais.
  • Em andamento: indica que a operação está em andamento. A regra antiga é aplicável enquanto a operação está nesse estado.

Usar o PowerShell para criar uma regra de rede virtual

Um script também pode criar regras da rede virtual usando o cmdlet do PowerShell New-AzSqlServerVirtualNetworkRule ou az network vnet create. Para obter mais informações, confira PowerShell para criar uma regra e um ponto de extremidade de serviço de rede virtual para o banco de dados SQL.

Usar a API REST para criar uma regra da rede virtual

Internamente, os cmdlets do PowerShell para ações de rede virtual do SQL chamam APIs REST. É possível chamar as APIs REST diretamente. Para obter mais informações, confira Regras de rede virtual: operações.

Solucionar problemas com os erros 40914 e 40615

O erro de conexão 40914 está relacionado a regras da rede virtual, conforme especificado no painel Firewall no Portal do Azure. O erro 40615 é semelhante, exceto pelo fato de que ele se relaciona com regras de endereço IP no firewall.

Erro 40914

Texto da mensagem: “Não é possível abrir o servidor ' [nome-do-servidor] ' solicitado pelo logon. O cliente não tem permissão para acessar o servidor.”

Descrição do erro: o cliente está em uma sub-rede que tem pontos de extremidade de servidor de rede virtual. Mas o servidor não tem nenhuma regra da rede virtual que conceda à sub-rede o direito de se comunicar com o banco de dados.

Resolução de erro: no painel Firewall do Portal do Azure, use o controle de regras de rede virtual para adicionar uma regra da rede virtual à sub-rede.

Erro 40615

Texto da mensagem: “Não é possível abrir o servidor '{0}' solicitado pelo logon. O cliente com o endereço IP '{1}' não tem permissão para acessar o servidor.”

Descrição do erro: o cliente está tentando conectar-se de um endereço IP que não está autorizado a se conectar ao servidor. O firewall do servidor não tem nenhuma regra de endereço IP que permita que um cliente se comunique do endereço IP fornecido para o banco de dados.

Resolução de erro: digite o endereço IP do cliente como uma regra de IP. Use o painel Firewall no portal do Azure para realizar essa etapa.

Próximas etapas