Regras de firewall no Banco de Dados do Azure para PostgreSQL - Servidor Flexível
APLICA-SE A: Banco de Dados do Azure para PostgreSQL - Servidor Flexível
Quando você está executando o Banco de Dados do Azure para servidor flexível PostgreSQL, você tem duas opções de rede principais. As opções são acesso privado (integração de rede virtual) e acesso público (endereços IP permitidos).
Com acesso público, a instância de servidor flexível do Banco de Dados do Azure para PostgreSQL é acessada por meio de um ponto de extremidade 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. A firewall concede acesso ao servidor com base no endereço IP de origem de cada pedido. Com acesso privado, nenhum ponto de extremidade público está disponível e apenas hosts localizados na mesma rede podem acessar o Banco de Dados do Azure para servidor flexível PostgreSQL.
Você pode criar regras de firewall usando o portal do Azure ou os comandos da CLI do Azure. Tem de ser o proprietário da subscrição ou um contribuidor da subscrição.
As regras de firewall no nível de servidor se aplicam a todos os bancos de dados no mesmo Banco de Dados do Azure para instância de servidor flexível do 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 de poderem acessar o Banco de Dados do Azure para bancos de dados de servidor flexíveis PostgreSQL:
Ligue-se a partir da 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, é rejeitado.
Por exemplo, se seu aplicativo se conectar a um driver JDBC (Java Database Connectivity) para o banco de dados do Azure para servidor flexível 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: nenhuma entrada pg_hba.conf para host "123.45.67.890", usuário "adminuser", banco de dados "postgresql", SSL
Nota
Para aceder ao servidor flexível da Base de Dados do Azure para PostgreSQL a partir do seu computador local, certifique-se de que a firewall na sua rede e no computador local permite a comunicação de saída na porta TCP 5432.
Conectar-se a partir do Azure
Recomendamos que você encontre o endereço IP de saída de qualquer aplicativo ou serviço e permita explicitamente o acesso a esses endereços IP ou intervalos individuais. 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 fixo 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:
- No portal do Azure, no painel Rede, marque a caixa de seleção Permitir acesso público de qualquer serviço do Azure no Azure a este servidor.
- Selecione Guardar.
Importante
A opção Permitir acesso público de qualquer serviço do Azure no Azure a este servidor configura o firewall para permitir todas as conexões do Azure, incluindo conexões de assinaturas de outros clientes. Quando estiver a utilizar esta opção, certifique-se de que as suas permissões de início de sessão e de utilizador limitam o acesso apenas a utilizadores 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 faz o equivalente à opção Permitir acesso público de qualquer serviço do Azure no Azure a este servidor no portal. Se as regras de firewall rejeitarem a tentativa de conexão, o aplicativo não alcançará a instância flexível do servidor do Banco de Dados do Azure para PostgreSQL.
Solucionar problemas de firewall
Considere as seguintes possibilidades quando o acesso a uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL não se comportar como esperado:
As alterações na lista de permissões ainda não entraram em vigor: as alterações na configuração de firewall de uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL podem levar até cinco minutos.
O início de sessão não está autorizado ou foi utilizada uma palavra-passe incorreta: se um início de sessão não tiver permissões na instância flexível do servidor da Base de Dados do Azure para PostgreSQL ou se a palavra-passe estiver incorreta, a ligação ao servidor será negada. Criar uma configuração de firewall apenas oferece aos clientes a oportunidade de tentar se conectar ao seu servidor. Cada cliente ainda deve fornecer as credenciais de segurança necessárias.
Por exemplo, o seguinte erro pode 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, tente uma das seguintes soluções:
Peça ao seu provedor de serviços de Internet (ISP) o intervalo de endereços IP atribuído aos computadores clientes que acessam o Banco de Dados do Azure para a instância flexível do servidor PostgreSQL. Em seguida, adicione o intervalo de endereços IP como uma regra de firewall.
Em vez disso, obtenha endereços IP estáticos para os computadores clientes e, em seguida, 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, receberá um erro de validação.