Regras de firewall de IP do Banco de Dados SQL do Azure e do Azure Synapse

APLICA-SE A: Banco de Dados SQL do Azure Azure Synapse Analytics

Ao criar um novo servidor no Banco de Dados SQL do Azure ou no Azure Synapse Analytics chamado mysqlserver, por exemplo, um firewall de nível de servidor bloqueia todo o acesso ao ponto de extremidade público para o servidor (que pode ser acessado em mysqlserver.database.windows.net). Para simplificar, o termo Banco de Dados SQL é usado para se referir ao Banco de Dados SQL e ao Azure Synapse Analytics.

Importante

Este artigo não se aplica à Instância Gerenciada de SQL do Azure. Para obter mais informações sobre configuração de rede, confira Conectar o aplicativo à Instância Gerenciada de SQL do Azure.

O Azure Synapse dá suporte apenas a regras de firewall de IP no nível de servidor. Ele não oferece suporte a regras de firewall de IP de nível de banco de dados.

Como o firewall funciona

As tentativas de conexão pela Internet e pelo Azure devem passar pelo firewall antes de acessarem o servidor ou o banco de dados, conforme mostrado no diagrama a seguir.

Firewall configuration diagram

Regras de firewall de IP no nível de servidor

Essas regras permitem que os clientes acessem seu servidor inteiro, ou seja, todos os bancos de dados gerenciados pelo servidor. Essas regras são armazenadas no banco de dados mestre. Você pode ter no máximo 128 regras de firewall de IP no nível do servidor para um servidor. Se você tiver a configuração Permitir Serviços do Azure e recursos para acessar este servidor habilitada, ela contará como uma única regra de firewall para o servidor.

Você pode configurar regras de firewall de IP no nível de servidor usando as instruções do portal do Azure, PowerShell ou Transact-SQL.

  • Para usar o portal ou o PowerShell, você deve ser o proprietário da assinatura ou um colaborador da assinatura.
  • Para usar o Transact-SQL, você deve se conectar ao banco de dados mestre com o logon da entidade de segurança no nível do servidor ou como administrador do Azure Active Directory. (Uma regra de firewall de IP de nível de servidor deve ser criada primeiro por um usuário que tenha permissões de nível do Azure.)

Observação

Por padrão, durante a criação de um novo SQL Server lógico pelo portal do Azure, a configuração Permitir que Serviços do Azure e recursos acessem este servidor está definida como Não.

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

Regras de firewall de IP no nível do banco de dados permitem que os clientes acessem alguns bancos de dados (seguros). Você cria as regras de cada banco de dados (inclusive o banco de dados mestre) e elas são armazenadas no banco de dados individual.

  • Você só pode criar e gerenciar as regras de firewall de IP no nível do banco de dados para bancos de dados mestre e usuário por instruções Transact-SQL, e somente depois da configuração do primeiro firewall no nível do servidor.
  • Se você especificar um intervalo de endereços IP na regra de firewall de IP no nível do banco de dados que está fora do intervalo na regra de firewall de IP no nível do servidor, somente os clientes com endereços IP no intervalo de nível de banco de dados poderão acessar o banco de dados.
  • Você pode ter no máximo 128 regras de firewall de IP no nível do banco de dados para um banco de dados. Para saber mais sobre como configurar regras de firewall de IP no nível do banco de dados, veja o exemplo mais adiante neste artigo e confira sp_set_database_firewall_rule (Banco de Dados SQL do Azure).

Recomendações sobre como definir regras de firewall

Recomendamos usar as regra de firewall de IP no nível do banco de dados sempre que possível. Essa prática aprimora a segurança e torna seu banco de dados mais portátil. Use regras de firewall de IP de nível de servidor para administradores. Use-as também quando tiver muitos bancos de dados com os mesmos requisitos de acesso e não quiser configurar cada um individualmente.

Observação

Para obter informações sobre bancos de dados portáteis no contexto de continuidade de negócios, confira Requisitos de autenticação para a recuperação de desastres.

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

Os usuários de um banco de dados devem ser totalmente isolados de outro banco de dados?

Se sim, use as regras de firewall de IP no nível de banco de dados para conceder acesso. Esse método evita o uso de regras de firewall de IP no nível de servidor, o que permite o acesso pelo firewall a todos os bancos de dados. Isso reduzirá a profundidade das defesas.

Os usuários nos endereços IP precisam de acesso a todos os bancos de dados?

Se sim, use regras de firewall de IP no nível de servidor para reduzir o número de vezes que você deverá configurar as regras de firewall de IP.

A pessoa ou a equipe que configura as regras de firewall de IP tem acesso somente por meio do portal do Azure, do PowerShell ou da API REST?

Se sim, é necessário usar regras de firewall de IP no nível de servidor. As regras de firewall de IP no nível de banco de dados só podem ser configuradas com o Transact-SQL.

