Använda brandväggen för att begränsa utgående trafik med Hjälp av Azure CLI
Kommentar
Vi drar tillbaka Azure HDInsight på AKS den 31 januari 2025. Före den 31 januari 2025 måste du migrera dina arbetsbelastningar till Microsoft Fabric eller en motsvarande Azure-produkt för att undvika plötsliga uppsägningar av dina arbetsbelastningar. Återstående kluster i din prenumeration stoppas och tas bort från värden.
Endast grundläggande stöd kommer att vara tillgängligt fram till datumet för pensionering.
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:
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"
Skapa ett virtuellt nätverk och undernät
Skapa en resursgrupp med hjälp av kommandot az group create.
az group create --name $RG --location $LOC
Skapa ett virtuellt nätverk och två undernät.
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
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!
- Om du lägger till NSG i undernätet
HDIAKS_SUBNET_NAME
må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. - Som standard associeras inte routningstabellen med undernätet. Om det behövs måste användaren skapa en routningstabell och associera den med klusterpoolen.
- Om du lägger till NSG i undernätet
Skapa HDInsight i AKS-klusterpoolen med hjälp av Azure Portal
Skapa en klusterpool.
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
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"
Registrera CLI-tillägget för förhandsversionen av Azure Firewall för att skapa en Azure Firewall.
az extension add --name azure-firewall
Skapa en Azure Firewall och aktivera DNS-proxy.
az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
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
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
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
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
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"
Apache Flink
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
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.