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

APLICA-SE A: Azure SQL Database Azure Synapse Analytics

As regras de rede virtual são uma funcionalidade de segurança de firewall que controla quer o servidor das suas bases de dados e piscinas elásticas em Base de Dados SQL do Azure ou para as suas bases de dados dedicadas SQL pool (anteriormente SQL DW) no Azure Synapse Analytics aceita comunicações que são enviadas a partir de sub-redes específicas em redes virtuais. Este artigo explica porque as regras de rede virtual são, por vezes, a sua melhor opção para permitir a comunicação seguramente à sua base de dados em Base de Dados SQL e Azure Synapse Analytics.

Nota

Este artigo aplica-se tanto à Base de Dados SQL como à Azure Synapse Analytics. Para simplificar, a base de dados de termo refere-se a ambas as bases de dados em Base de Dados SQL e Azure Synapse Analytics. Da mesma forma, quaisquer referências ao servidor referem-se ao servidor lógico SQL que acolhe Base de Dados SQL e Azure Synapse Analytics.

Para criar uma regra de rede virtual, deve primeiro existir um ponto final de serviço de rede virtual para a regra a referenciar.

Criar uma regra de rede virtual

Se quiser criar apenas uma regra de rede virtual, pode adiantar-se aos passos e explicações mais tarde neste artigo.

Detalhes sobre regras de rede virtual

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

Apenas uma região geográfica

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

Qualquer regra de rede virtual limita-se à região a que se aplica o seu ponto final subjacente.

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

Cada regra de rede virtual aplica-se a todo o servidor, e não apenas a uma base de dados específica no servidor. Por outras palavras, as regras de rede virtuais aplicam-se ao nível do servidor, não ao nível da base de dados.

Em contrapartida, as regras de PI podem aplicar-se a ambos os níveis.

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

Há uma separação de papéis de segurança na administração de pontos finais de serviço de rede virtual. São necessárias medidas de cada uma das seguintes funções:

Alternativa Azure RBAC

Os papéis de Administração de Rede e Administração de Bases de Dados têm mais capacidades do que as necessárias para gerir as regras de rede virtuais. Apenas um subconjunto das suas capacidades é necessário.

Tem a opção de usar o controlo de acesso baseado em funções (RBAC) em Azure para criar um único papel personalizado que tenha apenas o subconjunto de capacidades necessário. O papel personalizado poderia ser usado em vez de envolver o Administrador de Rede ou o Administrador de Base de Dados. A área de superfície da sua exposição à segurança é menor se adicionar um utilizador a uma função personalizada versus adicionar o utilizador às outras duas principais funções de administrador.

Nota

Em alguns casos, a base de dados em Base de Dados SQL e a sub-rede de rede virtual estão em diferentes subscrições. Nestes casos, deve assegurar as seguintes configurações:

  • Ambas as subscrições devem estar no mesmo inquilino Azure Ative Directory (Azure AD).
  • O utilizador dispõe das permissões necessárias para iniciar operações, tais como ativar pontos finais de serviço e adicionar uma sub-rede de rede virtual ao servidor dado.
  • Ambas as subscrições devem ter o fornecedor Microsoft.Sql registado.

Limitações

Para Base de Dados SQL, a funcionalidade de regras de rede virtual tem as seguintes limitações:

  • Na firewall da sua base de dados em Base de Dados SQL, cada regra de rede virtual refere uma sub-rede. Todas estas sub-redes referenciadas devem ser aloiadas na mesma região geográfica que acolhe a base de dados.
  • Cada servidor pode ter até 128 entradas ACL para qualquer rede virtual.
  • As regras de rede virtuais aplicam-se apenas às redes virtuais do Azure Resource Manager e não às redes de modelos de implantação clássicas.
  • Ligar os pontos finais do serviço de rede virtual para Base de Dados SQL também permite os pontos finais da Base de Dados Azure para o MySQL e a Azure Database para PostgreSQL. Com os pontos finais definidos para ON, as tentativas de ligação dos pontos finais à sua Base de Dados Azure para o MySQL ou Azure Database para instâncias postgreSQL podem falhar.
    • A razão subjacente é que a Base de Dados Azure para o MySQL e a Azure Database para PostgreSQL provavelmente não tem uma regra de rede virtual configurada. Tem de configurar uma regra de rede virtual para Azure Database para MySQL e Azure Database para PostgreSQL, e a ligação terá sucesso.
    • Para definir as regras de firewall de rede virtual num servidor SQL lógico que já está configurado com pontos finais privados, defina o acesso da rede pública ao .
  • Na firewall, as gamas de endereços IP aplicam-se aos seguintes itens de rede, mas as regras de rede virtuais não:

