Netzwerkbetrieb mit öffentlichem Zugriff (zulässige IP-Adressen) in Azure Database for PostgreSQL – Flexible Server

In diesem Artikel werden Konnektivitäts- und Netzwerkkonzepte für Azure Database for PostgreSQL flexiblen Server beschrieben.

Wenn Sie einen Azure Database for PostgreSQL flexiblen Server erstellen, müssen Sie eine der folgenden Netzwerkoptionen auswählen:

  • Privater Zugriff (VNet-Integration)
  • Öffentlicher Zugriff (zulässige IP-Adressen) und privater Endpunkt

Die folgenden Eigenschaften gelten unabhängig davon, ob Sie den privaten oder den öffentlichen Zugriff wählen:

  • Verbindungen von zulässigen IP-Adressen müssen sich beim flexiblen Server von Azure Database for PostgreSQL mit gültigen Anmeldeinformationen authentifizieren.
  • Für den Netzwerkdatenverkehr wird die Verbindungsverschlüsselung erzwungen.
  • Der Server verfügt über einen vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN). Verwenden Sie für die hostname Eigenschaft in Verbindungszeichenfolgen den FQDN anstelle einer IP-Adresse.
  • Über beide Optionen wird der Zugriff auf Serverebene, nicht auf Datenbank- oder auf Tabellenebene gesteuert. Verwenden Sie die Rolleneigenschaften von PostgreSQL, um Datenbank, Tabelle und anderen Objektzugriff zu steuern.

Hinweis

Da der Dienst Azure Database for PostgreSQL ein verwalteter Datenbankdienst ist, haben Benutzer keinen Zugriff auf den Host oder das Betriebssystem, um Konfigurationsdateien wie pg_hba.conf einzusehen oder zu ändern. Der Dienst aktualisiert automatisch den Inhalt der Dateien basierend auf den Netzwerkeinstellungen.

Verwenden von Öffentlichen Zugriffsnetzwerken mit Azure-Datenbank für PostgreSQL

Wenn Sie die Methode für den öffentlichen Zugriff auswählen, greifen Sie über einen öffentlichen Endpunkt über das Internet auf Ihren Azure Database for PostgreSQL flexiblen Server zu. Der öffentliche Endpunkt ist eine öffentlich auflösbare DNS-Adresse. Der Ausdruck zulässige IP-Adressen bezieht sich auf einen Bereich von IP-Adressen, denen Sie die Berechtigung erteilen, auf den Server zuzugreifen. Diese Berechtigungen heißen Firewallregeln.

Diese Netzwerkoption bietet sich an, wenn Sie die folgenden Funktionen benötigen:

  • Herstellen einer Verbindung von Azure-Ressourcen aus, die keine virtuellen Netzwerke unterstützen
  • Stellen Sie eine Verbindung von Azure-externen Ressourcen her, die nicht über VPN oder Azure ExpressRoute verbunden sind.
  • Stellen Sie sicher, dass der Azure Database for PostgreSQL flexiblen Server über einen öffentlichen Endpunkt verfügt, auf den über das Internet zugegriffen werden kann.

Die öffentliche Zugriffsmethode weist u. a. folgende Eigenschaften auf:

  • Nur die IP-Adressen, die Sie zulassen, verfügen über die Berechtigung für den Zugriff auf Ihren Azure Database for PostgreSQL flexiblen Server. Standardmäßig sind keine IP-Adressen zugelassen. Sie können IP-Adressen während oder nach der Servererstellung hinzufügen.

  • Ihr flexibler Azure Database for PostgreSQL-Server verfügt über einen öffentlich auflösbaren DNS-Namen.

  • Ihr Azure Database for PostgreSQL flexibler Server befindet sich nicht in einem Ihrer Azure virtuellen Netzwerke.

  • Der Netzwerkdatenverkehr zu und von Ihrem Server erfolgt nicht über ein privates Netzwerk. Der Datenverkehr verwendet die allgemeinen Internetpfade.

Firewallregeln

