Regras de firewall no Banco de Dados do Azure para servidor flexível PostgreSQL

Ao executar um servidor Banco de Dados do Azure para PostgreSQL flexível, você tem duas opções principais de rede: acesso privado (integração de rede virtual) e acesso público (endereços IP permitidos).

Com acesso público, você acessa o Servidor Flexível do Banco de Dados do Azure para PostgreSQL por meio de um endpoint público. Por padrão, o firewall bloqueia todo o acesso ao servidor. Para especificar quais hosts IP podem acessar o servidor, crie regras de firewall no nível do servidor. As regras de firewall especificam intervalos de endereços IP públicos permitidos. O firewall concede acesso ao servidor com base no endereço IP de origem de cada solicitação. Com acesso privado, nenhum endpoint público fica disponível, e apenas hosts na mesma rede podem acessar o servidor flexível do Banco de Dados do Azure para PostgreSQL.

Crie regras de firewall usando o portal Azure ou usando comandos CLI do Azure. Você deve ser o proprietário da assinatura ou um colaborador de assinatura.

As regras de firewall no nível do servidor se aplicam a todos os bancos de dados no mesmo servidor flexível Banco de Dados do Azure para PostgreSQL. As regras não afetam o acesso ao site do portal do Azure.

O diagrama a seguir mostra como as tentativas de conexão da Internet e do Azure devem passar pelo firewall antes que possam acessar os bancos de dados do Banco de Dados do Azure para PostgreSQL.

Diagrama de regras de firewall no Banco de Dados do Azure para PostgreSQL.

Conectar-se à Internet

Se o endereço IP de origem da solicitação estiver dentro de um dos intervalos especificados nas regras de firewall no nível do servidor, a conexão será concedida. Caso contrário, ele será rejeitado.

Por exemplo, se seu aplicativo se conectar a um driver JDBC (Conectividade de Banco de Dados Java) para o Banco de Dados do Azure para PostgreSQL, você poderá encontrar esse erro porque o firewall está bloqueando a conexão:

  • java.util.concurrent.ExecutionException: java.lang.RuntimeException:
  • org.postgresql.util.PSQLException: FATAL: sem entrada pg_hba.conf para host "123.45.67.890", usuário "adminuser", banco de dados "postgresql", SSL

Observação

Para acessar o servidor Banco de Dados do Azure para PostgreSQL flexível do computador local, verifique se o firewall na rede e no computador local permite a comunicação de saída na porta TCP 5432.

Conectar-se por meio do Azure

Localize o endereço IP de saída de qualquer aplicativo ou serviço e permita explicitamente o acesso a esses endereços IP individuais ou intervalos. Por exemplo, você pode encontrar o endereço IP de saída de um aplicativo do Serviço de Aplicativo do Azure ou usar um endereço IP público vinculado a uma máquina virtual.

Se um endereço IP de saída fixa não estiver disponível para seu serviço do Azure, considere habilitar conexões de todos os endereços IP para datacenters do Azure:

  1. No portal do Azure, no painel Rede, selecione a caixa de seleção Permitir acesso público de qualquer serviço do Azure dentro do Azure para este servidor.

  2. Clique em Salvar.

    Captura de tela da página de rede com firewall.

    Importante

    A opção Permitir acesso público de qualquer serviço do Azure dentro do Azure para este servidor configura o firewall para permitir todas as conexões provenientes do Azure, incluindo conexões das assinaturas de outros clientes. Ao usar essa opção, verifique se suas permissões de entrada e de usuário limitam o acesso somente a usuários autorizados.

Gerenciar regras de firewall programaticamente

Além de usar o portal do Azure, você pode gerenciar regras de firewall programaticamente usando a CLI do Azure.

Na CLI do Azure, uma configuração de regra de firewall com um endereço inicial e final igual a 0.0.0.0 realiza o equivalente à opção Permitir acesso público de qualquer serviço do Azure dentro do Azure a este servidor no portal. Se as regras de firewall rejeitarem a tentativa de conexão, o aplicativo não alcançará o servidor Banco de Dados do Azure para PostgreSQL flexível.

Solucionar problemas de firewall

Considere as seguintes possibilidades quando o acesso ao Banco de Dados do Azure para PostgreSQL - Servidor Flexível não ocorrer como esperado:

  • As alterações na lista de permissões ainda não estão em vigor: as alterações na configuração de firewall de um servidor Banco de Dados do Azure para PostgreSQL flexível podem levar até cinco minutos.

  • A entrada não está autorizada ou uma senha incorreta foi usada: se uma entrada não tiver permissões no servidor Banco de Dados do Azure para PostgreSQL flexível ou a senha estiver incorreta, a conexão com o servidor será negada. A criação de uma configuração de firewall só dá aos clientes a oportunidade de tentar se conectar ao servidor. Cada cliente ainda deve fornecer as credenciais de segurança necessárias.

Por exemplo, o seguinte erro poderá aparecer se a autenticação falhar para um cliente JDBC:

  • java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: falha na autenticação de senha para o usuário "yourusername"

  • O firewall não está permitindo endereços IP dinâmicos: se você tiver uma conexão com a Internet com endereçamento IP dinâmico e estiver tendo problemas para passar pelo firewall, experimente uma das seguintes soluções:

  • Peça ao provedor de serviços de Internet (ISP) o intervalo de endereços IP atribuído aos computadores cliente que acessam o servidor flexível Banco de Dados do Azure para PostgreSQL. Em seguida, adicione o intervalo de endereços IP como uma regra de firewall.

  • Obtenha endereços IP estáticos para seus computadores cliente e adicione os endereços IP estáticos como uma regra de firewall.

  • As regras de firewall não estão disponíveis para o formato IPv6: as regras de firewall devem estar no formato IPv4. Se você especificar regras de firewall no formato IPv6, você receberá um erro de validação.