Verwenden der Firewall zum Einschränken ausgehenden Datenverkehrs mithilfe der Azure CLI
Wichtig
Azure HDInsight auf AKS wurde am 31. Januar 2025 eingestellt. Erfahren Sie mehr mit dieser Ankündigung.
Sie müssen Ihre Workloads zu Microsoft Fabric oder ein gleichwertiges Azure-Produkt migrieren, um eine abrupte Beendigung Ihrer Workloads zu vermeiden.
Wichtig
Dieses Feature befindet sich derzeit in der Vorschau. Die zusätzlichen Nutzungsbedingungen für Microsoft Azure Previews weitere rechtliche Bestimmungen enthalten, die für Azure-Features gelten, die in der Betaversion, in der Vorschau oder auf andere Weise noch nicht in die allgemeine Verfügbarkeit veröffentlicht werden. Informationen zu dieser spezifischen Vorschau finden Sie unter Azure HDInsight auf AKS-Vorschauinformationen. Für Fragen oder Vorschläge für neue Funktionen senden Sie bitte eine Anfrage auf AskHDInsight mitsamt den Details und folgen Sie uns, um weitere Aktualisierungen zu Azure HDInsight Communityzu erhalten.
Wenn ein Unternehmen sein eigenes virtuelles Netzwerk für die Clusterbereitstellungen verwenden möchte, wird die Sicherung des Datenverkehrs des virtuellen Netzwerks wichtig. Dieser Artikel enthält die Schritte zum Sichern des ausgehenden Datenverkehrs von Ihrem HDInsight auf AKS-Cluster über die Azure Firewall mithilfe von Azure CLI.
Das folgende Diagramm veranschaulicht das Beispiel, das in diesem Artikel zum Simulieren eines Unternehmensszenarios verwendet wird:
Das in diesem Artikel gezeigte Beispiel verwendet Azure Could Shell.
Definieren der Variablen
Kopieren und Ausführen in der Azure Cloud Shell, um die Werte dieser Variablen festzulegen.
PREFIX="hdiaks-egress"
RG="${PREFIX}-rg"
LOC="eastus"
HDIAKS_CLUSTER_POOL=${PREFIX}
VNET_NAME="${PREFIX}-vnet"
HDIAKS_SUBNET_NAME="${PREFIX}-subnet"
# DO NOT CHANGE FWSUBNET_NAME - This is currently a requirement for Azure Firewall.
FWSUBNET_NAME="AzureFirewallSubnet"
FWNAME="${PREFIX}-fw"
FWPUBLICIP_NAME="${PREFIX}-fwpublicip"
FWIPCONFIG_NAME="${PREFIX}-fwconfig"
FWROUTE_NAME="${PREFIX}-fwrn"
FWROUTE_NAME_INTERNET="${PREFIX}-fwinternet"
Erstellen eines virtuellen Netzwerks und Subnetze
Erstellen Sie eine Ressourcengruppe mit dem Befehl "az group create".
az group create --name $RG --location $LOC
Erstellen Sie ein virtuelles Netzwerk und zwei Subnetze.
Virtuelles Netzwerk mit Subnetz für HDInsight im AKS-Clusterpool
az network vnet create \ --resource-group $RG \ --name $VNET_NAME \ --location $LOC \ --address-prefixes 10.0.0.0/8 \ --subnet-name $HDIAKS_SUBNET_NAME \ --subnet-prefix 10.1.0.0/16
Subnetz für Azure Firewall.
az network vnet subnet create \ --resource-group $RG \ --vnet-name $VNET_NAME \ --name $FWSUBNET_NAME \ --address-prefix 10.2.0.0/16
Wichtig
- Wenn Sie NSG in Subnetz-
HDIAKS_SUBNET_NAME
hinzufügen, müssen Sie bestimmte ausgehende und eingehende Regeln manuell hinzufügen. Befolgen Sie und verwenden Sie NSG, um den Datenverkehreinzuschränken. - Die Routentabelle ist standardmäßig nicht mit dem Subnetz verknüpft. Falls erforderlich, muss der Benutzer eine Routentabelle erstellen und sie dem Clusterpool zuordnen.
- Wenn Sie NSG in Subnetz-
Erstellen von HDInsight im AKS-Clusterpool mithilfe des Azure-Portals
Erstellen Sie einen Clusterpool.
Erstellen Sie eine Routentabelle.
Erstellen Sie eine Routentabelle, und ordnen Sie sie dem Clusterpool zu. Weitere Informationen finden Sie unter Erstellen einer Routentabelle.
Abrufen von AKS-Clusterdetails, die hinter dem Clusterpool erstellt wurden
Führen Sie die Schritte aus, um die AKS-Clusterinformationen abzurufen, die in den nachfolgenden Schritten hilfreich sind.
AKS_MANAGED_RG=$(az network vnet subnet show --name $HDIAKS_SUBNET_NAME --vnet-name $VNET_NAME --resource-group $RG --query routeTable.resourceGroup -o tsv)
AKS_ID=$(az group show --name $AKS_MANAGED_RG --query managedBy -o tsv)
HDIAKS_MANAGED_RG=$(az resource show --ids $AKS_ID --query "resourceGroup" -o tsv)
API_SERVER=$(az aks show --name $HDIAKS_CLUSTER_POOL --resource-group $HDIAKS_MANAGED_RG --query fqdn -o tsv)
Firewall erstellen
Erstellen Sie eine öffentliche STANDARD-SKU-IP-Ressource. Diese Ressource wird als Front-End-Adresse der Azure Firewall verwendet.
az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
Registrieren Sie die Azure Firewall Preview CLI-Erweiterung, um eine Azure Firewall zu erstellen.
az extension add --name azure-firewall
Erstellen Sie eine Azure-Firewall, und aktivieren Sie den DNS-Proxy.
az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
Erstellen Sie eine Azure Firewall-IP-Konfiguration.
az network firewall ip-config create -g $RG -f $FWNAME -n $FWIPCONFIG_NAME --public-ip-address $FWPUBLICIP_NAME --vnet-name $VNET_NAME
Nachdem der Befehl für die IP-Konfiguration erfolgreich war, speichern Sie die Frontend-IP-Adresse der Firewall für die spätere Konfiguration.
FWPUBLIC_IP=$(az network public-ip show -g $RG -n $FWPUBLICIP_NAME --query "ipAddress" -o tsv) FWPRIVATE_IP=$(az network firewall show -g $RG -n $FWNAME --query "ipConfigurations[0].privateIPAddress" -o tsv)
Hinzufügen von Netzwerk- und Anwendungsregeln zur Firewall
Erstellen Sie die Netzwerkregeln.
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'apiudp' --protocols 'UDP' --source-addresses '*' --destination-addresses "AzureCloud.$LOC" --destination-ports 1194 --action allow --priority 100 az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'apitcp' --protocols 'TCP' --source-addresses '*' --destination-addresses "AzureCloud.$LOC" --destination-ports 9000 az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'apiserver' --protocols 'TCP' --source-addresses '*' --destination-fqdns "$API_SERVER" --destination-ports 443 #Add below step, in case you are integrating log analytics workspace az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'azuremonitor' --protocols 'TCP' --source-addresses '*' --destination-addresses "AzureMonitor" --destination-ports 443
Erstellen Sie die Anwendungsregeln.
az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'aks-fqdn' --source-addresses '*' --protocols 'http=80' 'https=443' --fqdn-tags "AzureKubernetesService" --action allow --priority 100 az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'acr' --source-addresses '*' --protocols 'https=443' --target-fqdns "hiloprodrpacr00.azurecr.io" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'blob' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.blob.core.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'servicebus' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.servicebus.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'gsm' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.table.core.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'gcsmonitoring' --source-addresses '*' --protocols 'https=443' --target-fqdns "gcs.prod.monitoring.core.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'graph' --source-addresses '*' --protocols 'https=443' --target-fqdns "graph.microsoft.com"
Erstellen einer Route in der Routentabelle zum Umleiten des Datenverkehrs an die Firewall
Erstellen Sie eine Routentabelle, die HDInsight im AKS-Clusterpool zugeordnet werden soll. Weitere Informationen finden Sie unter Erstellen von Routentabellenbefehlen.
Cluster erstellen
In den vorherigen Schritten haben wir den Netzwerkdatenverkehr an die Firewall weitergeleitet.
Die folgenden Schritte enthalten Details zu den spezifischen Netzwerk- und Anwendungsregeln, die für jeden Clustertyp erforderlich sind. Sie können sich auf die Clustererstellungsseiten beziehen, um Apache Flink-, Trino- und Apache Spark-Cluster gemäß Ihrem Bedarf zu erstellen.
Wichtig
Bevor Sie einen Cluster erstellen, müssen Sie die folgenden clusterspezifischen Regeln ausführen, um den Datenverkehr zuzulassen.
Trino
Fügen Sie die folgenden Netzwerk- und Anwendungsregeln für einen Trino-Cluster hinzu.
az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'dfs' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.dfs.core.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'mysql' --source-addresses '*' --protocols 'mssql=1433' --target-fqdns "*.database.windows.net"
Ändern Sie die
Sql.<Region>
in der folgenden Syntax entsprechend Ihrer Anforderung in Ihre Region. Beispiel:Sql.EastUS
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'mysql' --protocols 'TCP' --source-addresses '*' --destination-addresses Sql.<Region> --destination-ports "11000-11999"
Apache Flink
Fügen Sie die folgende Anwendungsregel für einen Apache Flink-Cluster hinzu.
az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'dfs' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.dfs.core.windows.net"
Apache Spark
Fügen Sie die folgenden Netzwerk- und Anwendungsregeln für einen Spark-Cluster hinzu.
Ändern Sie die
Storage.<Region>
in der folgenden Syntax gemäß Ihrer Anforderung in Ihre Region. Beispiel:Storage.EastUS
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'smb' --protocols 'TCP' --source-addresses '*' --destination-addresses "Storage.<Region>" --destination-ports 445 az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'dfs' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.dfs.core.windows.net"
Ändern Sie nach Bedarf die
Sql.<Region>
in der folgenden Syntax in Ihre Region. Beispiel:Sql.EastUS
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'mysql' --protocols 'TCP' --source-addresses '*' --destination-addresses "Sql.<Region>" --destination-ports '11000-11999' az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'mysql' --source-addresses '*' --protocols 'mssql=1433' --target-fqdns "*.database.windows.net"
Beheben eines symmetrischen Routingproblems
Mit den folgenden Schritten können Sie den Cluster für Cluster anforderbaren Lastenausgleichsdienst für Eingangsverkehr beantragen und sicherstellen, dass der Antwortverkehr im Netzwerk nicht zur Firewall geleitet wird. Fügen Sie der Routentabelle eine Route hinzu, um den Antwortdatenverkehr an Ihre Client-IP in das Internet umzuleiten, und dann können Sie den Cluster direkt erreichen.
az network route-table route create -g $AKS_MANAGED_RG --name clientip --route-table-name $ROUTE_TABLE_NAME --address-prefix {Client_IPs} --next-hop-type Internet
Wenn Sie den Cluster nach der Konfiguration des NSG nicht erreichen können, folgen Sie , indem Sie das NSG verwenden, um den Datenverkehr einzuschränken, oder, um den Datenverkehr zuzulassen.
Tipp
Wenn Sie mehr Datenverkehr zulassen möchten, können Sie ihn über die Firewall konfigurieren.
So debuggen Sie
Wenn Sie feststellen, dass der Cluster unerwartet funktioniert, können Sie die Firewallprotokolle überprüfen, um zu ermitteln, welcher Datenverkehr blockiert ist.