Utilizar pontos finais de serviço e regras de rede virtual para servidores na Base de Dados SQL do Azure

Aplica-se a:Banco de DadosSQL do Azure Azure Synapse Analytics

As regras de 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 dedicados do pool SQL (anteriormente SQL DW) no Azure Synapse Analytics aceita comunicações enviadas de sub-redes específicas em redes virtuais. Este artigo explica por que as regras de rede virtual às vezes são sua melhor opção para permitir com segurança a comunicação com seu banco de dados no Banco de Dados SQL e no Azure Synapse Analytics.

Nota

Este artigo aplica-se à Base de Dados SQL e ao Azure Synapse Analytics. Para simplificar, o termo banco de dados refere-se a ambos os bancos de dados no Banco de Dados SQL e no Azure Synapse Analytics. Da mesma forma, quaisquer referências ao servidor referem-se ao servidor lógico que hospeda o Banco de Dados SQL e o Azure Synapse Analytics.

Para criar uma regra de rede virtual, primeiro deve haver um ponto de extremidade de serviço de rede virtual para que a regra faça referência.

Nota

Microsoft Entra ID é o novo nome para o Azure Ative Directory (Azure AD). Estamos atualizando a documentação neste momento.

Criar uma regra de rede virtual

Se você quiser criar apenas uma regra de rede virtual, você pode pular para as etapas e explicação mais adiante neste artigo.

Detalhes sobre regras de rede virtual

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

Apenas uma região geográfica

Cada ponto de extremidade do 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 comunicações da sub-rede.

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

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

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

Em contrapartida, as regras de PI 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. É necessária ação de cada uma das seguintes funções:

  • Administrador de Rede (função de Colaborador de Rede): ative o ponto de extremidade.
  • Administrador de Banco de Dados (função de Colaborador do SQL Server): atualize a lista de controle de acesso (ACL) para adicionar a sub-rede fornecida ao servidor.

Alternativa do RBAC do Azure

As funções de administrador de rede e administrador de banco de dados têm mais recursos do que os necessários para gerenciar regras de rede virtual. Apenas é necessário um subconjunto das suas capacidades.

Você tem a opção de usar o RBAC (controle de acesso baseado em função) no Azure para criar uma única função personalizada que tenha apenas o subconjunto necessário de recursos. A função personalizada pode ser usada em vez de envolver o administrador de rede ou o administrador de banco de dados. A área de superfície da sua exposição de segurança é menor se você adicionar um usuário a uma função personalizada em comparação com a adição do usuário às outras duas funções principais de administrador.

Nota

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

  • Ambas as 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 de rede virtual ao servidor determinado.
  • Ambas as assinaturas devem ter o provedor Microsoft.Sql registrado.

Limitações

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

  • No firewall do seu banco de dados no Banco de dados SQL, cada regra de 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 ACL para qualquer rede virtual.
  • As regras de rede virtual aplicam-se apenas às redes virtuais do Azure Resource Manager e não às redes de modelo de implantação clássicas.
  • Ativar pontos de extremidade de serviço de rede virtual para o Banco de Dados SQL também habilita 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 às instâncias do Banco de Dados do Azure para MySQL ou do Banco de Dados do Azure para PostgreSQL podem falhar.
    • O motivo subjacente é 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 de rede virtual configurada. Você deve configurar uma regra de rede virtual para o Banco de Dados do Azure para MySQL e o Banco de Dados do Azure para PostgreSQL.
    • Para definir regras de firewall de rede virtual em um servidor lógico 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, mas as regras de rede virtual não:

Considerações ao usar pontos de extremidade de serviço

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

  • É necessário sair para IPs públicos do Banco de Dados SQL do Azure. Os NSGs (grupos de segurança de rede) devem ser abertos para IPs do Banco de dados SQL para permitir a conectividade. Você pode fazer isso usando marcas de serviço NSG para o Banco de dados SQL.

ExpressRoute

Se você usar a Rota Expressa a partir de suas instalações, para emparelhamento público ou emparelhamento da Microsoft, precisará identificar os endereços IP NAT usados. Para peering público, cada circuito ExpressRoute, por predefinição, utiliza dois endereços IP NAT que são aplicados ao tráfego de serviço do Azure quando o tráfego entra no backbone de rede do Microsoft Azure. Para o emparelhamento da Microsoft, os endereços IP NAT usados são fornecidos pelo cliente ou pelo provedor de serviços. Para permitir o acesso aos recursos de serviço, tem de permitir estes endereços IP públicos na definição da firewall do IP dos recursos. Para localizar os endereços IP do circuito ExpressRoute de peering público, abra um pedido de suporte no ExpressRoute através do portal do Azure. Para saber mais sobre NAT para emparelhamento público da Rota Expressa e da Microsoft, consulte Requisitos de NAT para emparelhamento público do Azure.

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

