Använd brandväggen för att begränsa utgående trafik med hjälp av Azure CLI
Viktig
Azure HDInsight på AKS drogs tillbaka den 31 januari 2025. Läs mer genom det här tillkännagivandet.
Du måste migrera dina arbetsbelastningar till Microsoft Fabric- eller en motsvarande Azure-produkt för att undvika plötsliga uppsägningar av dina arbetsbelastningar.
Viktig
Den här funktionen är för närvarande i förhandsversion. 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 beta, förhandsversion eller på annat sätt ännu inte har gjorts allmänt tillgängliga. Information om den här specifika förhandsversionen finns i Azure HDInsight på AKS-förhandsversionsinformation. För frågor eller funktionsförslag, vänligen skicka en begäran på AskHDInsight med detaljerna och följ oss för fler uppdateringar om 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 använder Azure Cloud 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 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
Viktig
- 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 och använd 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-portalen
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 Apache Flink-, Trino- och Apache Spark-kluster efter dina behov.
Viktig
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"
Ändra
Sql.<Region>
i 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.
Ändra
Storage.<Region>
i 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"
Ändra
Sql.<Region>
i 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 ingångstjänst för klusterladdningsbalanserare per kluster och se till att nätverkets svarstrafik 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 efter att du har konfigurerat NSG, följ anvisningarna: använd NSG för att begränsa trafiken och för att tillåta trafiken.
Tips
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.