Freigeben über


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:

Diagramm mit dem Netzwerkfluss.

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"

Diagramm mit den Cloud Shell-Variablen.

Erstellen eines virtuellen Netzwerks und Subnetze

  1. Erstellen Sie eine Ressourcengruppe mit dem Befehl "az group create".

    az group create --name $RG --location $LOC
    
  2. Erstellen Sie ein virtuelles Netzwerk und zwei Subnetze.

    1. 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
      
    2. 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

      1. Wenn Sie NSG in Subnetz-HDIAKS_SUBNET_NAMEhinzufügen, müssen Sie bestimmte ausgehende und eingehende Regeln manuell hinzufügen. Befolgen Sie und verwenden Sie NSG, um den Datenverkehreinzuschränken.
      2. Die Routentabelle ist standardmäßig nicht mit dem Subnetz verknüpft. Falls erforderlich, muss der Benutzer eine Routentabelle erstellen und sie dem Clusterpool zuordnen.

Erstellen von HDInsight im AKS-Clusterpool mithilfe des Azure-Portals

  1. Erstellen Sie einen Clusterpool.

    Diagramm mit der Registerkarte

    Diagramm mit der Registerkarte

  2. 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

  1. 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"
    
  2. Registrieren Sie die Azure Firewall Preview CLI-Erweiterung, um eine Azure Firewall zu erstellen.

       az extension add --name azure-firewall
    
  3. 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
    
  4. 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
    
  5. 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

  1. 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
    
  2. 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

  1. 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"
    
  1. 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

  1. 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.