Compartilhar via


Visão geral de rede do Banco de Dados do Azure para PostgreSQL com acesso público (endereços IP permitidos)

Este artigo descreve os conceitos de conectividade e rede para instâncias de servidor flexíveis do Banco de Dados do Azure para PostgreSQL.

Ao criar uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL, você 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ê escolher usar o acesso privado ou a opção de acesso público:

  • Conexões originadas de endereços IP permitidos devem autenticar-se na instância de servidor flexível do Banco de Dados do Azure para PostgreSQL usando credenciais válidas.
  • A criptografia de conexão é imposta para o tráfego de rede.
  • O servidor tem um nome de domínio totalmente qualificado (FQDN). Para a propriedade hostname em cadeias de conexão, é recomendável usar o FQDN em vez de um endereço IP.
  • As duas opções controlam o acesso no nível do servidor, não no nível do banco de dados ou da tabela. Você usaria as Propriedades de Função do PostgreSQL para controlar o Acesso ao Banco de Dados, Tabela e outros Objetos.

Observação

Como o serviço banco de dados do Azure para PostgreSQL é um serviço de banco de dados gerenciado, os usuários não recebem acesso ao host ou ao sistema operacional para exibir ou modificar arquivos de configuração, como pg_hba.conf. O conteúdo dos arquivos é atualizado automaticamente com base nas configurações de rede.

Usar a rede de acesso público com o Banco de Dados do Azure para PostgreSQL

Quando você escolhe o método de acesso público, sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL é acessada por meio de um ponto de extremidade público pela Internet. O ponto de extremidade público é um endereço DNS que poderia ser resolvido publicamente. A frase endereços IP permitidos refere-se a um intervalo de IPs que você escolhe para conceder permissão de acesso ao seu servidor. Essas permissões são chamadas regras de firewall.

Escolha esta opção de rede se você deseja ter as seguintes funcionalidades:

  • Conectar-se a partir de recursos do Azure que não têm suporte a redes virtuais.
  • Conectar de Recursos fora do Azure que não estão conectados por VPN ou Azure ExpressRoute.
  • Verifique se a instância do servidor flexível do Banco de Dados do Azure para PostgreSQL tem um ponto de extremidade público acessível pela Internet.

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

  • Somente os endereços IP que você permite têm permissão para acessar sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL. Por padrão, nenhum endereço IP está permitido. Você pode adicionar endereços IP durante a criação do servidor ou posteriormente.

  • Sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL tem um nome DNS resolvível publicamente.

  • Sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL não está em uma de suas redes virtuais do Azure.

  • O tráfego de rede no servidor não passa por uma rede privada. O tráfego usa os caminhos gerais da Internet.

Regras de firewall

As regras de firewall no nível do servidor se aplicam a todos os bancos de dados na mesma instância de servidor flexível do Banco 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, será rejeitada. Por exemplo, se seu Aplicativo se conectar com o Driver JDBC para PostgreSQL, você poderá encontrar este Erro ao tentar conectar quando o Firewall estiver bloqueando a Conexã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 acessar uma instância de servidor flexível do Azure Database for PostgreSQL a partir do seu computador local, verifique se os firewalls na rede e no 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

É 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. Se um endereço IP de saída fixo não estiver disponível para o serviço do Azure, você pode pensar em habilitar conexões de todos os endereços IP para os datacenters do Azure.

Para habilitar essa Configuração no portal do Azure, no Sistema de Rede, selecione a caixa de seleção Permitir acesso público de qualquer Serviço do Azure dentro do Azure a esse Servidor e, em seguida, 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 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.

Solução de problemas de acesso público

Considere as seguintes possibilidades quando o acesso a uma instância do servidor flexível do Banco de Dados do Azure para PostgreSQL não se comportar como você espera:

  • As alterações à lista de permissões ainda não entraram em vigor. Pode haver um Atraso de até cinco Minutos para que as Alterações na Configuração do Firewall do servidor flexível do Banco de Dados do Azure para PostgreSQL tenham efeito.

  • Falha na autenticação. Se um usuário não tiver permissões na instância de servidor flexível do Banco de Dados do Azure para PostgreSQL ou a senha estiver incorreta, a conexão com a instância do servidor flexível do Banco de Dados do Azure para PostgreSQL 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.

  • 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 acessar o firewall, tente 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 a instância de 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 endereçamento IP estático para os computadores cliente. 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 de firewall devem estar no formato IPv4. Se você especificar regras de firewall no formato IPv6, você receberá um erro de validação.

Nome do host

Independentemente da opção de rede escolhida, recomendamos que você sempre use um FQDN como nome de host ao se conectar à instância de servidor flexível do Banco de Dados do Azure para PostgreSQL. Não há garantia de que o endereço IP do servidor permanecerá estático. Usar o FQDN ajuda você a evitar fazer alterações na cadeia de conexão.

Um exemplo que usa um FQDN como 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 sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL precisa fazer conexões de saída com serviços externos (por exemplo, para replicação lógica, extensões que se conectam a recursos externos ou fontes de dados externas), talvez seja necessário configurar regras de firewall nesses serviços externos para permitir o tráfego do servidor de banco de dados.

Localizando o endereço IP do servidor

Para encontrar o endereço IP atribuído atualmente à instância flexível do servidor de banco de dados do Azure para PostgreSQL:

  • Usando a resolução DNS: você pode resolver o FQDN do servidor (servername.postgres.database.azure.com) para obter o endereço IP atual. Use ferramentas como nslookup ou dig:

    nslookup servername.postgres.database.azure.com
    
  • Usando o portal do Azure: navegue até a instância do servidor flexível do Banco 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.

  • Usando a CLI do Azure: você pode usar a CLI do Azure para obter informações sobre seu servidor e, em seguida, 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 ser alterados: o endereço IP público atribuído à instância do servidor flexível do Banco de Dados do Azure para PostgreSQL não é estático e pode ser alterado durante a manutenção, atualizações ou outros eventos operacionais. Sempre use o FQDN quando possível e atualize regularmente as regras de firewall externo, se necessário.

  • Intervalos de IP do datacenter do Azure: para uma configuração de firewall mais previsível, você pode permitir o tráfego de todo o intervalo de IP do datacenter do Azure para a região em que o servidor está localizado. O Azure publica os intervalos de IP para cada região no download de Intervalos de IP e Marcas de Serviço do Azure.

  • Marcas de Serviço: se o serviço externo ao qual você está se conectando também estiver hospedado no Azure, considere o uso de Marcas de Serviço do Azure para regras de firewall mais dinâmicas e mantenedíveis.

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