Konfigurieren des ausgehenden Netzwerkdatenverkehrs für Azure HDInsight-Cluster mittels Firewall
In diesem Artikel werden die Schritte beschrieben, mit denen Sie aus Ihrem HDInsight-Cluster ausgehenden Datenverkehr mithilfe von Azure Firewall schützen. Die folgenden Schritte setzen voraus, dass Sie eine Azure Firewall-Instanz für einen vorhandenen Cluster konfigurieren. Wenn Sie einen neuen Cluster hinter einer Firewall bereitstellen, erstellen Sie zunächst Ihren HDInsight-Cluster und das Subnetz. Führen Sie anschließend die Schritte in dieser Anleitung aus.
Hintergrund
HDInsight-Cluster werden normalerweise in einem virtuellen Netzwerk bereitgestellt. Der Cluster weist Abhängigkeiten mit Diensten außerhalb dieses virtuellen Netzwerks auf.
Der eingehende Verwaltungsdatenverkehr kann nicht durch eine Firewall gesendet werden. Sie können NSG-Diensttags für den eingehenden Datenverkehr verwenden, wie hier beschrieben wird.
Die Abhängigkeiten des ausgehenden HDInsight-Datenverkehrs werden fast ausschließlich mit FQDNs definiert. Hinter diesen FQDNs stehen keine statischen IP-Adressen. Das Fehlen statischer Adressen bedeutet, dass keine Netzwerksicherheitsgruppen (NSGs) verwendet werden können, um den ausgehenden Datenverkehr eines Clusters einzuschränken. Die IP-Adressen ändern sich häufig, sodass keine Regeln auf Grundlage der aktuellen Auflösung aufgestellt werden können.
Sichern Sie ausgehende Adressen mit einer Firewall, die den ausgehenden Datenverkehr basierend auf FQDNs kontrolliert. Azure Firewall schränkt ausgehenden Datenverkehr basierend auf dem FQDN des Ziels oder FQDN-Tags ein.
Konfigurieren von Azure Firewall mit HDInsight
Hier sehen Sie eine Zusammenfassung der Schritte, um von HDInsight ausgehenden Datenverkehr mit Azure Firewall zu sperren:
- Erstellen Sie ein Subnetz.
- Erstellen einer Firewall.
Add application
-Regeln für die Firewall.- Fügen Sie der Firewall Netzwerkregeln hinzu.
- Erstellen Sie eine Routingtabelle.
Erstellen eines neuen Subnetzes
Erstellen Sie ein Subnetz namens AzureFirewallSubnet in dem virtuellen Netzwerk, in dem sich Ihr Cluster befindet.
Erstellen einer neuen Firewall für Ihren Cluster
Erstellen Sie eine Firewall mit dem Namen Test-FW01 gemäß den Schritten unter Bereitstellen der Firewall in Tutorial: Bereitstellen und Konfigurieren von Azure Firewall über das Azure-Portal.
Konfigurieren der Firewall mit Anwendungsregeln
Erstellen Sie eine Anwendungsregelsammlung, die dem Cluster ermöglicht, wichtige Informationen zu senden und zu empfangen.
Wählen Sie die neue Firewall Test-FW01 über das Azure-Portal aus.
Navigieren Sie zu Einstellungen>Regeln>Anwendungsregelsammlung>+
Add application rule collection
.Geben Sie auf dem
Add application rule collection
-Bildschirm die folgenden Informationen an:Oberer Abschnitt
Eigenschaft Wert Name FwAppRule Priority 200 Aktion Allow Abschnitt „FQDN-Tags“
Name Quelladresse FQDN-Tag Notizen Regel 1 * „WindowsUpdate“ und „HDInsight“ Für HDI-Dienste erforderlich Abschnitt „Ziel-FQDNs“
Name Quelladressen Protokoll: Port Ziel-FQDNs Notizen Regel 2 * https:443 login.windows.net Lässt Windows Anmeldeaktivität zu Regel 3 * https:443 login.microsoftonline.com Lässt Windows Anmeldeaktivität zu Regel 4 * https:443 storage_account_name.blob.core.windows.net Ersetzen Sie storage_account_name
durch den tatsächlichen Namen Ihres Speicherkontos. Vergewissern Sie sich, dass im Speicherkonto die Option Sichere Übertragung erforderlich aktiviert ist. Wenn Sie einen privaten Endpunkt für den Zugriff auf Speicherkonten verwenden, ist dieser Schritt nicht erforderlich, und der Speicherdatenverkehr wird nicht an die Firewall weitergeleitet.Rule_5 * http:80 azure.archive.ubuntu.com Ermöglicht die Installation von Ubuntu-Sicherheitsupdates im Cluster. Rule_6 * https:433 pypi.org, pypi.python.org, files.pythonhosted.org Ermöglicht Python-Paketinstallationen für die Azure-Überwachung Wählen Sie Hinzufügen.
Konfigurieren der Firewall mit Netzwerkregeln
Erstellen Sie die Netzwerkregeln, um Ihren HDInsight-Cluster ordnungsgemäß zu konfigurieren.
Navigieren Sie im Anschluss an den vorherigen Schritt zu + Netzwerkregelsammlung hinzufügen>
+ Add network rule collection
.Geben Sie auf dem
Add network rule collection
-Bildschirm die folgenden Informationen an:Oberer Abschnitt
Eigenschaft Wert Name FwNetRule Priority 200 Aktion Zulassen Abschnitt „Diensttags“
Name Protocol Quelladressen Diensttags Zielports Notizen Rule_6 TCP * SQL 1433, 11000–11999 Konfigurieren Sie im Abschnitt „Diensttags“ für SQL eine Netzwerkregel, mit der Sie SQL-Datenverkehr protokollieren und überwachen können, wenn Sie die von HDInsight bereitgestellten SQL-Standardserver verwenden. Es sei denn, Sie haben Dienstendpunkte für SQL Server im HDInsight-Subnetz konfiguriert, wodurch die Firewall umgangen wird. Wenn Sie benutzerdefinierte SQL Server-Instanzen für Metastores von Ambari, Oozie, Ranger und Hive verwenden, müssen Sie nur den Datenverkehr an Ihre eigenen benutzerdefinierten SQL Server-Instanzen zulassen. Unter Verbindungsarchitektur von Azure SQL-Datenbank und Azure Synapse Analytics erfahren Sie, warum der Portbereich 11000-11999 zusätzlich zu 1433 benötigt wird. Regel 7 TCP * Azure Monitor * (optional) Kunden, die die Verwendung der automatischen Skalierungsfunktion planen, sollten diese Regel hinzufügen. Wählen Sie Hinzufügen.
Erstellen und Konfigurieren einer Routingtabelle
Erstellen Sie eine Routingtabelle mit den folgenden Einträgen:
Alle IP-Adressen aus Integritäts- und Verwaltungsdienste, für die der Typ des nächsten Hops Internet lautet. Sie sollten vier IPs der generischen Regionen sowie zwei IPs für Ihre spezifische Region umfassen. Diese Regel ist nur erforderlich, wenn ResourceProviderConnection auf Inbound (Eingehend) festgelegt ist. Wenn ResourceProviderConnection auf Outbound (Ausgehend) festgelegt ist, werden diese IP-Adressen in der UDR nicht benötigt.
Eine Route für ein virtuelles Gerät für IP-Adresse 0.0.0.0/0, wobei der nächste Hop Ihre private Azure Firewall-IP-Adresse ist.
Gehen Sie beispielsweise wie folgt vor, um die Routingtabelle für einen in der US-Region „USA, Osten“ erstellten Cluster zu konfigurieren:
Wählen Sie Ihre Azure Firewall-Instanz Test-FW01 aus. Kopieren Sie die auf dem Blatt Übersicht aufgelistete Private IP-Adresse. In diesem Beispiel verwenden wir die Beispieladresse 10.0.2.4.
Navigieren Sie anschließend zu Alle Dienste>Netzwerk>Routingtabellen, und wählen Sie Routingtabelle erstellen aus.
Navigieren Sie unter Ihrer neuen Route zu Einstellungen>Routen>+ Hinzufügen. Fügen Sie folgende Routen hinzu:
Routenname | Adresspräfix | Typ des nächsten Hops | Adresse des nächsten Hops |
---|---|---|---|
168.61.49.99 | 168.61.49.99/32 | Internet | Nicht verfügbar |
23.99.5.239 | 23.99.5.239/32 | Internet | Nicht verfügbar |
168.61.48.131 | 168.61.48.131/32 | Internet | Nicht verfügbar |
138.91.141.162 | 138.91.141.162/32 | Internet | Nicht verfügbar |
13.82.225.233 | 13.82.225.233/32 | Internet | Nicht verfügbar |
40.71.175.99 | 40.71.175.99/32 | Internet | Nicht verfügbar |
0.0.0.0 | 0.0.0.0/0 | Virtuelles Gerät | 10.0.2.4 |
Schließen Sie die Konfiguration der Routingtabelle ab:
Weisen Sie die erstellte Routingtabelle durch Auswählen von Subnetze (unter Einstellungen) Ihrem HDInsight-Subnetz zu.
Wählen Sie + Zuordnen aus.
Wählen Sie im Bildschirm Subnetz zuordnen das virtuelle Netzwerk aus, in dem Ihr Cluster erstellt wurde. Geben Sie außerdem das Subnetz an, das Sie für Ihren HDInsight-Cluster verwendet haben.
Klicken Sie auf OK.
Datenverkehr für Edgeknoten- oder benutzerdefinierte Anwendung
Mithilfe der oben genannten Schritte kann der Cluster problemlos ausgeführt werden. Sie müssen weiterhin Abhängigkeiten konfigurieren, um Ihren benutzerdefinierten Anwendungen ggf. die Ausführung auf den Edgeknoten zu ermöglichen.
Anwendungsabhängigkeiten müssen identifiziert und der Azure Firewall-Instanz oder der Routingtabelle hinzugefügt werden.
Für den Anwendungsdatenverkehr müssen Routen erstellt werden, um Probleme durch asymmetrisches Routing zu vermeiden.
Wenn Ihre Anwendungen andere Abhängigkeiten aufweisen, müssen diese Ihrer Azure Firewall-Instanz hinzugefügt werden. Erstellen Sie Anwendungsregeln, um HTTP/HTTPS-Datenverkehr und Netzwerkregeln zuzulassen.
Protokollierung und Skalierung
Azure Firewall kann Protokolle an ein paar andere Speichersysteme senden. Anweisungen zum Konfigurieren der Protokollierung für Ihre Firewall finden Sie in den Schritten von Tutorial: Überwachen von Azure Firewall-Protokollen und -Metriken.
Nachdem Sie die Protokollierung eingerichtet haben, können Sie bei Verwendung von Log Analytics den blockierten Datenverkehr mit einer Abfrage wie der folgenden anzeigen:
AzureDiagnostics | where msg_s contains "Deny" | where TimeGenerated >= ago(1h)
Die Integration von Azure Firewall und Azure Monitor-Protokollen ist nützlich, wenn Sie eine Anwendung erstmalig einrichten. Dies gilt insbesondere dann, wenn Sie nicht alle Anwendungsabhängigkeiten kennen. Weitere Informationen zu Azure Monitor-Protokollen finden Sie unter Analysieren von Protokolldaten in Azure Monitor.
Weitere Informationen zu den Skalierungsgrenzwerten von Azure Firewall und zu Anforderungssteigerungen finden Sie in diesem Dokument sowie in den Häufig gestellten Fragen.
Zugriff auf den Cluster
Nach erfolgreicher Einrichtung der Firewall können Sie den internen Endpunkt (https://CLUSTERNAME-int.azurehdinsight.net
) verwenden, um innerhalb des virtuellen Netzwerks auf Ambari zuzugreifen.
Wenn Sie den öffentlichen Endpunkt (https://CLUSTERNAME.azurehdinsight.net
) oder den SSH-Endpunkt (CLUSTERNAME-ssh.azurehdinsight.net
) verwenden möchten, vergewissern Sie sich, dass in der Routingtabelle und den NSG-Regeln die richtigen Routen festgelegt wurden, um das hier beschriebene Problem mit asymmetrischem Routing zu vermeiden. Insbesondere in diesem Fall müssen Sie die Client-IP-Adresse in den eingehenden NSG-Regeln zulassen und sie auch der benutzerdefinierten Routingtabelle hinzufügen, wobei der nächste Hop als internet
festgelegt sein muss. Wenn das Routing nicht ordnungsgemäß eingerichtet ist, kommt es zu einem Timeoutfehler.