Acesso público no Azure Cosmos DB para PostgreSQL
APLICA-SE A: Azure Cosmos DB para PostgreSQL (alimentado pela extensão de banco de dados Citus para PostgreSQL)
O Azure Cosmos DB para PostgreSQL suporta três opções de rede:
- Sem acesso
- Esse é o padrão para um cluster recém-criado se o acesso público ou privado não estiver habilitado. Nenhum computador, dentro ou fora do Azure, pode se conectar aos nós do banco de dados.
- Acesso do público
- Um endereço IP público é atribuído ao nó coordenador.
- O acesso ao nó coordenador é protegido por firewall.
- Opcionalmente, o acesso a todos os nós de trabalho pode ser habilitado. Nesse caso, os endereços IP públicos são atribuídos aos nós de trabalho e são protegidos pelo mesmo firewall.
- Acesso privado
- Apenas endereços IP privados são atribuídos aos nós do cluster.
- Cada nó requer um ponto de extremidade privado para permitir que os hosts na rede virtual selecionada acessem os nós.
- Os recursos de segurança das redes virtuais do Azure, como grupos de segurança de rede, podem ser usados para controle de acesso.
Ao criar um cluster, você pode habilitar o acesso público ou privado ou optar pelo padrão de nenhum acesso. Depois que o cluster for criado, você poderá optar por alternar entre acesso público ou privado ou ativá-los ambos de uma só vez.
Esta página descreve a opção de acesso público. Para acesso privado, consulte Acesso privado no Azure Cosmos DB para PostgreSQL.
Descrição geral das firewalls
O firewall do servidor Azure Cosmos DB para PostgreSQL impede todo o acesso ao nó coordenador até que você especifique quais computadores têm permissão. A firewall concede acesso ao servidor com base no endereço IP de origem de cada pedido. Para configurar a firewall, crie as regras de firewall que especificam intervalos de endereços IP aceitáveis. Pode criar regras da firewall ao nível do servidor.
Regras de firewall: essas regras permitem que os clientes acessem seu nó coordenador, ou seja, todos os bancos de dados dentro do mesmo servidor lógico. As regras de firewall no nível de servidor podem ser configuradas usando o portal do Azure. Para criar regras da firewall ao nível do servidor, tem de ser o proprietário da subscrição ou um contribuinte da subscrição.
Todo o acesso ao banco de dados ao nó coordenador é bloqueado pelo firewall por padrão. Para começar a usar o servidor de outro computador, você precisa especificar uma ou mais regras de firewall no nível do servidor para habilitar o acesso ao servidor. Use as regras de firewall para especificar quais endereços IP variam da Internet para permitir. O acesso ao próprio site do portal do Azure não é afetado pelas regras de firewall. As tentativas de conexão da Internet e do Azure devem primeiro passar pelo firewall antes de chegarem ao seu banco de dados PostgreSQL, conforme mostrado no diagrama a seguir:
Ligar a partir da Internet e do Azure
Um firewall de cluster controla quem pode se conectar ao nó coordenador do grupo. O firewall determina o acesso consultando uma lista configurável de regras. Cada regra é um endereço IP, ou intervalo de endereços, que são permitidos.
Quando a firewall bloqueia as ligações, pode causar erros de aplicação. A utilização do controlador JDBC do PostgreSQL, por exemplo, gera um erro como este:
java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: no pg\_hba.conf entry for host "123.45.67.890", user "citus", database "citus", SSL
Consulte Criar e gerenciar regras de firewall para saber como as regras são definidas.
Solucionar problemas do firewall do servidor de banco de dados
Quando o acesso ao serviço Microsoft Azure Cosmos DB para PostgreSQL não se comportar como esperado, considere estes pontos:
As alterações na 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 Azure Cosmos DB for PostgreSQL entrem em vigor.
O usuário não está autorizado ou uma senha incorreta foi usada: se um usuário não tiver permissões no servidor ou a senha usada estiver incorreta, a conexão com o servidor será negada. A criação de uma configuração de firewall oferece apenas 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, usando um cliente JDBC, o seguinte erro pode aparecer.
java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "yourusername"
Endereço IP dinâmico: 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 computadores clientes que acedem ao nó coordenador e, em seguida, adicione o intervalo de endereços IP como uma regra de firewall.
Obtenha o endereçamento IP estático em vez disso para os computadores clientes e, em seguida, adicione o endereço IP estático como uma regra de firewall.
Próximos passos
Para artigos sobre como criar regras de firewall no nível do servidor e no nível do banco de dados, consulte: