Regole del firewall nel server flessibile di Database di Azure per PostgreSQL

Quando si esegue un server flessibile Database di Azure per PostgreSQL, sono disponibili due opzioni di rete principali: accesso privato (integrazione della rete virtuale) e accesso pubblico (indirizzi IP consentiti).

Con l'accesso pubblico, si accede al server flessibile Database di Azure per PostgreSQL tramite un endpoint pubblico. Per impostazione predefinita, il firewall blocca tutti gli accessi al server. Per specificare gli host IP che possono accedere al server, creare regole del firewall a livello di server. Le regole del firewall specificano gli intervalli di indirizzi IP pubblici consentiti. Il firewall concede l'accesso al server in base all'indirizzo IP di origine di ogni richiesta. Con l'accesso privato non è disponibile alcun endpoint pubblico e solo gli host che si trovano nella stessa rete possono accedere al server flessibile Database di Azure per PostgreSQL.

Creare regole del firewall usando il portale di Azure o i comandi interfaccia della riga di comando di Azure. È necessario essere il proprietario della sottoscrizione o un collaboratore alla sottoscrizione.

Le regole del firewall a livello di server si applicano a tutti i database nello stesso server flessibile Database di Azure per PostgreSQL. Le regole non influiscono sull'accesso al sito Web del portale di Azure.

Il diagramma seguente illustra come i tentativi di connessione da Internet e Azure devono passare attraverso il firewall prima di poter raggiungere i database di Database di Azure per PostgreSQL:

Diagramma delle regole del firewall in Database di Azure per PostgreSQL.

Connettersi da Internet

Se l'indirizzo IP di origine della richiesta rientra in uno degli intervalli specificati nelle regole firewall a livello di server, viene consentita la connessione. In caso contrario, viene rifiutato.

Ad esempio, se l'applicazione si connette con un driver JDBC (Java Database Connectivity) per Database di Azure per PostgreSQL, è possibile che si verifichi questo errore perché il firewall blocca la connessione:

  • java.util.concurrent.ExecutionException: java.lang.RuntimeException:
  • org.postgresql.util.PSQLException: FATALE: nessuna voce pg_hba.conf per l'host "123.45.67.890", utente "adminuser", database "postgresql", SSL

Annotazioni

Per accedere al server flessibile Database di Azure per PostgreSQL dal computer locale, assicurarsi che il firewall nella rete e nel computer locale consenta la comunicazione in uscita sulla porta TCP 5432.

Connessione da Azure

Trovare l'indirizzo IP in uscita di qualsiasi applicazione o servizio e consentire esplicitamente l'accesso a tali singoli indirizzi IP o intervalli. Ad esempio, è possibile trovare l'indirizzo IP in uscita di un'app del servizio app di Azure o usare un indirizzo IP pubblico associato a una macchina virtuale.

Se non è disponibile un indirizzo IP in uscita fisso per il servizio di Azure, valutare la possibilità di abilitare le connessioni da tutti gli indirizzi IP del data center di Azure:

  1. Nel riquadro Rete del portale di Azure selezionare la casella di controllo Consenti l'accesso pubblico da qualsiasi servizio di Azure in Azure a questo server.

  2. Seleziona Salva.

    Screenshot della pagina di rete con il firewall.

    Importante

    L'opzione Consenti l'accesso pubblico da servizi di Azure in Azure a questo server configura il firewall per consentire tutte le connessioni da Azure, incluse le connessioni dalle sottoscrizioni di altri clienti. Quando si usa questa opzione, assicurarsi che le autorizzazioni di accesso e utente limitino l'accesso solo agli utenti autorizzati.

Gestione di regole del firewall a livello di programmazione

Oltre a usare il portale di Azure, è possibile gestire le regole del firewall a livello di codice usando l'interfaccia della riga di comando di Azure.

Dall'interfaccia della riga di comando di Azure, un'impostazione di regola del firewall con un indirizzo iniziale e finale uguale a 0.0.0.0 equivale all'opzione Consenti l'accesso pubblico da servizi di Azure in Azure a questo server nel portale. Se le regole del firewall rifiutano il tentativo di connessione, l'app non raggiunge il server flessibile Database di Azure per PostgreSQL.

Risolvere i problemi del firewall

Quando l'accesso a un server flessibile Database di Azure per PostgreSQL non si comporta come previsto, considerare le possibilità seguenti:

  • Le modifiche apportate all'elenco di elementi consentiti non sono ancora effettive: le modifiche apportate alla configurazione del firewall di un server flessibile Database di Azure per PostgreSQL possono richiedere fino a cinque minuti.

  • L'accesso non è autorizzato o è stata usata una password non corretta: se un accesso non dispone delle autorizzazioni per il server flessibile Database di Azure per PostgreSQL o la password non è corretta, la connessione al server viene negata. La creazione di un'impostazione del firewall consente solo ai client di provare a connettersi al server. I singoli client devono comunque fornire le credenziali di sicurezza necessarie.

Ad esempio, l'errore seguente potrebbe essere visualizzato se l'autenticazione non riesce per un client JDBC:

  • java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: autenticazione della password non riuscita per l'utente "yourusername"

  • Il firewall non consente indirizzi IP dinamici: se si dispone di una connessione Internet con indirizzi IP dinamici e si verificano problemi durante il passaggio del firewall, provare una delle soluzioni seguenti:

  • Chiedere al provider di servizi Internet (ISP) di specificare l'intervallo di indirizzi IP assegnato ai computer client che accedono al server flessibile Database di Azure per PostgreSQL. Aggiungere quindi l'intervallo di indirizzi IP come regola del firewall.

  • Ottenere indirizzi IP statici per i computer client, quindi aggiungere gli indirizzi IP statici come una regola del firewall.

  • Le regola del firewall non sono disponibili per il formato IPv6: le regole del firewall devono essere in formato IPv4. Se si specificano regole del firewall in formato IPv6, viene visualizzato un errore di convalida.