Firewallregeln auf Serverebene gelten für alle Datenbanken auf demselben Azure Database for PostgreSQL flexiblen Server. Liegt die IP-Quelladresse der Anforderung innerhalb eines der in den Firewallregeln auf Serverebene angegebenen Bereiche, wird die Verbindung gewährt. Andernfalls wird sie abgelehnt. Wenn Ihre Anwendung beispielsweise eine Verbindung mit dem JDBC-Treiber für PostgreSQL herstellt, kann dieser Fehler auftreten, wenn Sie eine Verbindung herstellen möchten und die Firewall die Verbindung blockiert.

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

Hinweis

Um von Ihrem lokalen Computer aus auf einen Azure Database for PostgreSQL flexiblen Server zuzugreifen, stellen Sie sicher, dass die Firewall auf Ihrem Netzwerk und dem lokalen Computer ausgehende Kommunikation über TCP-Port 5432 zulässt.

Programmgesteuert verwaltete Firewallregeln

Neben der Verwendung des Microsoft Azure-Portals können Sie Firewall-Regeln auch programmseitig über die Azure-Befehlszeilenschnittstelle verwalten. Weitere Informationen finden Sie unter Networking.

Zulassen aller Azure-IP-Adressen

Suchen Sie die ausgehende IP-Adresse einer beliebigen Anwendung oder eines Diensts, und erlauben Sie explizit den Zugriff auf diese einzelnen IP-Adressen oder Bereiche. Wenn eine feste ausgehende IP-Adresse für Ihren Azure-Dienst nicht verfügbar ist, erwägen Sie, Verbindungen von allen IP-Adressen für Azure Rechenzentren zu aktivieren.

Um diese Einstellung im Azure-Portal zu aktivieren, aktivieren Sie im Bereich Netzwerk das Kontrollkästchen Öffentlichen Zugriff auf diesen Server über beliebigen Azure-Dienst in Azure gestatten, und wählen Sie dann Speichern aus.

Von Bedeutung

Die Option Allow public access from Azure services and resources within Azure (Öffentlichen Zugriff von Azure-Diensten und -Ressourcen aus gestatten) konfiguriert die Firewall so, dass alle von Azure ausgehenden Verbindungen zugelassen werden, einschließlich der Verbindungen aus Abonnements anderer Kunden. Stellen Sie bei Verwendung dieser Option sicher, dass Ihre Anmelde- und Benutzerberechtigungen den Zugriff auf autorisierte Benutzer beschränken.

Behandeln von Problemen mit dem öffentlichen Zugriff

Berücksichtigen Sie die folgenden Punkte, wenn sich der Zugriff auf einen Azure Database for PostgreSQL flexiblen Server nicht wie erwartet verhält:

  • Änderungen an der Zulassungsliste sind noch nicht wirksam. Änderungen an der Firewallkonfiguration des Azure Database for PostgreSQL flexiblen Servers können bis zu fünf Minuten in Kraft treten.

  • Fehler bei der Authentifizierung: Wenn ein Benutzer über keine Berechtigungen für den Azure Database for PostgreSQL flexiblen Server verfügt oder das Kennwort falsch ist, wird die Verbindung mit dem Azure Database for PostgreSQL flexiblen Server verweigert. Durch das Erstellen einer Firewalleinstellung können Clients nur versuchen, eine Verbindung mit Ihrem Server herzustellen. Jeder Client muss weiterhin die erforderlichen Sicherheitsanmeldeinformationen bereitstellen.

  • Die dynamische Client-IP-Adresse verhindert den Zugriff: Wenn Sie über eine Internetverbindung mit dynamischer IP-Adresszuweisung verfügen und Probleme beim Passieren der Firewall auftreten, probieren Sie eine der folgenden Lösungen aus:

    • Fragen Sie Ihren Internetdienstanbieter (INTERNET Service Provider, ISP) nach dem IP-Adressbereich, der Ihren Clientcomputern zugewiesen ist, die auf den Azure Database for PostgreSQL flexiblen Server zugreifen. Fügen Sie dann den IP-Adressbereich als Firewallregel hinzu.
    • Verwenden Sie für Ihre Clientcomputer stattdessen eine statische IP-Adressierung. Fügen Sie dann die statische IP-Adresse als Firewallregel hinzu.
  • Firewallregel ist für das IPv6-Format nicht verfügbar. Firewallregeln müssen das IPv4-Format aufweisen. Wenn Sie Firewallregeln im IPv6-Format angeben, wird ein Validierungsfehler angezeigt.

