Rede com acesso público (endereços IP permitidos) no servidor flexível do Base de Dados do Azure para PostgreSQL

Este artigo descreve conceitos de conectividade e redes para o Base de Dados do Azure para PostgreSQL para servidores flexíveis.

Ao criar um servidor flexível Base de Dados do Azure para PostgreSQL, deve escolher uma das seguintes opções de rede:

  • Acesso privado (integração de rede virtual)
  • Acesso público (endereços IP permitidos) e ponto de extremidade privado

As seguintes características se aplicam se você optar por usar a opção de acesso privado ou público:

  • As ligações a partir de endereços IP permitidos precisam de se autenticar no servidor flexível Base de Dados do Azure para PostgreSQL com credenciais válidas.
  • A criptografia de conexão é imposta para o tráfego da rede.
  • O servidor tem um nome de domínio totalmente qualificado (FQDN). Para a propriedade hostname nas cadeias de ligação, utilize o FQDN em vez de um endereço IP.
  • Ambas as opções controlam o acesso no nível do servidor, não no nível do banco de dados ou da tabela. Use as propriedades de função do PostgreSQL para controlar o acesso a bases de dados, tabelas e outros objetos.

Observação

Como o serviço Base de Dados do Azure para PostgreSQL é um serviço de base de dados gerida, os utilizadores não têm acesso ao host ou ao sistema operativo para visualizar ou modificar ficheiros de configuração como pg_hba.conf. O serviço atualiza automaticamente o conteúdo dos ficheiros com base nas definições de rede.

Usar a rede de acesso público com a Base de Dados Azure para PostgreSQL

Quando escolhe o método de acesso público, acede ao seu servidor flexível Base de Dados do Azure para PostgreSQL através de um endpoint público via internet. O ponto final público é um endereço DNS publicamente resolvível. A frase endereços IP permitidos refere-se a um intervalo de endereços IP que você escolhe dar permissão para acessar seu servidor. Essas permissões são chamadas de regras de firewall.

Escolha esta opção de rede se desejar os seguintes recursos:

  • Conecte-se a partir de recursos do Azure que não oferecem suporte a redes virtuais.
  • Conecte-se a partir de recursos fora do Azure que não estão conectados por VPN ou Azure ExpressRoute.
  • Certifique-se de que o servidor flexível Base de Dados do Azure para PostgreSQL tem um endpoint público acessível através da internet.

As características do método de acesso do público incluem:

  • Apenas os endereços IP que autoriza têm permissão para aceder ao seu servidor flexível do Base de Dados do Azure para PostgreSQL. Por padrão, nenhum endereço IP é permitido. Você pode adicionar endereços IP durante a criação do servidor ou depois.

  • O seu servidor flexível Base de Dados do Azure para PostgreSQL tem um nome DNS publicamente resolvível.

  • O seu servidor flexível Base de Dados do Azure para PostgreSQL não está numa das suas redes virtuais Azure.

  • O tráfego de rede de e para o servidor não passa por uma rede privada. O tráfego utiliza as vias gerais da Internet.

Regras de firewall

Regras de firewall ao nível do servidor aplicam-se a todas as bases de dados no mesmo servidor flexível Base de Dados do Azure para PostgreSQL. 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 a sua aplicação se ligar ao driver JDBC para PostgreSQL, pode encontrar este erro quando tenta ligar e o firewall está a bloquear a ligação.

java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "123.45.67.890", user "adminuser", database "postgresql", SSL

Observação

Para aceder a um servidor flexível Base de Dados do Azure para PostgreSQL a partir do seu computador local, certifique-se de que o firewall da sua rede e do computador local permitem a comunicação de saída na porta TCP 5432.

Regras de firewall gerenciadas programaticamente

Além de usar o portal do Azure, você pode gerenciar regras de firewall programaticamente usando a CLI do Azure. Para obter mais informações, consulte Rede.

Permitir todos os endereços IP do Azure

Encontre o endereço IP de saída de qualquer aplicação ou serviço e permita explicitamente o acesso a esses endereços IP ou intervalos individuais. Se não houver um endereço IP fixo de saída disponível para o seu serviço Azure, considere ativar ligações a partir de todos os endereços IP para centros de dados Azure.

Para habilitar essa configuração 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 e selecione Salvar.

Importante

A opção Permitir acesso público dos serviços e recursos do Azure no Azure configura o firewall para permitir todas as conexões do Azure, incluindo conexões de assinaturas de outros clientes. Quando selecionar 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.

