Partilhar via


Azure SQL Database e regras de firewall de IP do Azure Synapse

Aplica-se a: Azure SQL DatabaseAzure Synapse Analytics

Quando crias um novo servidor em Azure SQL Database ou Azure Synapse Analytics chamado mysqlserver, por exemplo, um firewall ao nível do servidor bloqueia todo o acesso ao endpoint público do servidor (que é acessível em mysqlserver.database.windows.net). Para simplificar, SQL Database é usado para se referir tanto à Base de Dados SQL como à Azure Synapse Analytics. Este artigo não se aplica a Azure SQL Managed Instance. Para informações sobre configuração de rede, consulte Ligue a sua aplicação ao Azure SQL Managed Instance.

Observação

Microsoft Entra ID era anteriormente conhecido como Azure Active Directory (Azure d.C.).

Como funciona o firewall

As tentativas de ligação da internet e do Azure devem passar pelo firewall antes de chegarem ao seu servidor ou base de dados, como mostra o diagrama seguinte.

Diagrama do firewall Azure SQL Database.

Importante

O Azure Synapse só suporta regras de firewall IP ao nível do servidor. Ele não suporta regras de firewall IP no nível de banco de dados.

Regras de firewall IP no nível do servidor

Essas regras permitem que os clientes acessem todo o seu servidor, ou seja, todos os bancos de dados gerenciados pelo servidor. As regras são armazenadas na base de master dados. O número máximo de regras de firewall IP no nível do servidor é limitado a 256 para um servidor. Se tiver ativada a definição Permitir Azure Serviços e recursos para aceder a este servidor, isto conta como uma única regra de firewall para o servidor.

Pode configurar regras de firewall IP ao nível do servidor usando o portal Azure, PowerShell ou instruções Transact-SQL.

Observação

O número máximo de regras de firewall IP ao nível do servidor está limitado a 256 quando configurado usando o portal Azure.

  • Para usar o portal ou o PowerShell, você deve ser o proprietário da assinatura ou um colaborador da assinatura.
  • Para usar Transact-SQL, deve ligar-se à base de dados master como o principal login ao nível do servidor ou como administrador Microsoft Entra. (Uma regra de firewall IP a nível de servidor deve primeiro ser criada por um utilizador que tenha permissões ao nível do Azure.)

Observação

Por defeito, durante a criação de um novo servidor SQL lógico a partir do portal Azure, a definição Permitir que os Serviços e recursos Azure acedam a este servidor está definida para No.

Regras de firewall IP no nível de banco de dados

As regras de firewall IP no nível de banco de dados permitem que os clientes acessem determinados bancos de dados (seguros). Crias as regras para cada base de dados (incluindo a master base de dados), e elas são armazenadas na base de dados individual.

  • Só pode criar e gerir regras de firewall IP ao nível da base de dados para master e bases de dados de utilizadores usando instruções Transact-SQL e só depois de configurar o primeiro firewall ao nível do servidor.
  • Se você especificar um intervalo de endereços IP na regra de firewall IP no nível de banco de dados que esteja fora do intervalo na regra de firewall IP no nível do servidor, somente os clientes que tiverem endereços IP no intervalo no nível do banco de dados poderão acessar o banco de dados.
  • O valor padrão é até 256 regras de firewall IP no nível de banco de dados para um banco de dados. Para mais informações sobre a configuração de regras de firewall IP ao nível da base de dados, veja o exemplo mais adiante neste artigo e veja sp_set_database_firewall_rule (Azure SQL Database).

Recomendações sobre como definir regras de firewall

Use regras de firewall IP ao nível da base de dados sempre que possível. Esta prática aumenta a segurança e torna a sua base de dados mais portátil. Use regras de firewall IP no nível do servidor para administradores. Use-os também quando tiver muitos bancos de dados com os mesmos requisitos de acesso e não quiser configurar cada banco de dados individualmente.

Observação

Para informações sobre bases de dados portáteis no contexto da continuidade de negócios, consulte Configurar e gerir a segurança do Azure SQL Database para restauro geográfico ou failover.

Regras de firewall IP no nível do servidor versus regras de firewall IP no nível do banco de dados

Os utilizadores de uma base de dados devem estar totalmente isolados de outra base de dados?

Se sim, use regras de firewall IP ao nível da base de dados para conceder acesso. Esse método evita o uso de regras de firewall IP no nível do servidor, que permitem o acesso através do firewall a todos os bancos de dados. Isso reduziria a profundidade de suas defesas.

