Ograniczanie ruchu wychodzącego przy użyciu interfejsu wiersza polecenia platformy Azure przy użyciu zapory
Uwaga
Wycofamy usługę Azure HDInsight w usłudze AKS 31 stycznia 2025 r. Przed 31 stycznia 2025 r. należy przeprowadzić migrację obciążeń do usługi Microsoft Fabric lub równoważnego produktu platformy Azure, aby uniknąć nagłego zakończenia obciążeń. Pozostałe klastry w ramach subskrypcji zostaną zatrzymane i usunięte z hosta.
Tylko podstawowa pomoc techniczna będzie dostępna do daty wycofania.
Ważne
Ta funkcja jest aktualnie dostępna jako funkcja podglądu. Dodatkowe warunki użytkowania dla wersji zapoznawczych platformy Microsoft Azure obejmują więcej warunków prawnych, które dotyczą funkcji platformy Azure, które znajdują się w wersji beta, w wersji zapoznawczej lub w inny sposób nie zostały jeszcze wydane w wersji ogólnodostępnej. Aby uzyskać informacje o tej konkretnej wersji zapoznawczej, zobacz Informacje o wersji zapoznawczej usługi Azure HDInsight w usłudze AKS. W przypadku pytań lub sugestii dotyczących funkcji prześlij żądanie w usłudze AskHDInsight , aby uzyskać szczegółowe informacje i postępuj zgodnie z nami, aby uzyskać więcej aktualizacji w społeczności usługi Azure HDInsight.
Gdy przedsiębiorstwo chce używać własnej sieci wirtualnej do wdrożeń klastra, zabezpieczanie ruchu sieci wirtualnej staje się ważne. Ten artykuł zawiera kroki zabezpieczania ruchu wychodzącego z klastra usługi HDInsight w klastrze usługi AKS za pośrednictwem usługi Azure Firewall przy użyciu interfejsu wiersza polecenia platformy Azure.
Na poniższym diagramie przedstawiono przykład używany w tym artykule do symulowania scenariusza przedsiębiorstwa:
W przykładzie przedstawionym w tym artykule jest użycie usługi Azure Could Shell.
Definiowanie zmiennych
Skopiuj i wykonaj polecenie w usłudze Azure Cloud Shell, aby ustawić wartości tych zmiennych.
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"
Tworzenie sieci wirtualnej i podsieci
Utwórz grupę zasobów przy użyciu polecenia az group create.
az group create --name $RG --location $LOC
Utwórz sieć wirtualną i dwie podsieci.
Sieć wirtualna z podsiecią dla usługi HDInsight w puli klastrów usługi AKS
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
Podsieć dla usługi Azure Firewall.
az network vnet subnet create \ --resource-group $RG \ --vnet-name $VNET_NAME \ --name $FWSUBNET_NAME \ --address-prefix 10.2.0.0/16
Ważne
- Jeśli dodasz sieciową grupę zabezpieczeń w podsieci
HDIAKS_SUBNET_NAME
, musisz ręcznie dodać pewne reguły ruchu wychodzącego i przychodzącego. Użyj sieciowej grupy zabezpieczeń, aby ograniczyć ruch. - Domyślnie tabela tras nie będzie skojarzona z podsiecią. Jeśli jest to wymagane, użytkownik musi utworzyć tabelę tras i skojarzyć ją z pulą klastrów.
- Jeśli dodasz sieciową grupę zabezpieczeń w podsieci
Tworzenie usługi HDInsight w puli klastrów usługi AKS przy użyciu witryny Azure Portal
Utwórz pulę klastrów.
Utwórz tabelę tras.
Utwórz tabelę tras i skojarz ją z pulą klastrów. Aby uzyskać więcej informacji, zobacz tworzenie tabeli tras.
Pobieranie szczegółów klastra usługi AKS utworzonych za pulą klastrów
Wykonaj kroki, aby uzyskać informacje o klastrze usługi AKS, które są przydatne w kolejnych krokach.
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)
Tworzenie zapory
Utwórz zasób publicznego adresu IP jednostki SKU w warstwie Standardowa. Ten zasób jest używany jako adres frontonu usługi Azure Firewall.
az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
Zarejestruj rozszerzenie interfejsu wiersza polecenia usługi Azure Firewall w wersji zapoznawczej, aby utworzyć usługę Azure Firewall.
az extension add --name azure-firewall
Utwórz usługę Azure Firewall i włącz serwer proxy DNS.
az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
Utwórz konfigurację adresu IP usługi Azure Firewall.
az network firewall ip-config create -g $RG -f $FWNAME -n $FWIPCONFIG_NAME --public-ip-address $FWPUBLICIP_NAME --vnet-name $VNET_NAME
Po pomyślnym zakończeniu polecenia konfiguracji adresu IP zapisz adres IP frontonu zapory na potrzeby konfiguracji później.
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)
Dodawanie reguł sieci i aplikacji do zapory
Utwórz reguły sieci.
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
Utwórz reguły aplikacji.
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"
Tworzenie trasy w tabeli tras w celu przekierowania ruchu do zapory
Utwórz tabelę tras, która ma być skojarzona z usługą HDInsight w puli klastrów usługi AKS. Aby uzyskać więcej informacji, zobacz create route table commands (Tworzenie poleceń tabeli tras).
Tworzenie klastra
W poprzednich krokach kierować ruch sieciowy do zapory.
Poniższe kroki zawierają szczegółowe informacje o określonych regułach sieci i aplikacji wymaganych przez każdy typ klastra. Możesz zapoznać się ze stronami tworzenia klastra na potrzeby tworzenia klastrów Apache Flink, Trino i Apache Spark .
Ważne
Przed utworzeniem klastra należy uruchomić następujące reguły specyficzne dla klastra, aby zezwolić na ruch.
Trino
Dodaj następujące reguły sieci i aplikacji dla klastra Trino.
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"
Zmień następującą składnię
Sql.<Region>
na region zgodnie z wymaganiami. Na przykład: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
Dodaj następującą regułę aplikacji dla klastra Apache Flink.
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
Dodaj następujące reguły sieci i aplikacji dla klastra Spark.
Zmień w
Storage.<Region>
poniższej składni na region zgodnie z wymaganiami. Na przykład: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"
Zmień w
Sql.<Region>
poniższej składni na region zgodnie z wymaganiami. Na przykład: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"
Rozwiązywanie problemu z routingiem symetrycznym
Poniższe kroki umożliwiają zażądanie klastra przez usługę ruchu przychodzącego modułu równoważenia obciążenia klastra i upewnienie się, że ruch odpowiedzi sieciowej nie przepływa do zapory. Dodaj trasę do tabeli tras, aby przekierować ruch odpowiedzi do adresu IP klienta do Internetu, a następnie możesz uzyskać bezpośredni dostęp do klastra.
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
Jeśli nie możesz nawiązać połączenia z klastrem po skonfigurowaniu sieciowej grupy zabezpieczeń, postępuj zgodnie z instrukcjami , aby ograniczyć ruch, aby zezwolić na ruch .
Napiwek
Jeśli chcesz zezwolić na większy ruch, możesz skonfigurować go przez zaporę.
Jak debugować
Jeśli znajdziesz klaster działa nieoczekiwanie, możesz sprawdzić dzienniki zapory, aby znaleźć, który ruch jest blokowany.