Delen via


Firewall gebruiken om uitgaand verkeer te beperken met behulp van Azure CLI

Belangrijk

Deze functie is momenteel beschikbaar in preview. De aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews bevatten meer juridische voorwaarden die van toepassing zijn op Azure-functies die bèta, in preview of anderszins nog niet beschikbaar zijn in algemene beschikbaarheid. Zie Azure HDInsight op AKS Preview-informatie voor meer informatie over deze specifieke preview. Voor vragen of suggesties voor functies dient u een aanvraag in op AskHDInsight met de details en volgt u ons voor meer updates in de Azure HDInsight-community.

Wanneer een onderneming een eigen virtueel netwerk wil gebruiken voor de clusterimplementaties, wordt het beveiligen van het verkeer van het virtuele netwerk belangrijk. Dit artikel bevat de stappen voor het beveiligen van uitgaand verkeer vanuit uw HDInsight op AKS-cluster via Azure Firewall met behulp van Azure CLI.

In het volgende diagram ziet u het voorbeeld dat in dit artikel wordt gebruikt om een bedrijfsscenario te simuleren:

Diagram van de netwerkstroom.

In het voorbeeld dat in dit artikel wordt gedemonstreerd, wordt Gebruikgemaakt van Azure Could Shell.

De variabelen definiëren

Kopieer en voer deze uit in De Azure Cloud Shell om de waarden van deze variabelen in te stellen.

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 met de Cloud Shell-variabelen.

Een virtueel netwerk en subnetten maken

  1. Maak een resourcegroep met de opdracht az group create.

    az group create --name $RG --location $LOC
    
  2. Maak een virtueel netwerk en twee subnetten.

    1. Virtueel netwerk met subnet voor HDInsight in AKS-clustergroep

       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. Subnet voor Azure Firewall.

      az network vnet subnet create \
         --resource-group $RG \
         --vnet-name $VNET_NAME \
         --name $FWSUBNET_NAME \
         --address-prefix 10.2.0.0/16
      

      Belangrijk

      1. Als u NSG toevoegt aan het subnet HDIAKS_SUBNET_NAME, moet u bepaalde regels voor uitgaand en inkomend verkeer handmatig toevoegen. Volg het gebruik van NSG om het verkeer te beperken.
      2. Standaard wordt de routetabel niet gekoppeld aan het subnet. Indien nodig moet de gebruiker een routetabel maken en deze koppelen aan de clustergroep.

HDInsight in AKS-clustergroep maken met behulp van Azure Portal

  1. Maak een clustergroep.

    Diagram met het tabblad Basic van de clustergroep.

    Diagram met het tabblad Beveiliging.

  2. Maak een routetabel.

    Maak een routetabel en koppel deze aan de clustergroep. Zie Een routetabel maken voor meer informatie.

AKS-clusterdetails ophalen die zijn gemaakt achter de clustergroep

Volg de stappen om de informatie over het AKS-cluster op te halen. Dit is handig in de volgende stappen.

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 maken

  1. Maak een openbare IP-resource voor de standard-SKU. Deze resource wordt gebruikt als het front-endadres van Azure Firewall.

    az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
    
  2. Registreer de AZURE Firewall Preview CLI-extensie om een Azure Firewall te maken.

       az extension add --name azure-firewall
    
  3. Maak een Azure Firewall en schakel DNS-proxy in.

       az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
    
  4. Maak een IP-configuratie van 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. Zodra de IP-configuratieopdracht is geslaagd, slaat u het front-end-IP-adres van de firewall op voor de configuratie later.

    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)
    

Netwerk- en toepassingsregels toevoegen aan de firewall

  1. Maak de netwerkregels.

    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. Maak de toepassingsregels.

    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"
    

Route maken in de routetabel om het verkeer om te leiden naar de firewall

Maak een routetabel die moet worden gekoppeld aan HDInsight in een AKS-clustergroep. Zie opdrachten voor routetabellen maken voor meer informatie.

Cluster maken

In de vorige stappen hebben we netwerkverkeer omgeleid naar de firewall.

De volgende stappen bevatten details over de specifieke netwerk- en toepassingsregels die voor elk clustertype nodig zijn. U kunt de pagina's voor het maken van clusters raadplegen voor het maken van Apache Flink-, Trino- en Apache Spark-clusters op basis van uw behoeften.

Belangrijk

Voordat u een cluster maakt, moet u de volgende clusterspecifieke regels uitvoeren om het verkeer toe te staan.

Trino

  1. Voeg de volgende netwerk- en toepassingsregels toe voor een Trino-cluster.

     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"  
    

    Wijzig de Sql.<Region> volgende syntaxis in uw regio op basis van uw behoeften. Bijvoorbeeld: 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. Voeg de volgende toepassingsregel toe voor een Apache Flink-cluster.

    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. Voeg de volgende netwerk- en toepassingsregels toe voor een Spark-cluster.

    Wijzig de Storage.<Region> volgende syntaxis in uw regio op basis van uw behoeften. Bijvoorbeeld: 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"
    

    Wijzig de Sql.<Region> volgende syntaxis in uw regio op basis van uw behoeften. Bijvoorbeeld: 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"
    

Probleem met symmetrische routering oplossen

Met de volgende stappen kunt u cluster aanvragen door de load balancer-service voor inkomend verkeer van de clustertaakverdeling en ervoor zorgen dat het netwerkresponsverkeer niet naar de firewall stroomt. Voeg een route toe aan de routetabel om het antwoordverkeer om te leiden naar het IP-adres van uw client naar internet. Vervolgens kunt u het cluster rechtstreeks bereiken.

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

Als u het cluster niet kunt bereiken nadat u NSG hebt geconfigureerd, volgt u NSG om het verkeer te beperken om het verkeer toe te staan.

Tip

Als u meer verkeer wilt toestaan, kunt u dit configureren via de firewall.

Fouten opsporen

Als u merkt dat het cluster onverwacht werkt, kunt u de firewalllogboeken controleren om te zien welk verkeer wordt geblokkeerd.