Os utilizadores nos endereços IP precisam de acesso a todas as bases de dados?

Se sim, usa regras de firewall IP ao nível do servidor para reduzir o número de vezes que tens de configurar regras de firewall IP.

A pessoa ou equipa que configura as regras do firewall IP só tem acesso através do portal Azure, PowerShell ou da API REST?

Em caso afirmativo, você deve usar regras de firewall IP no nível do servidor. As regras de firewall IP ao nível da base de dados só podem ser configuradas através do Transact-SQL.

A pessoa ou equipa que configura as regras do firewall IP está proibida de ter permissão de alto nível ao nível da base de dados?

Em caso afirmativo, use regras de firewall IP no nível do servidor. Precisa de pelo menos permissão CONTROL DATABASE ao nível da base de dados para configurar regras de firewall IP ao nível da base de dados através de Transact-SQL.

A pessoa ou equipa que configura ou audita as regras do firewall IP gere centralmente as regras do firewall IP para muitas (talvez centenas) de bases de dados?

Nesse cenário, as práticas recomendadas são determinadas pelas suas necessidades e ambiente. As regras de firewall IP no nível do servidor podem ser mais fáceis de configurar, mas o script pode configurar regras no nível do banco de dados. E mesmo que use regras de firewall IP ao nível do servidor, pode ser necessário auditar regras de firewall IP ao nível da base de dados para ver se utilizadores com permissão CONTROL na base de dados criam regras de firewall IP ao nível da base de dados.

Posso usar uma combinação de regras de firewall IP ao nível do servidor e da base de dados?

Sim. Alguns usuários, como administradores, podem precisar de regras de firewall IP no nível do servidor. Outros usuários, como usuários de um aplicativo de banco de dados, podem precisar de regras de firewall IP no nível de banco de dados.

Ligações à Internet

Quando um computador tenta se conectar ao servidor pela Internet, o firewall primeiro verifica o endereço IP de origem da solicitação em relação às regras de firewall IP no nível de banco de dados para o banco de dados solicitado pela conexão.

  • Se o endereço estiver dentro de um intervalo especificado nas regras de firewall IP no nível de banco de dados, a conexão será concedida ao banco de dados que contém a regra.
  • Se o endereço não estiver dentro de um intervalo nas regras de firewall IP no nível do banco de dados, o firewall verificará as regras de firewall IP no nível do servidor. Se o endereço estiver dentro de um intervalo que esteja nas regras de firewall IP no nível do servidor, a conexão será concedida. As regras de firewall IP no nível do servidor aplicam-se a todos os bancos de dados gerenciados pelo servidor.
  • Se o endereço não estiver dentro de um intervalo que esteja em qualquer uma das regras de firewall IP no nível do banco de dados ou no nível do servidor, a solicitação de conexão falhará.

Observação

Para aceder ao Azure SQL Database a partir do seu computador local, certifique-se de que o firewall da sua rede e do computador local permite a comunicação de saída na porta TCP 1433.

Ligações a partir de dentro do Azure

Para permitir que aplicações alojadas dentro do Azure se liguem ao seu servidor SQL, precisa de ativar as ligações ao Azure. Para isso, crie uma regra de firewall com endereços IP iniciais e finais definidos para 0.0.0.0. Esta regra aplica-se apenas ao Azure SQL Database.

Quando uma aplicação do Azure tenta ligar-se ao servidor, o firewall verifica se as ligações ao Azure são permitidas, verificando a existência desta regra do firewall. Isto pode ser ativado diretamente a partir do painel do portal Azure ao mudar a opção Permitir que os serviços e recursos do Azure acedam a este servidor para ON nas definições de Firewalls e redes virtuais. Mudar a definição para ON cria uma regra de firewall de entrada para IP 0.0.0.0 - 0.0.0.0 chamada AllowAllWindowsAzureIps. A regra pode ser visualizada na vista mastersys.firewall_rules da sua base de dados. Usa o PowerShell ou a Azure CLI para criar uma regra de firewall com endereços IP de início e fim definidos para 0.0.0.0 se não estiveres a usar o portal.

Advertência

Ativar esta opção permite ligações a partir de todos os serviços Azure, incluindo serviços que estão a correr em assinaturas de outros clientes. Esta regra não restringe o acesso à sua subscrição ou grupo de recursos — qualquer recurso Azure com ligação externa ao Azure SQL Database pode ligar-se. Ao ativar esta definição, certifique-se de que o seu login e permissões de utilizador limitam o acesso apenas a utilizadores autorizados.