Considerações quando utiliza pontos finais de serviço

Quando utilizar os pontos finais de serviço para Base de Dados SQL, reveja as seguintes considerações:

  • É necessária a saída para Base de Dados SQL do Azure iPs públicos. Os grupos de segurança da rede (NSGs) devem ser abertos para Base de Dados SQL IPs para permitir a conectividade. Pode fazê-lo utilizando etiquetas de serviço NSG para Base de Dados SQL.

ExpressRoute

Se utilizar o ExpressRoute a partir das suas instalações, para espreitar publicamente ou para olhando a Microsoft, terá de identificar os endereços IP NAT utilizados. 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 estojo da Microsoft, os endereços NAT IP utilizados são fornecidos pelo cliente ou pelo prestador 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 o NAT para o público ExpressRoute e o microsoft espreitando, consulte os requisitos da NAT para o azure peering público.

Para permitir a comunicação do seu circuito para Base de Dados SQL, tem de 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 a Azure Armazenamento

O Armazenamento do Microsoft Azure implementou a mesma funcionalidade que lhe permite limitar a conectividade à conta do Armazenamento do Microsoft Azure. Se optar por utilizar esta funcionalidade com uma conta Azure Armazenamento que Base de Dados SQL está a utilizar, pode encontrar problemas. Segue-se uma lista e discussão das funcionalidades Base de Dados SQL e Azure Synapse Analytics que são afetadas por isso.

Azure Synapse Analytics PolyBase e COPY statement

A PolyBase e a declaração COPY são comumente usadas para carregar dados em Azure Synapse Analytics da Azure Armazenamento contas para ingestão de dados de produção elevada. Se o Azure Armazenamento conta de que está a carregar dados de limites acessa apenas a um conjunto de sub-redes de rede virtuais, conectividade quando utilizar o PolyBase e a declaração COPY para a conta de armazenamento quebrar-se-á. Para permitir cenários de importação e exportação utilizando COPY e PolyBase com Azure Synapse Analytics conectando-se ao Azure Armazenamento que está seguro a uma rede virtual, siga os passos nesta secção.

Pré-requisitos

  • Instale Azure PowerShell utilizando este guia.
  • Se tiver uma conta de v1 ou Azure Blob Armazenamento, primeiro deve atualizar para v2 para fins gerais, seguindo os passos de Atualização para uma conta de armazenamento V2 de uso geral.
  • Deve ter permitido serviços Microsoft fidedignos para aceder a esta conta de armazenamento ligada no menu de firewalls de conta Azure Armazenamento e redes virtuais. Ativar esta configuração permitirá que a PolyBase e a declaração COPY se conectem à conta de armazenamento utilizando uma autenticação forte onde o tráfego de rede permanece na espinha dorsal do Azure. Para mais informações, consulte este guia.

Importante

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