Hostname

Unabhängig von der von Ihnen gewählten Netzwerkoption verwenden Sie immer einen vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) als Hostname, wenn Sie eine Verbindung mit Ihrem Azure Database for PostgreSQL flexiblen Server herstellen. Es ist nicht gewährleistet, dass die IP-Adresse des Servers statisch bleibt. Mithilfe des FQDN können Sie verhindern, dass Änderungen an der Verbindungszeichenfolge vorgenommen werden.

Ein Beispiel, bei dem ein FQDN als Hostname verwendet wird, ist hostname = servername.postgres.database.azure.com. Vermeiden Sie nach Möglichkeit die Verwendung von hostname = 10.0.0.4 (eine private Adresse) oder hostname = 40.2.45.67 (eine öffentliche Adresse).

Ausgehende IP-Adressen für die Firewallkonfiguration

Wenn Ihr Azure Database for PostgreSQL flexibler Server ausgehende Verbindungen mit externen Diensten herstellen muss (z. B. für die logische Replikation, Erweiterungen, die eine Verbindung mit externen Ressourcen herstellen, oder externe Datenquellen), müssen Sie möglicherweise Firewallregeln für diese externen Dienste konfigurieren, um Datenverkehr von Ihrem Datenbankserver zuzulassen.

Suchen der IP-Adresse des Servers

So finden Sie die IP-Adresse, die Ihrem Azure Database for PostgreSQL Flexible Server derzeit zugewiesen ist:

  • DNS-Auflösung verwenden: Den FQDN des Servers (servername.postgres.database.azure.com) auflösen, um die aktuelle IP-Adresse zu ermitteln. Verwenden Sie Tools wie nslookup oder dig.

    nslookup servername.postgres.database.azure.com
    
  • Verwenden des Azure-Portals: Navigieren Sie im Azure-Portal zu Ihrem flexiblen Server von Azure Database for PostgreSQL. Die öffentliche IP-Adresse des Servers wird nicht direkt angezeigt, aber Sie können sie finden, indem Sie den FQDN des Servers auflösen.

  • Verwenden sie Azure CLI: Verwenden Sie Azure CLI, um Informationen zu Ihrem Server abzurufen und dann den Hostnamen aufzulösen:

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

Wichtige Überlegungen für ausgehende Verbindungen

  • IP-Adressen können sich ändern: Die öffentliche IP-Adresse, die Ihrem Azure Database for PostgreSQL flexiblen Server zugewiesen ist, ist nicht statisch und kann sich während der Wartung, Aktualisierungen oder anderen betriebstechnischen Ereignisse ändern. Verwenden Sie den FQDN immer nach Möglichkeit, und aktualisieren Sie bei Bedarf regelmäßig externe Firewallregeln.

  • Azure IP-Bereiche des Rechenzentrums: Um eine vorhersagbare Firewallkonfiguration zu ermöglichen, ermöglichen Sie Datenverkehr aus dem gesamten Azure IP-Bereich des Rechenzentrums für die Region, in der sich Ihr Server befindet. Azure veröffentlicht die IP-Bereiche für jede Region im Download von Azure-IP-Bereichen und Diensttags .

  • Diensttags: Wenn der externe Dienst, mit dem Sie eine Verbindung herstellen, auch in Azure gehostet wird, erwägen Sie die Verwendung von Azure-Diensttags für dynamischere und verwendbare Firewallregeln.

  • Alternative zu privaten Endpunkten: Um eine stabilere Konnektivität zu erhalten und öffentliche IP-Adressen zu vermeiden, sollten Sie private Endpunkte anstelle des öffentlichen Zugriffs verwenden.