A pessoa ou a equipe que configura as regras de firewall de IP está proibida de ter permissão de alto nível no nível de banco de dados?

Se sim, use regras de firewall de IP no nível de servidor. Você precisa de pelo menos a permissão CONTROL DATABASE no nível de banco de dados para configurar regras de firewall de IP no nível de banco de dados com o Transact-SQL.

A pessoa ou a equipe que configura ou audita as regras de firewall de IP gerencia centralmente as regras de firewall de IP para muitos (talvez centenas) bancos de dados?

Nesse cenário, as práticas recomendadas são determinadas de acordo com as necessidades e o ambiente. As regras de firewall de IP no nível de servidor podem ser mais fáceis de serem configuradas, mas o script pode configurar regras no nível de banco de dados. E mesmo se você usar regras de firewall de IP no nível de servidor, talvez seja necessário auditar as regras de firewall de IP do banco de dados para ver se os usuários com a permissão CONTROL no banco de dados criaram regras de firewall de IP no nível de banco de dados.

Posso usar uma combinação de regras de firewall de IP no nível de servidor e de banco de dados?

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

Conexões pela Internet

Quando um computador tenta se conectar ao servidor pela Internet, o firewall primeiro verifica o endereço IP de origem da solicitação com base nas regras de firewall de IP no nível de banco de dados para o banco de dados que a conexão está solicitando.

  • Se o endereço estiver dentro de um intervalo especificado nas regras de firewall de IP no nível do 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 de IP no nível do banco de dados, o firewall verificará as regras de firewall de IP no nível de servidor. Se o endereço estiver dentro de um intervalo que está nas regras de firewall de IP no nível de servidor, a conexão será concedida. As regras de firewall de IP no nível de servidor se aplicam a todos os bancos de dados gerenciados pelo servidor.
  • Se o endereço não estiver dentro de um intervalo em uma das regras de firewall de IP no nível de banco de dados ou de servidor, a solicitação de conexão falhará.

Observação

Para acessar o Banco de Dados SQL do Azure pelo computador local, verifique se o firewall na rede e no computador local permite a comunicação de saída na porta TCP 1433.

Conexões de dentro do Azure

Para permitir que aplicativos hospedados dentro do Azure se conectem ao servidor SQL, as conexões do Azure devem estar habilitadas. Para habilitar as conexões do Azure, deve haver uma regra de firewall com endereços IP iniciais e finais definidos como 0.0.0.0.

Quando um aplicativo do Azure tenta se conectar ao servidor, o firewall verifica se as conexões do Azure são permitidas ao verificar se essa regra de firewall existe. Isso pode ser ativado diretamente no portal do Azure alternando Permitir que os serviços e recursos do Azure acessem esse servidor para ATIVADO nas configurações de Firewall e redes virtuais. Mudar a configuração para ATIVADO cria uma regra de firewall de entrada para o IP 0.0.0.0 - 0.0.0.0 chamada AllowAllWindowsAzureIps. A regra pode ser exibida na exibição sys.firewall_rules do banco de dados mestre. Use o PowerShell ou o CLI do Azure para criar uma regra de firewall com os endereços IP iniciais e finais definidos como 0.0.0.0 se você não estiver usando o portal.

Importante

Esta opção configura o firewall para permitir todas as conexões do Azure, incluindo as conexões das assinaturas de outros clientes. Se selecionar essa opção, verifique se as permissões de logon e de usuário limitam o acesso somente a usuários autorizados.

Permissões

Para criar e gerenciar regras de firewall de IP para o SQL Server do Azure, você precisará ter:

Criar e gerenciar regras de firewall de IP

Você cria a primeira configuração de firewall no nível do servidor usando o portal do Azure ou de forma programática usando Azure PowerShell, CLI do Azure ou uma API REST do Azure. Você cria e gerencia regras adicionais de firewall de IP no nível de servidor usando esses métodos ou o Transact-SQL.

Importante

As regras de firewall de IP no nível de banco de dados só podem ser criadas e gerenciadas usando o Transact-SQL.

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

Dica

Você pode usar a Auditoria de Banco de Dados para auditar alterações de firewall no nível do servidor e no nível de banco de dados.

Usar o portal do Azure para gerenciar regras de firewall de IP de nível de servidor

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

Dica

Para um tutorial, confira Criar um banco de dados usando o portal do Azure.

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

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

    Server IP firewall rule

    A página Configurações do firewall do servidor será aberta.

  2. Selecione Adicionar IP do cliente na barra de ferramentas para adicionar o endereço IP do computador que você está usando e depois Salvar. Uma regra de firewall de IP no nível do servidor é criada para seu endereço IP atual.

    Set server-level IP firewall rule

Na página de visão geral do servidor