Passos

  1. Se tiver uma piscina SQL dedicada autónoma, registe o seu SQL servidor com a AD AZure utilizando o PowerShell:

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

    Este passo não é necessário para piscinas de SQL dedicadas dentro de um espaço de trabalho Azure Synapse Analytics.

  2. Se tiver um espaço de trabalho Azure Synapse Analytics, registe a identidade gerida pelo sistema do seu espaço de trabalho:

    1. Vá ao seu espaço de trabalho Azure Synapse Analytics no portal Azure.
    2. Vá ao painel de identidades geridas.
    3. Certifique-se de que a opção Permitir gasodutos está ativada.
  3. Criar uma conta v2 Armazenamento de uso geral seguindo os passos na Criar uma conta de armazenamento.

    Nota

  4. Na sua conta de armazenamento, aceda ao Controlo de Acesso (IAM) e selecione Adicionar a atribuição de funções. Atribua o papel de Armazenamento Blob Data Contributor Azure ao servidor ou espaço de trabalho que hospeda o seu pool de SQL dedicado, que registou no Azure AD.

    Nota

    Apenas os membros com privilégio proprietário na conta de armazenamento podem realizar este passo. Para vários papéis embutidos em Azure, consulte as funções incorporadas do Azure.

  5. Para ativar a conectividade PolyBase à conta Azure Armazenamento:

    1. Crie uma chave principal de base de dados se não tiver criado uma antes.

      CREATE MASTER KEY [ENCRYPTION BY PASSWORD = 'somepassword'];
      
    2. Criar uma credencial de base de dados com IDENTIDADE = 'Identidade de serviço gerida'.

      CREATE DATABASE SCOPED CREDENTIAL msi_cred WITH IDENTITY = 'Managed Service Identity';
      

      Nota

      • Não há necessidade de especificar SECRET com uma chave de acesso Azure Armazenamento porque este mecanismo utiliza identidade gerida sob as capas.
      • O nome IDENTITY deve ser "Identidade de serviço gerido" para a conectividade PolyBase para trabalhar com uma conta Azure Armazenamento protegida a uma rede virtual.
    3. Crie uma fonte de dados externa com o abfss:// esquema de ligação à sua conta de armazenamento v2 de uso da PoliBase.

      CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss WITH (TYPE = hadoop, LOCATION = 'abfss://myfile@mystorageaccount.dfs.core.windows.net', CREDENTIAL = msi_cred);
      

      Nota

      • Se já tem tabelas externas associadas a uma conta de v1 ou Blob Armazenamento, deve primeiro deixar cair essas tabelas externas. Em seguida, deixe cair a fonte de dados externa correspondente. Em seguida, crie uma fonte de dados externa com o abfss:// esquema que se conecta a uma conta de armazenamento v2 de uso geral, como anteriormente mostrado. Em seguida, reumo todas as tabelas externas utilizando esta nova fonte de dados externo. Pode utilizar o ''' Gerar e Publicar Scripts Wizard' para gerar scripts de criação para todas as tabelas externas para facilitar.
      • Para obter mais informações sobre o abfss:// esquema, consulte o Lago de Dados Azure Armazenamento Gen2 URI.
      • Para obter mais informações sobre CREATE EXTERNAL DATA SOURCE, consulte este guia.
    4. Consulta normal utilizando tabelas externas.

auditoria Base de Dados SQL blob

A Azure SQL auditoria pode escrever SQL registos de auditoria na sua própria conta de armazenamento. Se esta conta de armazenamento utilizar a funcionalidade de pontos finais do serviço de rede virtual, consulte como escrever a auditoria a uma conta de armazenamento por trás do VNet e firewall.

Adicione uma regra de firewall de rede virtual ao seu servidor

Há muito tempo, antes de esta funcionalidade ser melhorada, era-lhe exigido que ligasse os pontos finais do serviço de rede virtual antes de poder implementar uma regra de rede virtual ao vivo na firewall. Os pontos finais diziam respeito a uma sub-rede de rede virtual a uma base de dados em Base de Dados SQL. A partir de janeiro de 2018, pode contornar este requisito definindo a bandeira IgnoreMissingVNetServiceEndpoint. Agora, pode adicionar uma regra de firewall de rede virtual ao seu servidor sem ligar os pontos finais do serviço de rede virtual.

Apenas definir uma regra de firewall não ajuda a proteger o servidor. Também deve ligar os pontos finais do serviço de rede virtual para que a segurança produza efeitos. Quando liga os pontos finais de serviço, a sua sub-rede de rede virtual experimenta tempo de inatividade até completar a transição de desligado para ligado. Este período de inatividade é especialmente verdadeiro no contexto das grandes redes virtuais. Pode utilizar a bandeira IgnoreMissingVNetServiceEndpoint para reduzir ou eliminar o tempo de inatividade durante a transição.

Pode configurar a bandeira IgnoreMissingVNetServiceEndpoint utilizando o PowerShell. Para obter mais informações, consulte o PowerShell para criar um ponto final de serviço de rede virtual e regra para Base de Dados SQL.

Erros 40914 e 40615

O erro de ligação 40914 diz respeito às regras de rede virtuais, conforme especificado no painel firewall do portal Azure. O erro 40615 é semelhante, exceto que diz respeito às regras de endereço IP na firewall.

Erro 40914

Texto de mensagem: "Não é possível abrir o servidor [ nome do servidor]' solicitado pelo login. O cliente não está autorizado a aceder ao servidor."

