Rete con accesso pubblico (indirizzi IP consentiti) in server flessibile di Azure Database per PostgreSQL

Questo articolo descrive i concetti relativi alla connettività e alla rete per Database di Azure per PostgreSQL server flessibile.

Quando si crea un server flessibile Database di Azure per PostgreSQL, è necessario scegliere una delle opzioni di rete seguenti:

  • Accesso privato (integrazione rete virtuale)
  • Accesso pubblico (indirizzi IP consentiti) ed endpoint privato

Se si sceglie di usare l'accesso privato o l'opzione di accesso pubblico, si applicano le caratteristiche seguenti:

  • Le connessioni da indirizzi IP consentiti devono eseguire l'autenticazione al server flessibile Database di Azure per PostgreSQL con credenziali valide.
  • La crittografia della connessione viene applicata per il traffico di rete.
  • Il server dispone di un nome di dominio completo (FQDN). Per la hostname proprietà nelle stringhe di connessione, usare il nome di dominio completo anziché un indirizzo IP.
  • Entrambe le opzioni controllano l'accesso a livello di server, non a livello di database o tabella. Usare le proprietà del ruolo di PostgreSQL per controllare l'accesso a database, tabelle e altri oggetti.

Annotazioni

Poiché il servizio Database di Azure per PostgreSQL è un servizio di database gestito, gli utenti non hanno accesso al sistema operativo o host per visualizzare o modificare i file di configurazione, ad pg_hba.confesempio . Il servizio aggiorna automaticamente il contenuto dei file in base alle impostazioni di rete.

Usare la rete di accesso pubblico con Database di Azure per PostgreSQL

Quando si sceglie il metodo di accesso pubblico, si accede al server flessibile Database di Azure per PostgreSQL tramite un endpoint pubblico tramite Internet. L'endpoint pubblico è un indirizzo DNS risolvibile pubblicamente. L'espressione indirizzi IP consentiti si riferisce a un intervallo di indirizzi IP a cui si sceglie di concedere l'autorizzazione per l'accesso al server. Queste autorizzazioni si definiscono regole del firewall.

Scegliere questa opzione di rete se si desiderano le funzionalità seguenti:

  • Connettersi da risorse di Azure che non supportano le reti virtuali.
  • Connettersi da risorse esterne ad Azure che non sono connesse tramite VPN o Azure ExpressRoute.
  • Assicurarsi che il server flessibile Database di Azure per PostgreSQL abbia un endpoint pubblico accessibile tramite Internet.

Le caratteristiche del metodo di accesso pubblico includono:

  • Solo gli indirizzi IP consentiti hanno l'autorizzazione per accedere al server flessibile Database di Azure per PostgreSQL. Per impostazione predefinita, non sono consentiti gli indirizzi IP. È possibile aggiungere indirizzi IP durante la creazione del server o successivamente.

  • Il server flessibile Database di Azure per PostgreSQL ha un nome DNS risolvibile pubblicamente.

  • Il server flessibile Database di Azure per PostgreSQL non si trova in una delle reti virtuali Azure.

  • Il traffico di rete da/verso il server non passa da una rete privata. Il traffico usa i percorsi Internet generali.

Regole del firewall

Le regole del firewall a livello di server si applicano a tutti i database nello stesso server flessibile Database di Azure per 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. In caso contrario, viene rifiutato. Ad esempio, se l'applicazione si connette con il driver JDBC per PostgreSQL, questo errore potrebbe verificarsi quando si tenta di connettersi e il firewall blocca la connessione.

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

Annotazioni

Per accedere a un 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.

Regole del firewall gestite a livello di codice

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. Per altre informazioni, vedere Rete.

Consentire tutti gli indirizzi IP di Azure

Trovare l'indirizzo IP in uscita di qualsiasi applicazione o servizio e consentire esplicitamente l'accesso a tali singoli indirizzi IP o intervalli. Se un indirizzo IP in uscita fisso non è disponibile per il servizio Azure, è consigliabile abilitare le connessioni da tutti gli indirizzi IP per i data center di Azure.

Per abilitare questa impostazione dal portale di Azure, nel riquadro Rete selezionare la casella di controllo Consenti l'accesso pubblico da qualsiasi servizio di Azure all'interno di Azure a questo server, quindi selezionare Salva.

