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 estiver executando o servidor flexível do Banco de Dados do Azure para 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 o acesso público, a instância do 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 os 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 ponto de extremidade público está disponível e somente hosts localizados na mesma rede podem acessar o servidor flexível do Banco de Dados do Azure para PostgreSQL.
É possível criar regras de firewall usando o portal do Azure ou os comandos da CLI do Azure. Você deve ser o proprietário da assinatura ou um colaborador da assinatura.
As regras de firewall no nível do servidor se aplicam a todos os bancos de dados na mesma instância do servidor flexível do 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 de alcançarem os bancos de dados do servidor flexível do Banco de Dados do Azure para PostgreSQL:
Conectar-se pela 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, será rejeitada.
Por exemplo, se o seu aplicativo se conectar com um driver Java Database Connectivity (JDBC) para o servidor flexível do 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: nenhuma entrada pg_hba.conf para o host "123.45.67.890", usuário "adminuser", banco de dados "postgresql", SSL
Observação
Para acessar o servidor flexível do Banco de Dados do Azure para PostgreSQL a partir do seu computador local, certifique-se de que o firewall da sua rede e o computador local permitam a comunicação de saída na porta TCP 5432.
Conectar-se por meio do Azure
É recomendável que você encontre o endereço IP de saída de um aplicativo ou serviço e permita explicitamente o acesso a esses endereços IP ou intervalos individuais. Por exemplo, você pode localizar o endereço IP de saída de uma 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 o serviço do Azure, habilite as conexões de todos os endereços IP para os datacenters do Azure:
- No portal do Azure, no painel Rede, marque a caixa de seleção Permitir acesso público nos serviços do Azure dentro do Azure para este servidor.
- Selecione Salvar.
Importante
A opção Permitir acesso público nos serviços do Azure dentro do Azure para este servidor configura o firewall para permitir todas as conexões do Azure, incluindo as conexões nas assinaturas de outros clientes. Ao usar essa opção, verifique se as permissões de entrada e de usuário limitam o acesso somente a usuários autorizados.
Gerenciar as regras de firewall programaticamente
Além de usar o portal do Azure, você pode gerenciar as 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 nos serviços do Azure dentro do Azure para este servidor no portal. Se as regras de firewall rejeitarem a tentativa de conexão, o aplicativo não alcançará a instância do servidor flexível do Banco de Dados do Azure para PostgreSQL.
Solucionar problemas de firewall
Considere as seguintes possibilidades quando o acesso a uma instância do servidor flexível de Banco de Dados do Azure para PostgreSQL não se comportar como você espera:
As alterações na lista de permissões ainda não entraram em vigor: as alterações na configuração do firewall de uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL podem levar até cinco minutos.
A entrada não está autorizada ou foi usada uma senha incorreta: se uma entrada não tiver permissões na instância do servidor flexível do Banco de Dados do Azure para PostgreSQL ou se a senha estiver incorreta, a conexão com o servidor será negada. A criação de uma configuração de firewall apenas oferece aos clientes a oportunidade de tentarem se conectar ao seu servidor. O cliente ainda deve fornecer as credenciais de segurança necessárias.
Por exemplo, o erro a seguir pode ser exibido em caso de falha na autenticação para um cliente JDBC:
java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: falha na autenticação da senha para o usuário "seunomedeusuário"
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 com dificuldades para atravessar o firewall, tente uma das seguintes soluções:
Solicite ao seu provedor de serviços de Internet (ISP) o intervalo de endereços IP atribuído aos computadores clientes que acessam a instância do servidor flexível do Banco de Dados do Azure para PostgreSQL. Em seguida, adicione o intervalo de endereços IP como uma regra de firewall.
Obtenha os endereços IP estáticos para os computadores cliente e adicione os endereços IP estáticos como 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 forem especificadas regras de firewall no formato IPv6, será exibido um erro de validação.