Regole del firewall in Database di Azure per PostgreSQL - Server singolo

SI APPLICA A: Database di Azure per PostgreSQL - Server singolo

Importante

Database di Azure per PostgreSQL - Il server singolo è in fase di ritiro. È consigliabile eseguire l'aggiornamento a Database di Azure per PostgreSQL - Server flessibile. Per altre informazioni sulla migrazione a Database di Azure per PostgreSQL - Server flessibile, vedere Cosa succede a Database di Azure per PostgreSQL - Server singolo?.

Il server di Database di Azure per PostgreSQL è protetto per impostazione predefinita, impedendo tutti gli accessi al server di database fino a quando non si specifica quali host IP sono autorizzati ad accedervi. Il firewall concede l'accesso al server in base all'indirizzo IP di origine di ogni richiesta. Per configurare il firewall, creare regole del firewall che specificano gli intervalli di indirizzi IP accettabili. È possibile creare regole firewall a livello di server.

Regole firewall: queste regole consentono ai client di accedere all'intero Database di Azure per il server PostgreSQL, ovvero a tutti i database all'interno dello stesso server logico. Le regole firewall a livello di server possono essere configurate usando il portale di Azure o i comandi dell'interfaccia della riga di comando di Azure. Per creare regole firewall a livello di server è necessario essere il proprietario o un collaboratore della sottoscrizione.

Panoramica del firewall

Per impostazione predefinita, l'accesso al server di Database di Azure per PostgreSQL è bloccato dal firewall. Per accedere al server da un altro computer/client o applicazione è necessario specificare una o più regole firewall a livello di server che consentano di accedere al server. Usare le regole del firewall per specificare gli intervalli di indirizzi IP pubblici consentiti. L'accesso al sito Web del portale di Azure non è determinato dalle regole firewall. I tentativi di connessione da Internet e Azure devono superare il firewall prima di poter raggiungere il database PostgreSQL, come illustrato nel diagramma seguente:

Esempio del flusso di funzionamento del firewall

Connessione da Internet

Le regole firewall a livello di server si applicano a tutti i database dello stesso Database di Azure per il server PostgreSQL. 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, altrimenti viene rifiutata. Ad esempio, se l'applicazione si connette con il driver JDBC per PostgreSQL, potrebbe verificarsi questo errore durante il tentativo di connessione quando il firewall blocca la connessione.

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

Nota

Per accedere al 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

È consigliabile trovare l'indirizzo IP in uscita di qualsiasi applicazione o servizio e consentire esplicitamente l'accesso a tali singoli indirizzi o intervalli IP. Ad esempio, è possibile trovare l'indirizzo IP in uscita di un servizio app di Azure o usare un indirizzo IP pubblico associato a una macchina virtuale o a un'altra risorsa (vedere di seguito per informazioni sulla connessione con l'indirizzo IP privato di una macchina virtuale sugli endpoint di servizio).

Se un indirizzo IP in uscita fisso non è disponibile per il servizio di Azure, è possibile valutare la possibilità di abilitare le connessioni da tutti gli indirizzi IP del data center di Azure. Questa impostazione può essere abilitata dal portale di Azure impostando l'opzione Consenti l'accesso ai servizi di Azure su ON dal riquadro Sicurezza connessione e premendo Salva. Dall'interfaccia della riga di comando di Azure, un'impostazione di regola del firewall con indirizzo iniziale e finale uguale a 0.0.0.0 esegue l'equivalente. Se il tentativo di connessione viene rifiutato dalle regole del firewall, non raggiunge il server di Database di Azure per PostgreSQL.

Importante

L'opzione Consenti servizi di Azure configura il firewall in maniera tale da consentire tutte le connessioni da Azure, incluse le connessioni di altri clienti. Quando si seleziona questa opzione, verificare che l'account di accesso e le autorizzazioni utente limitino l'accesso ai soli utenti autorizzati.

Configurare Possibilità di accedere ai servizi di Azure nel portale

Connessione da una VNet

Per connettersi in modo sicuro al server di Database di Azure per PostgreSQL da una rete virtuale, è consigliabile usare endpoint di servizio della rete virtuale.

Gestione di regole del firewall a livello di programmazione

Oltre al portale di Azure, le regole firewall possono essere gestite a livello di programmazione usando l'interfaccia della riga di comando di Azure. Vedere anche Create and manage Azure Database for PostgreSQL firewall rules using Azure CLI (Creare e gestire regole firewall per il Database di Azure per PostgreSQL tramite l'interfaccia della riga di comando di Azure)

Risoluzione dei problemi del firewall

Quando si effettua l'accesso al servizio Database di Microsoft Azure per il server PostgreSQL non si comporta come previsto, considerare quanto segue:

  • Le modifiche all'elenco Consentiti non sono state ancora applicate: per rendere effettive le modifiche apportate al firewall del Database di Azure per il server PostgreSQL possono essere necessari fino a cinque minuti.

  • L'accesso non è autorizzato oppure è stata usata una password errata: quando un account di accesso non dispone delle autorizzazioni per il Database di Azure per il server PostgreSQL o la password usata non è corretta, la connessione al Database di Azure per il server PostgreSQL verrà negata. La creazione di un'impostazione del firewall fornisce ai client soltanto un'opportunità di connessione al server; ogni client deve ancora fornire le credenziali di sicurezza necessarie.

    Ad esempio, se si usa un client JDBC potrebbe essere visualizzato l'errore seguente.

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

  • Indirizzo IP dinamico: se si dispone di una connessione Internet con indirizzi IP dinamici e si verificano problemi di comunicazione attraverso il firewall, è possibile provare una delle seguenti soluzioni:

    • Richiedere al provider di servizi Internet (ISP) l'intervallo di indirizzi IP assegnato ai computer client che accedono al Database di Azure per il server MySQL, quindi aggiungere l'intervallo di indirizzi IP come regola firewall.

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

  • L’IP del server risulta essere pubblico: le connessioni al Database di Azure per PostgreSQL vengono instradate tramite un gateway di Azure accessibile pubblicamente. Tuttavia, l'indirizzo IP effettivo del server è protetto dal firewall. Per altre informazioni, vedere l' articolo sull'architettura della connettività.

  • Impossibile connettersi dalla risorsa Azure con l'IP consentito: controllare se per la subnet da cui ci si connette è abilitato l'endpoint servizio Microsoft.Sql. Se Microsoft.Sql è abilitato, significa che si desidera usare solo le regole dell'endpoint servizio di rete virtuale in tale subnet.

    Ad esempio, se ci si connette da una macchina virtuale di Azure in una subnet in cui è abilitato Microsoft.Sql, ma che non ha una regola di rete virtuale corrispondente, potrebbe essere visualizzato l'errore: FATAL: Client from Azure Virtual Networks is not allowed to access the server

  • La regola del firewall non è disponibile per il formato IPv6: le regole del firewall devono essere in formato IPv4. Se si specificano regole del firewall in formato IPv6, verrà visualizzato l'errore di convalida.

Passaggi successivi