Solucionar problemas de acesso público

Considere os seguintes pontos quando o acesso ao servidor flexível Base de Dados do Azure para PostgreSQL não se comporta como esperado:

  • As alterações à lista de permissões ainda não estão em vigor. Alterações à configuração do firewall do servidor flexível Base de Dados do Azure para PostgreSQL podem demorar até cinco minutos a entrar em vigor.

  • Falha na autenticação. Se um utilizador não tiver permissões no servidor flexível Base de Dados do Azure para PostgreSQL ou se a palavra-passe estiver incorreta, a ligação ao servidor flexível Base de Dados do Azure para PostgreSQL é negada. Criar uma configuração de firewall só dá aos clientes a oportunidade de tentarem ligar-se ao seu servidor. Cada cliente ainda deve fornecer as credenciais de segurança necessárias.

  • O endereço IP dinâmico do cliente está impedindo o acesso. 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 fornecedor de serviços de internet (ISP) o intervalo de endereços IP atribuído aos seus computadores clientes que acedem ao servidor flexível Base de Dados do Azure para PostgreSQL. Em seguida, adicione o intervalo de endereços IP como uma regra de firewall.
    • Obtenha endereçamento IP estático em vez disso para os computadores clientes. Em seguida, adicione o endereço IP estático como uma regra de firewall.
  • A regra de firewall não está disponível para o formato IPv6. As regras da firewall têm de estar no formato IPv4. Se você especificar regras de firewall no formato IPv6, receberá um erro de validação.

Nome do anfitrião

Independentemente da opção de rede que escolher, use sempre um nome de domínio totalmente qualificado (FQDN) como nome anfitrião ao ligar ao seu servidor flexível Base de Dados do Azure para PostgreSQL. Não é garantido que o endereço IP do servidor permaneça estático. Usar o FQDN ajuda a evitar fazer alterações na cadeia de conexão.

Um exemplo que usa um FQDN como um nome de host é hostname = servername.postgres.database.azure.com. Sempre que possível, evite usar hostname = 10.0.0.4 (um endereço privado) ou hostname = 40.2.45.67 (um endereço público).

Endereços IP de saída para configuração de firewall

Quando o seu servidor flexível Base de Dados do Azure para PostgreSQL precisa de fazer ligações de saída a serviços externos (por exemplo, para replicação lógica, extensões que se ligam a recursos externos ou fontes de dados externas), pode ser necessário configurar regras de firewall nesses serviços externos para permitir o tráfego do seu servidor de base de dados.

Localizando o endereço IP do servidor

Para encontrar o endereço IP atualmente atribuído à sua base de dados Base de Dados do Azure para PostgreSQL flexible server:

  • Utilizar a resolução de DNS: Resolver o FQDN do servidor (servername.postgres.database.azure.com) para obter o endereço IP atual. Utilize ferramentas como nslookup ou dig.

    nslookup servername.postgres.database.azure.com
    
  • Utilizar o portal do Azure: Aceda ao seu servidor flexível do Base de Dados do Azure para PostgreSQL no portal do Azure. O endereço IP público do servidor não é exibido diretamente, mas você pode encontrá-lo resolvendo o FQDN do servidor.

  • Usar CLI do Azure: Use CLI do Azure para obter informações sobre o seu servidor e depois resolver o nome do host:

    az postgres flexible-server show --resource-group myResourceGroup --name myServerName
    

Considerações importantes para conexões de saída

  • Os endereços IP podem mudar: O endereço IP público atribuído ao seu servidor flexível Base de Dados do Azure para PostgreSQL não é estático e pode mudar durante manutenção, atualizações ou outros eventos operacionais. Use sempre o FQDN sempre que possível e atualize regularmente as regras de firewall externas, se necessário.

  • Intervalos de IP do centro de dados Azure: Para uma configuração de firewall mais previsível, permita o tráfego de toda a faixa de IP do centro de dados Azure para a região onde o seu servidor está localizado. O Azure publica os intervalos de IP para cada região no download de Intervalos de IP e Tags de Serviço do Azure .

  • Tags de serviço: se o serviço externo ao qual você está se conectando também estiver hospedado no Azure, considere usar as Tags de Serviço do Azure para obter regras de firewall mais dinâmicas e fáceis de manter.

  • Alternativa de ponto de extremidade privado: para uma conectividade mais estável e para evitar endereços IP públicos, considere o uso de pontos de extremidade privados em vez de acesso público.