Os seguintes serviços Azure utilizam frequentemente esta regra para se ligar ao Azure SQL Database:

  • Azure App Service e Azure Functions
  • Azure Data Factory
  • Azure Stream Analytics
  • Azure Logic Apps
  • Azure Power BI
  • Azure AI services

Para maior segurança, considere usar endpoints virtuais de serviço de rede ou endpoints privados em vez da regra AllowAllWindowsAzureIPS . Estas alternativas limitam a conectividade a sub-redes ou redes privadas específicas, em vez de permitir todos os endereços IP do Azure.

Permissões

Para criar e gerir regras de firewall IP para o Azure SQL Server, precisa de ter um dos seguintes papéis:

Criar e gerenciar regras de firewall IP

Cria-se a primeira configuração de firewall ao nível do servidor usando o portal Azure ou programaticamente usando Azure PowerShell, Azure CLI, ou uma API Azure REST. Cria e gere regras adicionais de firewall IP ao nível do servidor usando estes métodos ou Transact-SQL.

Importante

As regras de firewall IP ao nível da base de dados só podem ser criadas e geridas utilizando Transact-SQL.

Para melhorar o desempenho, as regras de firewall IP no nível do servidor são temporariamente armazenadas em cache no nível do banco de dados. Para atualizar a cache, consulte DBCC FLUSHAUTHCACHE.

Dica

Pode usar Auditoria para Azure SQL Database e Azure Synapse Analytics para auditar alterações no firewall a nível de servidor e a nível de base de dados.

Use o portal Azure para gerir regras de firewall IP ao nível do servidor

Para definir uma regra de firewall IP a nível de servidor no portal Azure, vá à página de visão geral da sua base de dados ou do seu servidor.

Na página de visão geral do banco de dados

  1. Para definir uma regra de firewall IP a nível de servidor a partir da página de visão geral da base de dados, selecione Definir firewall de servidor na barra de ferramentas, como mostra a imagem seguinte.

    Captura de ecrã da definição do firewall do servidor no portal Azure.

    A página de Rede do servidor abre-se.

  2. Adiciona uma regra na secção de regras de firewall para adicionar o endereço IP do computador que estás a usar e depois seleciona Guardar. Uma regra de firewall IP no nível do servidor é criada para o seu endereço IP atual.

    A captura de ecrã mostra a página de Rede onde podes definir as regras do firewall IP ao nível do servidor.

Da página de visão geral do servidor

A página de visão geral do seu servidor é aberta. Mostra o nome do servidor totalmente qualificado (como mynewserver20170403.database.windows.net) e fornece opções para configurações adicionais.

  1. Para definir uma regra ao nível do servidor a partir desta página, selecione Rede no menu Definições do lado esquerdo.

  2. Adiciona uma regra na secção de regras de firewall para adicionar o endereço IP do computador que estás a usar e depois seleciona Guardar. Uma regra de firewall IP no nível do servidor é criada para o seu endereço IP atual.

Use o Transact-SQL para gerir regras de firewall IP

Vista de catálogo ou procedimento armazenado Nível Descrição
sys.firewall_rules Servidor Exibe as regras atuais de firewall IP no nível do servidor
sp_set_firewall_rule Servidor Cria ou atualiza regras de firewall IP no nível do servidor
sp_delete_firewall_rule Servidor Remove regras de firewall IP no nível do servidor
sys.database_firewall_rules Base de dados Exibe as regras atuais de firewall IP no nível de banco de dados
sp_set_database_firewall_rule Base de dados Cria ou atualiza as regras de firewall IP no nível de banco de dados
sp_delete_database_firewall_rule Bases de dados Remove regras de firewall IP no nível de banco de dados

O exemplo seguinte revê as regras existentes, ativa uma variedade de endereços IP no servidor Contoso e elimina uma regra de firewall IP:

SELECT * FROM sys.firewall_rules ORDER BY name;

Em seguida, adicione uma regra de firewall IP no nível do servidor.

EXECUTE sp_set_firewall_rule @name = N'ContosoFirewallRule',
   @start_ip_address = '192.168.1.1', @end_ip_address = '192.168.1.10'

Para eliminar uma regra de firewall IP ao nível do servidor, execute o procedimento sp_delete_firewall_rule armazenado. O exemplo seguinte elimina a regra ContosoFirewallRule:

