Aracılığıyla paylaş


Azure CLI kullanarak giden trafiği kısıtlamak için güvenlik duvarı kullanma

Bir kuruluş, küme dağıtımları için kendi sanal ağını kullanmak istediğinde, sanal ağın trafiğinin güvenliğini sağlamak önemli hale gelir. Bu makalede, Azure CLI kullanarak Azure Güvenlik Duvarı aracılığıyla AKS kümesindeki HDInsight'ınızdan giden trafiğin güvenliğini sağlama adımları sağlanır.

Aşağıdaki diyagramda, kurumsal senaryo benzetimi yapmak için bu makalede kullanılan örnek gösterilmektedir:

Ağ akışını gösteren diyagram.

Bu makalede açıklanan örnek, Azure Could Shell'i kullanmaktır.

Değişkenleri tanımlama

Bu değişkenlerin değerlerini ayarlamak için Azure Cloud Shell'de kopyalayıp yürütür.

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"

Cloud Shell değişkenlerini gösteren diyagram.

Sanal ağı ve alt ağları oluşturma

  1. az group create komutunu kullanarak bir kaynak grubu oluşturun.

    az group create --name $RG --location $LOC
    
  2. Bir sanal ağ ve iki alt ağ oluşturun.

    1. AKS küme havuzunda HDInsight için alt ağa sahip sanal ağ

       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. Azure Güvenlik Duvarı için alt ağ.

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

      Önemli

      1. alt ağına HDIAKS_SUBNET_NAMENSG eklerseniz, belirli giden ve gelen kurallarını el ile eklemeniz gerekir. Trafiği kısıtlamak için NSG'yi kullanın.
      2. Varsayılan olarak, yönlendirme tablosu alt ağ ile ilişkilendirilmeyecektir. Gerekirse, kullanıcının bir yönlendirme tablosu oluşturması ve bunu küme havuzuyla ilişkilendirmesi gerekir.

Azure portalını kullanarak AKS küme havuzunda HDInsight oluşturma

  1. Küme havuzu oluşturma.

    Küme havuzu temel sekmesini gösteren diyagram.

    Güvenlik sekmesini gösteren diyagram.

  2. Yol tablosu oluşturun.

    Bir yol tablosu oluşturun ve bunu küme havuzuyla ilişkilendirin. Daha fazla bilgi için bkz . Yol tablosu oluşturma.

Küme havuzunun arkasında oluşturulan AKS kümesi ayrıntılarını alma

Sonraki adımlarda yararlı olan AKS kümesi bilgilerini almak için adımları izleyin.

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)

Güvenlik duvarı oluşturma

  1. Standart SKU genel IP kaynağı oluşturun. Bu kaynak Azure Güvenlik Duvarı ön uç adresi olarak kullanılır.

    az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
    
  2. Azure Güvenlik Duvarı oluşturmak için Azure Güvenlik Duvarı önizleme CLI uzantısını kaydedin.

       az extension add --name azure-firewall
    
  3. bir Azure Güvenlik Duvarı oluşturun ve DNS ara sunucusunu etkinleştirin.

       az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
    
  4. bir Azure Güvenlik Duvarı IP yapılandırması oluşturun.

    az network firewall ip-config create -g $RG -f $FWNAME -n $FWIPCONFIG_NAME --public-ip-address $FWPUBLICIP_NAME --vnet-name $VNET_NAME
    
  5. IP yapılandırma komutu başarılı olduktan sonra, daha sonra yapılandırma için güvenlik duvarı ön uç IP adresini kaydedin.

    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)
    

Güvenlik duvarına ağ ve uygulama kuralları ekleme

  1. Ağ kurallarını oluşturun.

    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. Uygulama kurallarını oluşturun.

    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"
    

Trafiği güvenlik duvarına yönlendirmek için rota tablosunda yol oluşturma

AKS küme havuzundaki HDInsight ile ilişkilendirilecek bir yol tablosu oluşturun. Daha fazla bilgi için bkz . Yol tablosu komutları oluşturma.

Küme oluşturma

Önceki adımlarda ağ trafiğini güvenlik duvarına yönlendirdik.

Aşağıdaki adımlar, her küme türü için gereken belirli ağ ve uygulama kuralları hakkında ayrıntılar sağlar. İhtiyacınıza göre Apache Flink, Trino ve Apache Spark kümeleri oluşturmak için küme oluşturma sayfalarına başvurabilirsiniz.

Önemli

Küme oluşturmadan önce trafiğe izin vermek için aşağıdaki kümeye özgü kuralları çalıştırdığınızdan emin olun.

Trino

  1. Trino kümesi için aşağıdaki ağ ve uygulama kurallarını ekleyin.

     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> Aşağıdaki söz dizimindeki öğesini, gereksinimlerinize göre bölgenizle değiştirin. Örneğin: 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. Apache Flink kümesi için aşağıdaki uygulama kuralını ekleyin.

    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. Spark kümesi için aşağıdaki ağ ve uygulama kurallarını ekleyin.

    Storage.<Region> Aşağıdaki söz dizimindeki öğesini, gereksinimlerinize göre bölgenizle değiştirin. Örneğin: 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> Aşağıdaki söz dizimindeki öğesini, gereksinimlerinize göre bölgenizle değiştirin. Örneğin: 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"
    

Simetrik yönlendirme sorununu çözme

Aşağıdaki adımlar, küme yük dengeleyici giriş hizmetine göre küme isteğinde bulunmanıza ve ağ yanıt trafiğinin güvenlik duvarına akmadığından emin olmanıza olanak tanır. Yanıt trafiğini istemci IP'nize İnternet'e yönlendirmek için yol tablosuna bir yol ekleyin ve ardından kümeye doğrudan ulaşabilirsiniz.

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

NSG'yi yapılandırdıktan sonra kümeye ulaşamıyorsanız trafiği trafiğe izin verecek şekilde kısıtlamak için NSG'yi kullanın.

İpucu

Daha fazla trafiğe izin vermek istiyorsanız, bunu güvenlik duvarı üzerinden yapılandırabilirsiniz.

Hata ayıklama

Kümenin beklenmedik şekilde çalıştığını fark ederseniz, hangi trafiğin engellendiğini bulmak için güvenlik duvarı günlüklerini denetleyebilirsiniz.