Importante

L'opzione Consentire l'accesso pubblico dai servizi e dalle risorse di Azure all'interno di Azure a questo cluster configura il firewall in modo da consentire tutte le connessioni da Azure, incluse le connessioni dalle sottoscrizioni di altri clienti. Quando si seleziona questa opzione, assicurarsi che le autorizzazioni di accesso e utente limitino l'accesso solo agli utenti autorizzati.

Risolvere i problemi di accesso pubblico

Considerare i punti seguenti quando l'accesso a un server flessibile di Database di Azure per PostgreSQL non funziona come previsto:

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

  • Autenticazione non riuscita. Se un utente non dispone delle autorizzazioni per il server flessibile Database di Azure per PostgreSQL o la password non è corretta, viene negata la connessione al server flessibile Database di Azure per PostgreSQL. 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.

  • L'indirizzo IP client dinamico impedisce l'accesso. Se si dispone di una connessione Internet con indirizzi IP dinamici e si verificano problemi di comunicazione attraverso il firewall, è possibile 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 invece l’assegnazione di indirizzi IP statici per i computer client. Aggiungere quindi l'indirizzo IP statico come regola del firewall.
  • 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, viene visualizzato un errore di convalida.

Nome host

Indipendentemente dall'opzione di rete scelta, usare sempre un nome di dominio completo (FQDN) come nome host durante la connessione al server flessibile Database di Azure per PostgreSQL. Non è garantito che l'indirizzo IP del server rimanga statico. L'uso del nome di dominio completo consente di evitare di apportare modifiche alla stringa di connessione.

Un esempio che usa un FQDN come nome host è hostname = servername.postgres.database.azure.com. Se possibile, evitare di usare hostname = 10.0.0.4 (un indirizzo privato) o hostname = 40.2.45.67 (un indirizzo pubblico).

Indirizzi IP in uscita per la configurazione del firewall

Quando il server flessibile Database di Azure per PostgreSQL deve effettuare connessioni in uscita a servizi esterni, ad esempio per la replica logica, le estensioni che si connettono a risorse esterne o origini dati esterne, potrebbe essere necessario configurare le regole del firewall in tali servizi esterni per consentire il traffico dal server di database.

Individuazione dell'indirizzo IP del server

Per trovare l'indirizzo IP attualmente assegnato al server flessibile Database di Azure per PostgreSQL:

  • Uso della risoluzione DNS: risolvere il nome di dominio completo (servername.postgres.database.azure.com) del server per ottenere l'indirizzo IP corrente. Usare strumenti come nslookup o dig.

    nslookup servername.postgres.database.azure.com
    
  • Usando il portale di Azure: passare al server flessibile Database di Azure per PostgreSQL nel portale di Azure. L'indirizzo IP pubblico del server non viene visualizzato direttamente, ma è possibile trovarlo risolvendo il nome di dominio completo del server.

  • Uso di interfaccia della riga di comando di Azure: usare interfaccia della riga di comando di Azure per ottenere informazioni sul server e quindi risolvere il nome host:

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

Considerazioni importanti per le connessioni in uscita

  • Gli indirizzi IP possono cambiare: l'indirizzo IP pubblico assegnato al server flessibile Database di Azure per PostgreSQL non è statico e può cambiare durante la manutenzione, gli aggiornamenti o altri eventi operativi. Usare sempre il nome di dominio completo quando possibile e aggiornare regolarmente le regole del firewall esterno, se necessario.

  • Intervalli IP del data center di Azure: per una configurazione del firewall più coerente, consentire il traffico proveniente dall'intero intervallo IP del data center di Azure per l'area geografica in cui si trova il server. Azure pubblica gli intervalli IP per ogni area nel download di intervalli IP e tag di servizio di Azure .

  • Tag del servizio: se il servizio esterno a cui ci si connette è ospitato anche in Azure, è consigliabile usare i tag del servizio di Azure per regole firewall più dinamiche e gestibili.

  • Alternativa all'endpoint privato: per una connettività più stabile e per evitare indirizzi IP pubblici, è consigliabile usare endpoint privati anziché l'accesso pubblico.