EXECUTE sp_delete_firewall_rule @name = N'ContosoFirewallRule'

Usar o PowerShell para gerenciar regras de firewall IP no nível do servidor

Observação

Este artigo utiliza o módulo PowerShell do Azure Az, que é o módulo PowerShell recomendado para interagir com o Azure. Para começar com o módulo Az PowerShell, veja Install Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, veja Migrar Azure PowerShell do AzureRM para o Az.

Importante

O módulo PowerShell Azure Resource Manager (AzureRM) foi obsoleto a 29 de fevereiro de 2024. Todo o desenvolvimento futuro deve usar o módulo Az.Sql. Os usuários são aconselhados a migrar do AzureRM para o módulo Az PowerShell para garantir suporte e atualizações contínuos. O módulo AzureRM não é mais mantido ou suportado. Os argumentos para os comandos no módulo Az PowerShell e nos módulos AzureRM são substancialmente idênticos. Para obter mais informações sobre sua compatibilidade, consulte Apresentando o novo módulo do Az PowerShell.

Cmdlet Nível Descrição
Get-AzSqlServerFirewallRule Servidor Retorna as regras atuais de firewall no nível de servidor
New-AzSqlServerFirewallRule Servidor Cria uma nova regra de firewall no nível de servidor
Set-AzSqlServerFirewallRule Servidor Atualiza as propriedades de uma regra de firewall existente no nível do servidor
Remove-AzSqlServerFirewallRule Servidor Remove regras de firewall no nível do servidor

O exemplo a seguir usa o PowerShell para definir uma regra de firewall IP no nível do servidor:

New-AzSqlServerFirewallRule -ResourceGroupName "myResourceGroup" `
    -ServerName $servername `
    -FirewallRuleName "ContosoIPRange" -StartIpAddress "192.168.1.0" -EndIpAddress "192.168.1.255"

Dica

Para $servername, especifique o nome do servidor e não o nome DNS totalmente qualificado (por exemplo, especifique mysqldbserver em vez de mysqldbserver.database.windows.net).

Para exemplos de PowerShell no contexto de um "quickstart", veja exemplos do Azure PowerShell para Azure SQL Database e use o PowerShell para criar uma base de dados única e configurar uma regra de firewall ao nível do servidor.

Usar a CLI para gerenciar regras de firewall IP no nível do servidor

Cmdlet Nível Descrição
az sql server criar regra de firewall Servidor Cria uma regra de firewall IP do servidor
lista de regras de firewall do AZ SQL Server Servidor Lista as regras de firewall IP em um servidor
regra de firewall do AZ SQL Server mostrar Servidor Mostra os detalhes de uma regra de firewall IP
atualização da regra de firewall do AZ SQL Server Servidor Atualiza uma regra de firewall IP
az sql server firewall-rule eliminar Servidor Exclui uma regra de firewall IP

O exemplo a seguir usa a CLI para definir uma regra de firewall IP no nível do servidor:

az sql server firewall-rule create --resource-group myResourceGroup --server $servername \
-n ContosoIPRange --start-ip-address 192.168.1.0 --end-ip-address 192.168.1.255

Dica

Para $servername, especifique o nome do servidor e não o nome DNS totalmente qualificado. Por exemplo, use mysqldbserver em vez de mysqldbserver.database.windows.net.

Para um exemplo de CLI no contexto de um quickstart, veja Azure CLI exemplos para Azure SQL Database e Crie uma base de dados única e configure uma regra de firewall usando o Azure CLI.

Para Azure Synapse Analytics, consulte os seguintes exemplos:

Cmdlet Nível Descrição
az synapse workspace firewall-rule create Servidor Criar uma regra de firewall
az synapse workspace firewall-rule delete Servidor Excluir uma regra de firewall
az synapse workspace firewall-rule list Servidor Listar todas as regras de firewall
az synapse workspace firewall-rule show Servidor Obter uma regra de firewall
AZ Synapse Workspace Firewall-Rule Update Servidor Atualizar uma regra de firewall
az synapse workspace firewall-rule wait Servidor Coloque a CLI em um estado de espera até que uma condição de uma regra de firewall seja atendida

O exemplo seguinte usa CLI para definir uma regra de firewall IP a nível de servidor no Azure Synapse:

az synapse workspace firewall-rule create --name AllowAllWindowsAzureIps --workspace-name $workspacename --resource-group $resourcegroupname --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0