Impacto da utilização de pontos finais de serviço de rede virtual com o Armazenamento do Microsoft Azure

O Armazenamento do Microsoft Azure implementou a mesma funcionalidade que lhe permite limitar a conectividade à conta do Armazenamento do Microsoft Azure. Se você optar por usar esse recurso com uma conta de Armazenamento do Azure que o Banco de Dados SQL está usando, poderá ter problemas. Em seguida, há uma lista e discussão dos recursos do Banco de Dados SQL e do Azure Synapse Analytics que são afetados por isso.

Azure Synapse Analytics PolyBase e instrução COPY

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

Pré-requisitos

  • Instale o Azure PowerShell. Para obter mais informações, veja Instalar o módulo Azure Az do PowerShell.
  • Se você tiver uma conta de armazenamento de Blob ou v1 de uso geral, primeiro deverá atualizar para v2 de uso geral seguindo as etapas em Atualizar para uma conta de armazenamento v2 de uso geral.
  • Você deve ter Permitir que serviços confiáveis da Microsoft acessem essa conta de armazenamento ativada no menu Configurações de Firewalls e redes virtuais da contade armazenamento do Azure. Habilitar essa configuração permitirá que o PolyBase e a instrução COPY se conectem à conta de armazenamento usando autenticação forte onde o tráfego de rede permanece no backbone do Azure. Para obter mais informações, consulte este guia.

Importante

O módulo PowerShell Azure Resource Manager ainda é suportado pelo Banco de Dados SQL do Azure, mas todo o desenvolvimento futuro é para o Az.Sql módulo. O módulo AzureRM continuará a receber 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 obter mais informações sobre sua compatibilidade, consulte Apresentando o novo módulo Az do Azure PowerShell.

Passos

  1. Se você tiver um pool SQL dedicado autônomo (anteriormente SQL DW), registre seu servidor SQL com o Microsoft Entra ID usando o PowerShell:

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

    Esta etapa não é necessária para os pools SQL dedicados em um espaço de trabalho do Azure Synapse Analytics. A identidade gerenciada atribuída ao sistema (SA-MI) do espaço de trabalho é um membro da função Synapse Administrator e, portanto, tem privilégios elevados nos pools SQL dedicados do espaço de trabalho.

  2. Crie uma conta de armazenamento v2 de uso geral 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 atribuição de função para abrir a página Adicionar>atribuição de função.

  5. Atribua a seguinte função. Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.

    Definição valor
    Role Contribuidor de Dados de Blobs de Armazenamento
    Atribuir acesso a Usuário, grupo ou entidade de serviço
    Membros Servidor ou espaço de trabalho que hospeda seu pool SQL dedicado que você registrou com o Microsoft Entra ID

    Screenshot that shows Add role assignment page in Azure portal.

    Nota

    Somente membros com privilégio de proprietário na conta de armazenamento podem executar esta etapa. Para várias funções internas do Azure, consulte Funções internas do Azure.

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

    1. Crie uma chave mestra de banco de dados se você 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 há necessidade de especificar SECRET com uma chave de acesso do Armazenamento do Azure porque esse mecanismo usa a Identidade Gerenciada sob as cobertas. Esta etapa não é necessária para os pools SQL dedicados em um espaço de trabalho do Azure Synapse Analytics. A identidade gerenciada atribuída ao sistema (SA-MI) do espaço de trabalho é um membro da função Synapse Administrator e, portanto, tem privilégios elevados nos pools SQL dedicados do espaço de trabalho.

      • O nome IDENTITY deve ser 'Identidade de Serviço Gerenciado' para que a conectividade do PolyBase funcione com uma conta de Armazenamento do Azure protegida em uma rede virtual.

    3. Crie uma fonte de dados externa com o esquema para se conectar à sua conta de armazenamento v2 de uso geral usando o abfss:// 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 armazenamento de Blob ou v1 de uso geral, você deve primeiro descartar essas tabelas externas. Em seguida, solte a fonte de dados externa correspondente. Em seguida, crie uma fonte de dados externa com o esquema que se conecta abfss:// a uma conta de armazenamento v2 de uso geral, conforme mostrado anteriormente. Em seguida, recrie todas as tabelas externas usando essa nova fonte de dados externa. Você pode usar o Assistente para Gerar e Publicar Scripts para gerar scripts de criação para todas as tabelas externas com facilidade.
      • Para obter mais informações sobre o esquema, consulte Usar o abfss:// URI do Azure Data Lake Storage Gen2.
      • Para obter mais informações sobre os comandos T-SQL, consulte CREATE EXTERNAL DATA SOURCE.
    4. Consulta normal usando tabelas externas.

Auditoria de blob do Banco de Dados SQL

