Použití brány firewall k omezení odchozího provozu pomocí Azure CLI

Důležité

Tato funkce je aktuálně dostupná jako ukázková verze. Doplňkové podmínky použití pro Microsoft Azure Preview obsahují další právní podmínky, které se vztahují na funkce Azure, které jsou v beta verzi, ve verzi Preview nebo ještě nejsou vydány v obecné dostupnosti. Informace o této konkrétní verzi Preview najdete v tématu Azure HDInsight o službě AKS ve verzi Preview. Pokud máte dotazy nebo návrhy funkcí, odešlete prosím žádost na AskHDInsight s podrobnostmi a sledujte nás o dalších aktualizacích v komunitě Azure HDInsight.

Když podnik chce pro nasazení clusteru používat vlastní virtuální síť, stane se důležitým zabezpečením provozu virtuální sítě. Tento článek obsahuje postup zabezpečení odchozího provozu ze služby HDInsight v clusteru AKS prostřednictvím služby Azure Firewall pomocí Azure CLI.

Následující diagram znázorňuje příklad použitý v tomto článku k simulaci podnikového scénáře:

Diagram znázorňující tok sítě

Příklad ukázaný v tomto článku používá Azure Could Shell.

Definování proměnných

Zkopírujte a spusťte v Azure Cloud Shellu, abyste nastavili hodnoty těchto proměnných.

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 znázorňující proměnné Cloud Shellu

Vytvoření virtuální sítě a podsítí

  1. Vytvořte skupinu prostředků pomocí příkazu az group create.

    az group create --name $RG --location $LOC
    
  2. Vytvořte virtuální síť a dvě podsítě.

    1. Virtuální síť s podsítí pro HDInsight ve fondu clusterů 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
      
    2. Podsíť pro Azure Firewall

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

      Důležité

      1. Pokud do podsítě HDIAKS_SUBNET_NAMEpřidáte skupinu zabezpečení sítě , musíte přidat určitá odchozí a příchozí pravidla ručně. Pomocí skupiny zabezpečení sítě omezte provoz.
      2. Ve výchozím nastavení nebude směrovací tabulka přidružená k podsíti. V případě potřeby musí uživatel vytvořit směrovací tabulku a přidružit ji k fondu clusterů.

Vytvoření SLUŽBY HDInsight ve fondu clusterů AKS pomocí webu Azure Portal

  1. Vytvořte fond clusterů.

    Diagram znázorňující základní kartu fondu clusterů

    Diagram znázorňující kartu zabezpečení

  2. Vytvořte směrovací tabulku.

    Vytvořte směrovací tabulku a přidružte ji ke fondu clusteru. Další informace najdete v tématu Vytvoření směrovací tabulky.

Získání podrobností o clusteru AKS vytvořených za fondem clusteru

Podle kroků získejte informace o clusteru AKS, což je užitečné v následujících krocích.

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)

Vytvoření brány firewall

  1. Vytvořte prostředek veřejné IP adresy skladové položky Standard. Tento prostředek se používá jako front-endová adresa služby Azure Firewall.

    az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
    
  2. Zaregistrujte rozšíření Rozhraní příkazového řádku služby Azure Firewall ve verzi Preview a vytvořte bránu Azure Firewall.

       az extension add --name azure-firewall
    
  3. Vytvořte bránu Azure Firewall a povolte proxy server DNS.

       az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
    
  4. Vytvořte konfiguraci PROTOKOLU IP služby 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. Jakmile bude příkaz konfigurace PROTOKOLU IP úspěšný, uložte ip adresu front-endu brány firewall pro pozdější konfiguraci.

    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)
    

Přidání pravidel sítě a aplikací do brány firewall

  1. Vytvořte pravidla sítě.

    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. Vytvořte pravidla aplikace.

    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"
    

Vytvoření trasy v směrovací tabulce pro přesměrování provozu do brány firewall

Vytvořte směrovací tabulku, která se přidružuje ke službě HDInsight ve fondu clusteru AKS. Další informace najdete v tématu vytvoření příkazů směrovací tabulky.

Vytvoření clusteru

V předchozích krocích jsme směrovali síťový provoz do brány firewall.

Následující kroky obsahují podrobnosti o konkrétních pravidlech sítě a aplikací potřebných pro každý typ clusteru. Můžete se podívat na stránky pro vytváření clusterů pro vytváření clusterů Apache Flink, Trino a Apache Spark na základě vašich potřeb.

Důležité

Před vytvořením clusteru nezapomeňte spustit následující pravidla specifická pro cluster, která povolují provoz.

Trino

  1. Přidejte následující pravidla sítě a aplikací pro cluster 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"  
    

    Sql.<Region> Podle vašeho požadavku změňte následující syntaxi na vaši oblast. Příklad: 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. Přidejte následující pravidlo aplikace pro cluster 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

  1. Přidejte následující pravidla sítě a aplikací pro cluster Spark.

    Storage.<Region> Podle vašeho požadavku změňte následující syntaxi na vaši oblast. Příklad: 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> Podle vašeho požadavku změňte následující syntaxi na vaši oblast. Příklad: 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"
    

Řešení problému se symetrickým směrováním

Následující kroky umožňují vyžádat cluster podle služby příchozího přenosu dat nástroje pro vyrovnávání zatížení clusteru a zajistit, aby provoz odezvy sítě netekal do brány firewall. Přidejte trasu do směrovací tabulky, která přesměruje provoz odpovědí na IP adresu klienta na internet a pak se můžete připojit přímo ke clusteru.

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

Pokud se po nakonfigurování skupiny zabezpečení sítě nemůžete připojit ke clusteru, pomocí skupiny zabezpečení sítě omezte provoz a povolte provoz .

Tip

Pokud chcete povolit více přenosů, můžete ho nakonfigurovat přes bránu firewall.

Postup ladění

Pokud zjistíte, že cluster funguje neočekávaně, můžete zkontrolovat protokoly brány firewall a zjistit, který provoz je blokovaný.