Dela via


Använda brandväggen för att begränsa utgående trafik med Hjälp av Azure CLI

Viktigt!

Den här funktionen finns i förhandsgranskning. De kompletterande användningsvillkoren för Förhandsversioner av Microsoft Azure innehåller fler juridiska villkor som gäller för Azure-funktioner som är i betaversion, förhandsversion eller på annat sätt ännu inte har släppts i allmän tillgänglighet. Information om den här specifika förhandsversionen finns i Azure HDInsight på AKS-förhandsversionsinformation. Om du vill ha frågor eller funktionsförslag skickar du en begäran på AskHDInsight med informationen och följer oss för fler uppdateringar i Azure HDInsight Community.

När ett företag vill använda sitt eget virtuella nätverk för klusterdistributionerna blir det viktigt att skydda trafiken i det virtuella nätverket. Den här artikeln innehåller stegen för att skydda utgående trafik från HDInsight i AKS-klustret via Azure Firewall med hjälp av Azure CLI.

Följande diagram illustrerar exemplet som används i den här artikeln för att simulera ett företagsscenario:

Diagram som visar nätverksflödet.

Exemplet som visas i den här artikeln är att använda Azure Could Shell.

Definiera variablerna

Kopiera och kör i Azure Cloud Shell för att ange värdena för dessa variabler.

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"

Diagram som visar Cloud Shell-variablerna.

Skapa ett virtuellt nätverk och undernät

  1. Skapa en resursgrupp med hjälp av kommandot az group create.

    az group create --name $RG --location $LOC
    
  2. Skapa ett virtuellt nätverk och två undernät.

    1. Virtuellt nätverk med undernät för HDInsight i AKS-klusterpool

       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. Undernät 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
      

      Viktigt!

      1. Om du lägger till NSG i undernätet HDIAKS_SUBNET_NAMEmåste du lägga till vissa regler för utgående och inkommande trafik manuellt. Följ använda NSG för att begränsa trafiken.
      2. Som standard associeras inte routningstabellen med undernätet. Om det behövs måste användaren skapa en routningstabell och associera den med klusterpoolen.

Skapa HDInsight i AKS-klusterpoolen med Hjälp av Azure-portalen

  1. Skapa en klusterpool.

    Diagram som visar fliken Grundläggande för klusterpoolen.

    Diagram som visar fliken Säkerhet.

  2. Skapa en routningstabell.

    Skapa en routningstabell och associera den med klusterpoolen. Mer information finns i skapa en routningstabell.

Hämta INFORMATION om AKS-kluster som skapats bakom klusterpoolen

Följ stegen för att hämta INFORMATION om AKS-klustret, vilket är användbart i efterföljande steg.

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)

Skapa brandvägg

  1. Skapa en offentlig IP-resurs för standard-SKU. Den här resursen används som Klientdelsadress för Azure Firewall.

    az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
    
  2. Registrera CLI-tillägget för förhandsversionen av Azure Firewall för att skapa en Azure Firewall.

       az extension add --name azure-firewall
    
  3. Skapa en Azure Firewall och aktivera DNS-proxy.

       az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
    
  4. Skapa en IP-konfiguration för Azure Firewall.

    az network firewall ip-config create -g $RG -f $FWNAME -n $FWIPCONFIG_NAME --public-ip-address $FWPUBLICIP_NAME --vnet-name $VNET_NAME
    
  5. När IP-konfigurationskommandot har slutförts sparar du IP-adressen för brandväggens klientdel för konfiguration senare.

    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)
    

Lägga till nätverks- och programregler i brandväggen

  1. Skapa nätverksreglerna.

    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. Skapa programreglerna.

    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"
    

Skapa en väg i routningstabellen för att omdirigera trafiken till brandväggen

Skapa en routningstabell som ska associeras med HDInsight i AKS-klusterpoolen. Mer information finns i skapa routningstabellkommandon.

Skapa kluster

I föregående steg dirigerade vi nätverkstrafik till brandväggen.

Följande steg innehåller information om de specifika nätverks- och programregler som krävs av varje klustertyp. Du kan se sidorna för att skapa kluster för att skapa Apache Flink-, Trino- och Apache Spark-kluster baserat på dina behov.

Viktigt!

Innan du skapar ett kluster måste du köra följande klusterspecifika regler för att tillåta trafiken.

Trino

  1. Lägg till följande nätverks- och programregler för ett Trino-kluster.

     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"  
    

    Sql.<Region> Ändra följande syntax till din region enligt dina behov. Till exempel: 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. Lägg till följande programregel för ett Apache Flink-kluster.

    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. Lägg till följande nätverks- och programregler för ett Spark-kluster.

    Storage.<Region> Ändra följande syntax till din region enligt dina behov. Till exempel: 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"
    

    Sql.<Region> Ändra följande syntax till din region enligt dina behov. Till exempel: 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"
    

Lösa problem med symmetrisk routning

Med följande steg kan du begära kluster efter ingresstjänst för klusterlastbalanserare och se till att nätverkssvarstrafiken inte flödar till brandväggen. Lägg till en väg till routningstabellen för att omdirigera svarstrafiken till din klient-IP till Internet och sedan nå klustret direkt.

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

Om du inte kan nå klustret när du har konfigurerat NSG följer du använda NSG för att begränsa trafiken för att tillåta trafiken.

Dricks

Om du vill tillåta mer trafik kan du konfigurera den via brandväggen.

Så här felsöker du

Om du upptäcker att klustret fungerar oväntat kan du kontrollera brandväggsloggarna för att se vilken trafik som blockeras.