A auditoria SQL do Azure pode gravar logs de auditoria SQL em sua própria conta de armazenamento. Se essa conta de armazenamento usar o recurso de pontos de extremidade de serviço de rede virtual, veja como gravar auditoria em uma conta de armazenamento por trás de VNet e firewall.

Adicionar uma regra de firewall de rede virtual ao servidor

Há muito tempo, antes de esse recurso ser aprimorado, era necessário ativar os pontos de extremidade do serviço de rede virtual antes de poder implementar uma regra de rede virtual ao vivo no firewall. Os pontos de extremidade relacionaram uma determinada sub-rede de rede virtual a um banco de dados no Banco de dados SQL. A partir de 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 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 deve ativar os pontos de extremidade do serviço de rede virtual para que a segurança entre em vigor. Quando você ativa os pontos de extremidade de serviço, sua sub-rede de rede virtual enfrenta tempo de inatividade até concluir a transição de desativado para ativado. Este período de inatividade é especialmente verdadeiro no contexto de grandes redes virtuais. Você pode usar o sinalizador IgnoreMissingVNetServiceEndpoint para reduzir ou eliminar o tempo de inatividade durante a transição.

Você pode definir o sinalizador IgnoreMissingVNetServiceEndpoint usando o PowerShell. Para obter mais informações, consulte PowerShell para criar um ponto de extremidade e uma regra de serviço de rede virtual para o Banco de dados SQL.

Nota

Para obter instruções semelhantes no Azure Synapse Analytics, consulte 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 de rede virtual em seu banco de dados no Banco de dados SQL. A regra diz ao seu 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.

Nota

Se você pretende adicionar um ponto de extremidade de serviço às regras de firewall de rede virtual do seu servidor, primeiro 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 estiverem ativados para a sub-rede, o portal solicitará que você os ative. Selecione o botão Ativar no mesmo painel no qual você adiciona a regra.

Pré-requisitos

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

Etapas do portal do Azure

  1. Inicie sessão no portal do Azure.

  2. Procure e selecione servidores SQL e, em seguida, selecione o servidor. Em Segurança, selecione Rede.

  3. Na guia Acesso público, verifique se Acesso à rede pública está definido como Selecionar 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 seus recursos do Azure.

    Gorjeta

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

    Screenshot that shows filling in boxes for the new rule.

  5. Consulte a regra de rede virtual resultante no painel Firewall .

    Screenshot that shows the new rule on the Firewall pane.

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

    Importante

    Se você deixar a opção Permitir que os serviços e recursos do Azure acessem este servidor marcada, seu servidor aceitará comunicação de qualquer sub-rede dentro do limite do Azure. Essa é a comunicação originada de um dos endereços IP reconhecidos como aqueles dentro dos intervalos definidos para datacenters do Azure. Deixar o controle ativado pode ser um acesso excessivo do ponto de vista da segurança. O recurso de ponto de extremidade do serviço de Rede Virtual do Microsoft Azure em coordenação com o recurso de regras de rede virtual do Banco de Dados SQL juntos pode reduzir sua área de superfície de segurança.

  7. Selecione o botão OK na parte inferior do painel.

Nota

Os seguintes estados ou estados aplicam-se às regras:

  • Pronto: indica que a operação iniciada foi bem-sucedida.
  • Falha: indica que a operação iniciada falhou.
  • Excluído: Aplica-se apenas à operação Excluir e indica que a regra foi excluída e não se aplica mais.
  • InProgress: Indica que a operação está em andamento. A regra antiga aplica-se enquanto a operação estiver neste estado.

Usar o PowerShell para criar uma regra de rede virtual

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

Usar a API REST para criar uma regra de rede virtual

Internamente, os cmdlets do PowerShell para ações de rede virtual SQL chamam APIs REST. Você pode chamar as APIs REST diretamente. Para obter mais informações, consulte Regras de rede virtual: operações.

Solucionar problemas de erros 40914 e 40615

O erro de conexão 40914 está relacionado a regras de rede virtual, conforme especificado no painel Firewall no portal do Azure. O erro 40615 é semelhante, exceto que está relacionado às regras de endereço IP no firewall.

Erro 40914

Texto da mensagem: "Não é possível abrir o servidor '[server-name]' solicitado pelo login. O cliente não tem permissão para aceder ao 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 de rede virtual que conceda à sub-rede o direito de se comunicar com o banco de dados.

Resolução de erros: no painel Firewall do portal do Azure, use o controle de regras de rede virtual para adicionar uma regra de rede virtual para a sub-rede.

Erro 40615

Texto da mensagem: "Não é possível abrir o servidor ''{0} solicitado pelo login. O cliente com o endereço IP "{1}" não tem permissão para aceder ao servidor."

Descrição do erro: O cliente está tentando se conectar a partir 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 erros: insira o endereço IP do cliente como uma regra de IP. Use o painel Firewall no portal do Azure para executar esta etapa.

Próximos passos