Descrição do erro: O cliente está numa sub-rede que tem pontos finais de servidor de rede virtual. Mas o servidor não tem nenhuma regra de rede virtual que conceda à sub-rede o direito de comunicar com a base de dados.

Resolução de erros: No painel firewall do portal Azure, utilize o controlo de regras de rede virtual para adicionar uma regra de rede virtual para a sub-rede.

Erro 40615

Texto de mensagem: "Não é possível abrir {0} o servidor" solicitado pelo login. O cliente com endereço IP {1} ' não está autorizado a aceder ao servidor."

Descrição do erro: O cliente está a tentar ligar-se a partir de um endereço IP que não está autorizado a ligar-se ao servidor. A firewall do servidor não tem nenhuma regra de endereço IP que permita a um cliente comunicar a partir do endereço IP dado para a base de dados.

Resolução de erros: Insira o endereço IP do cliente como regra ip. Utilize o painel de firewall no portal Azure para fazer este passo.

Use o portal para criar uma regra de rede virtual

Esta secção ilustra como pode utilizar o portal Azure para criar uma regra de rede virtual na sua base de dados em Base de Dados SQL. A regra diz à sua base de dados para aceitar a comunicação de uma determinada sub-rede que foi marcada como sendo um ponto final de serviço de rede virtual.

Nota

Se pretender adicionar um ponto final de serviço às regras de firewall de rede virtual do seu servidor, certifique-se primeiro de que os pontos finais de serviço estão ligados para a sub-rede.

Se os pontos finais de serviço não estiverem ligados para a sub-rede, o portal pede-lhe para os ativar. Selecione o botão Ativar no mesmo painel em que adiciona a regra.

Alternativa PowerShell

Um script também pode criar regras de rede virtuais utilizando o cmdlet PowerShell New-AzSqlServerVirtualNetworkRule ou vnet de rede az. Se estiver interessado, consulte o PowerShell para criar um ponto final de serviço de rede virtual e regra para Base de Dados SQL.

Rest API alternativa

Internamente, os cmdlets PowerShell para SQL ações de rede virtuais chamam APIs de REST. Pode ligar diretamente para as APIs REST.

Pré-requisitos

Já deve ter uma sub-rede que está marcada com o nome de tipo de ponto final de serviço de rede virtual relevante para Base de Dados SQL.

Passos do portal Azure

  1. Inicie sessão no portal do Azure.

  2. Procure e selecione SQL servidores e, em seguida, selecione o seu servidor. Em Segurança, selecione Firewalls e redes virtuais.

  3. Definir Deixe o acesso aos serviços Azure para OFF.

    Importante

    Se deixar o controlo definido para ON, o seu servidor aceita a comunicação a partir de qualquer sub-rede dentro do limite Azure. Isto é comunicação que se origina de um dos endereços IP que é reconhecido como aqueles dentro dos intervalos definidos para centros de dados Azure. Deixar o controlo definido para ON pode ser um acesso excessivo do ponto de vista de segurança. A funcionalidade de ponta de serviço de rede virtual Microsoft Azure em coordenação com as regras de rede virtuais de Base de Dados SQL em conjunto pode reduzir a sua área de superfície de segurança.

  4. Selecione + Adicione a existência na secção redes Virtuais.

    Screenshot que mostra a seleção + Adicionar o ponto final existente (ponto final da sub-rede, como regra SQL).

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

    Dica

    Tem de incluir o prefixo de endereço correto para a sua sub-rede. Pode encontrar o valor do prefixo do Endereço no portal. Ir a todos os recursos Todos os > tipos de > redes virtuais. O filtro exibe as suas redes virtuais. Selecione a sua rede virtual e, em seguida, selecione Subnets. A coluna ADDRESS RANGE tem o prefixo de endereço de que necessita.

    Screenshot que mostra preencher caixas para a nova regra.

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

  7. Consulte a regra da rede virtual resultante no painel de firewall.

    Screenshot que mostra a nova regra no painel de firewall.

Nota

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

  • Pronto: Indica que a operação iniciada foi bem sucedida.
  • Falha: Indica que a operação iniciada falhou.
  • Suprimimento: Aplica-se apenas à operação Eliminar e indica que a regra foi eliminada e já não se aplica.
  • InProgress: Indica que a operação está em curso. A regra antiga aplica-se enquanto a operação está neste estado.

Passos seguintes