Usar uma API REST para gerenciar regras de firewall IP no nível do servidor

API Nível Descrição
Listar regras de firewall Servidor Exibe as regras atuais de firewall IP no nível do servidor
Criar ou atualizar regras de firewall Servidor Cria ou atualiza regras de firewall IP no nível do servidor
Excluir regras de firewall Servidor Remove regras de firewall IP no nível do servidor
Obtenha regras de firewall Servidor Obtém as regras de firewall IP a nível de servidor

Noções básicas sobre a latência das atualizações de firewall

O modelo de autenticação do servidor tem uma latência de 5 minutos para todas as alterações nas configurações de segurança, a menos que o banco de dados esteja contido e sem um parceiro de failover. As alterações feitas em bancos de dados contidos sem um parceiro de failover são instantâneas. Para bases de dados contidas com um parceiro de failover, cada atualização de segurança é imediata na base de dados primária, podendo levar até 5 minutos para o banco de dados secundário refletir as alterações.

A tabela a seguir descreve a latência das alterações nas configurações de segurança com base no tipo de banco de dados e na configuração de failover:

Modelo de autenticação Failover configurado Latência para alterações nas configurações de segurança Instâncias latentes
Autenticação do servidor Yes 5 minutos Todas as bases de dados
Autenticação do servidor Não 5 minutos Todas as bases de dados
Base de dados encapsulada Yes 5 minutos a base de dados secundária
Base de dados encapsulada Não nenhuma nenhuma

Atualizar manualmente as regras de firewall

Se precisar de ver as regras de firewall atualizadas mais rapidamente do que a latência de 5 minutos, pode atualizar manualmente as regras de firewall. Inicia sessão na instância da base de dados que precisa de atualizar as regras e executa o DBCC FLUSHAUTHCACHE. Isso fará com que a instância do banco de dados libere seu cache local e atualize as regras de firewall.

DBCC FLUSHAUTHCACHE[;]

Solucionar problemas do firewall do banco de dados

Considere os seguintes pontos quando o acesso ao Azure SQL Database não se comporta como espera.

  • Configuração local do firewall:

    Antes de o seu computador poder aceder ao Azure SQL Database, pode ser necessário criar uma exceção de firewall no seu computador para a porta TCP 1433. Para fazer ligações dentro do limite da nuvem do Azure, pode ser necessário abrir portas adicionais. Para mais informações, consulte a secção "SQL Database: Outside vs inside" do Ports beyond 1433 for ADO.NET 4.5.

  • Tradução de endereços de rede:

    Devido à tradução de endereços de rede (NAT), o endereço IP que o seu computador usa para se ligar ao Azure SQL Database pode ser diferente do endereço IP nas definições de configuração IP do seu computador. Para ver o endereço IP que o seu computador está a usar para se ligar ao Azure:

    1. Inicie sessão no portal.
    2. Aceda ao separador Configurar no servidor anfitrião da base de dados.
    3. O Endereço IP do Cliente Atual é apresentado na secção de Endereços IP Permitidos. Selecione Adicionar para Endereços IP Permitidos para permitir que este computador aceda ao servidor.
  • As alterações à lista de autorizações ainda não entraram em vigor:

    Pode haver até cinco minutos de atraso para as alterações à configuração do firewall do Azure SQL Database entrarem em vigor.

  • O login não é autorizado, ou foi usada uma palavra-passe incorreta:

    Se um login não tiver permissões no servidor ou se a senha estiver incorreta, a conexão com o servidor será negada. Criar uma configuração de firewall só dá aos clientes a oportunidade de tentarem ligar-se ao seu servidor. O cliente ainda deve fornecer as credenciais de segurança necessárias. Para mais informações sobre como configurar logins, consulte Autorizar o acesso aos seguintes serviços: base de dados SQL, SQL Managed Instance e Azure Synapse Analytics.

  • Endereço IP Dinâmico:

    Se você tiver uma conexão com a Internet que usa endereçamento IP dinâmico e tiver problemas para passar pelo firewall, tente uma das seguintes soluções:

    • Peça ao seu fornecedor de serviços de Internet o intervalo de endereços IP atribuído aos computadores clientes que acedem ao servidor. Adicione esse intervalo de endereços IP como uma regra de firewall IP.
    • Obtenha endereçamento IP estático em vez disso para os computadores clientes. Adicione os endereços IP como regras de firewall IP.