次の方法で共有


ファイアウォールを使用して Azure CLI を使用して送信トラフィックを制限する

大事な

AKS 上の Azure HDInsight は、2025 年 1 月 31 日に廃止されました。 この発表 について詳しく知ることができます。

ワークロードの突然の終了を回避するには、ワークロードを Microsoft Fabric または同等の Azure 製品 に移行する必要があります。

重要

この機能は現在プレビュー段階です。 Microsoft Azure プレビューの 追加使用条件 には、ベータ版、プレビュー版、または一般公開されていない Azure 機能に適用される、より多くの法的条件が含まれています。 この特定のプレビューの詳細については、AKS プレビュー情報 Azure HDInsightを参照してください。 ご質問や機能の提案については、AskHDInsight に詳細を記載した要求を送信してください。また、Azure HDInsight Community をフォローして、さらなる更新をお受け取りください。

企業がクラスターのデプロイに独自の仮想ネットワークを使用する場合、仮想ネットワークのトラフィックをセキュリティで保護することが重要になります。 この記事では、Azure CLI を使用して、Azure Firewall 経由で AKS クラスター上の HDInsight からの送信トラフィックセキュリティで保護する手順について説明します。

次の図は、この記事でエンタープライズ シナリオをシミュレートするために使用される例を示しています。

ネットワーク フローを示す図。

この記事で示す例は、Azure Could Shell 使用しています。

変数を定義する

Azure Cloud Shell でコピーして実行し、これらの変数の値を設定します。

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 変数を示す図。

仮想ネットワークとサブネットを作成する

  1. az group create コマンドを使用してリソース グループを作成します。

    az group create --name $RG --location $LOC
    
  2. 仮想ネットワークと 2 つのサブネットを作成します。

    1. AKS クラスター プール上の HDInsight のサブネットを持つ仮想ネットワーク

       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 Firewall のサブネット。

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

      大事な

      1. サブネット HDIAKS_SUBNET_NAMEに NSG を追加する場合は、特定の送信規則と受信規則を手動で追加する必要があります。 NSGをで使用して、トラフィックを制限してください。
      2. 既定では、ルート テーブルはサブネットに関連付けされません。 必要に応じて、ユーザーはルート テーブルを作成し、クラスター プールに関連付ける必要があります。

Azure portal を使用して AKS クラスター プールに HDInsight を作成する

  1. クラスター プールを作成します。

    クラスター プールの [基本] タブを示す図。

    [セキュリティ] タブを示す 図。

  2. ルート テーブルを作成します。

    ルート テーブルを作成し、クラスター プールに関連付けます。 詳細については、ルート テーブル 作成を参照してください。

クラスター プールの背後に作成された AKS クラスターの詳細を取得する

手順に従って AKS クラスター情報を取得します。これは、後続の手順で役立ちます。

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)

ファイアウォールを作成する

  1. Standard SKU パブリック IP リソースを作成します。 このリソースは、Azure Firewall のフロントエンド アドレスとして使用されます。

    az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
    
  2. Azure Firewall プレビュー CLI 拡張機能を登録して、Azure Firewall を作成します。

       az extension add --name azure-firewall
    
  3. Azure Firewall を作成し、DNS プロキシを有効にします。

       az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
    
  4. Azure Firewall IP 構成を作成します。

    az network firewall ip-config create -g $RG -f $FWNAME -n $FWIPCONFIG_NAME --public-ip-address $FWPUBLICIP_NAME --vnet-name $VNET_NAME
    
  5. IP 構成コマンドが成功したら、後で構成用のファイアウォール フロントエンド IP アドレスを保存します。

    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)
    

ファイアウォールにネットワーク規則とアプリケーション規則を追加する

  1. ネットワーク ルールを作成します。

    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. アプリケーション ルールを作成します。

    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"
    

トラフィックをファイアウォールにリダイレクトするルート をルート テーブルに作成する

AKS クラスター プール上の HDInsight に関連付けるルート テーブルを作成します。 詳細については、「ルート テーブル コマンドを作成する」を参照してください。

クラスターの作成

前の手順では、ネットワーク トラフィックをファイアウォールにルーティングしました。

次の手順では、各クラスターの種類に必要な特定のネットワーク規則とアプリケーション ルールについて詳しく説明します。 必要に応じて、Apache Flink Trino、および Apache Spark クラスター作成するためのクラスター作成ページを参照できます。

大事な

クラスターを作成する前に、次のクラスター固有の規則を実行してトラフィックを許可してください。

トリノ

  1. 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> を地域に変更してください。 例: 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 クラスターに次のアプリケーション 規則を追加します。

    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 クラスターの次のネットワーク規則とアプリケーション規則を追加します。

    要件に必要なリージョンに、次の構文の Storage.<Region> を変更してください。 例: 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> を、必要に応じてお住まいの地域に変更してください。 例: 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"
    

対称ルーティングの問題を解決する

次の手順では、クラスター ロード バランサーのイングレス サービスによってクラスターを要求し、ネットワーク応答トラフィックがファイアウォールに流れないことを確認できます。 ルート テーブルにルートを追加して、応答トラフィックをクライアント IP にインターネットにリダイレクトした後、クラスターに直接到達できます。

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を構成した後でクラスターに到達できない場合は、の手順に従ってNSGを使用しトラフィックを制限し、その後に従ってトラフィックを許可します。

ヒント

より多くのトラフィックを許可する場合は、ファイアウォール経由で構成できます。

デバッグ方法

クラスターが予期せず動作する場合は、ファイアウォール ログを確認して、ブロックされているトラフィックを見つけることができます。