A página de visão geral do servidor é aberta. Ela 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 de nível de servidor nesta página, selecione Firewall no menu Configurações no lado esquerdo.

  2. Selecione Adicionar IP do cliente na barra de ferramentas para adicionar o endereço IP do computador que você está usando e depois Salvar. Uma regra de firewall de IP no nível do servidor é criada para seu endereço IP atual.

Usar Transact-SQL para gerenciar regras de firewall de IP

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

O exemplo a seguir examina as regras existentes, habilita um intervalo de endereços IP no servidor Contoso e exclui uma regra de firewall de IP:

SELECT * FROM sys.firewall_rules ORDER BY name;

Em seguida, adicione uma regra de firewall de 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 excluir uma regra de firewall de IP no nível de servidor, execute o procedimento armazenado sp_delete_firewall_rule. O exemplo a seguir exclui a regra ContosoFirewallRule:

EXECUTE sp_delete_firewall_rule @name = N'ContosoFirewallRule'

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

Observação

Este artigo usa o módulo do PowerShell Azure Az, que é o módulo do PowerShell recomendado para interagir com o Azure. Para começar a usar o módulo Az PowerShell, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Importante

O módulo Azure Resource Manager do PowerShell ainda tem suporte do Banco de Dados SQL do Azure, mas todo o desenvolvimento é agora para o módulo Az.Sql. Para esses cmdlets, confira AzureRM.Sql. Os argumentos para os comandos no módulo Az e AzureRm são substancialmente idênticos.

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

O seguinte exemplo usa o PowerShell para definir uma regra de firewall de IP no nível de 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 do PowerShell no contexto de um início rápido, confira Criar banco de dados – PowerShell e Criar um banco de dados individual e configurar uma regra de firewall de IP no nível do servidor usando o PowerShell.

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

Cmdlet Nível Descrição
az sql server firewall-rule create Servidor Cria uma regra de firewall de IP do servidor
az sql server firewall-rule list Servidor Lista as regras de firewall de IP em um servidor
az sql server firewall-rule show Servidor Mostra os detalhes de uma regra de firewall de IP
az sql server firewall-rule update Servidor Atualiza uma regra de firewall de IP
az sql server firewall-rule delete Servidor Exclui uma regra de firewall de IP

O seguinte exemplo usa a CLI para definir uma regra de firewall de IP no nível de 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, especifique mysqldbserver em vez de mysqldbserver.database.windows.net

Para um exemplo da CLI no contexto de um início rápido, confira Criar banco de dados – CLI do Azure e Criar um banco de dados individual e configurar uma regra de firewall de IP de nível de servidor usando a CLI do Azure.

Use a API REST para gerenciar regras de firewall de IP de nível de servidor

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

Solucionar problemas do firewall do banco de dados

Considere os seguintes pontos quando o acesso ao Banco de Dados SQL do Azure não se comportar conforme o esperado.

  • Configuração de firewall local:

    Antes que o computador possa acessar o Banco de Dados SQL do Azure, talvez seja necessário criar uma exceção de firewall em seu computador para a porta TCP 1433. Para fazer conexões dentro do limite de nuvem do Azure, você precisará abrir portas adicionais. Para obter mais informações, confira a seção "Banco de Dados SQL: fora versus dentro" de Portas além da 1433 para ADO.NET 4.5 e Banco de Dados SQL do Azure.

  • Conversão de endereços de rede:

    Devido à NAT (conversão de endereços de rede), o endereço IP usado pelo computador para se conectar ao Banco de Dados SQL do Azure pode ser diferente do endereço IP nas configurações de IP do computador. Para exibir o endereço IP que o computador está usando para se conectar ao Azure:

    1. Entre no portal.
    2. Vá para a guia Configurar no servidor que hospeda o banco de dados.
    3. O Endereço IP do cliente atual é exibido na seção Endereços IP permitidos. Selecione Adicionar para Endereços IP permitidos para permitir que este computador acesse o servidor.
  • As alterações à lista de permissões ainda não entraram em vigor:

    Pode ocorrer um atraso de até cinco minutos para que as alterações na configuração do firewall do Banco de Dados SQL do Azure entrem em vigor.

  • O logon não está autorizado ou uma senha incorreta foi usada:

    Se um logon não tiver permissões no servidor ou a senha estiver incorreta, a conexão com o servidor será negada. A criação de uma configuração de firewall dá aos clientes apenas uma oportunidade de tentar se conectar ao servidor. O cliente ainda deve fornecer as credenciais de segurança necessárias. Para obter mais informações sobre como preparar logons, confira Controlar e conceder acesso ao banco de dados.

  • Endereço IP dinâmico:

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

    • Pergunte ao provedor de serviços de Internet o intervalo de endereços IP atribuído aos computadores cliente que acessam o servidor. Adicione esse intervalo de endereços IP como uma regra de firewall de IP.
    • Obtenha endereçamento IP estático para os computadores cliente. Adicione os endereços IP como regras de firewall de IP.

Próximas etapas