ファイアウォールを使用して 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"
仮想ネットワークとサブネットを作成する
az group create コマンドを使用してリソース グループを作成します。
az group create --name $RG --location $LOC
仮想ネットワークと 2 つのサブネットを作成します。
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
Azure Firewall のサブネット。
az network vnet subnet create \ --resource-group $RG \ --vnet-name $VNET_NAME \ --name $FWSUBNET_NAME \ --address-prefix 10.2.0.0/16
大事な
- サブネット
HDIAKS_SUBNET_NAME
に NSG を追加する場合は、特定の送信規則と受信規則を手動で追加する必要があります。 NSGをで使用して、トラフィックを制限してください。 - 既定では、ルート テーブルはサブネットに関連付けされません。 必要に応じて、ユーザーはルート テーブルを作成し、クラスター プールに関連付ける必要があります。
- サブネット
Azure portal を使用して AKS クラスター プールに HDInsight を作成する
クラスター プールを作成します。
ルート テーブルを作成します。
ルート テーブルを作成し、クラスター プールに関連付けます。 詳細については、ルート テーブル 作成を参照してください。
クラスター プールの背後に作成された 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)
ファイアウォールを作成する
Standard SKU パブリック IP リソースを作成します。 このリソースは、Azure Firewall のフロントエンド アドレスとして使用されます。
az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
Azure Firewall プレビュー CLI 拡張機能を登録して、Azure Firewall を作成します。
az extension add --name azure-firewall
Azure Firewall を作成し、DNS プロキシを有効にします。
az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
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
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)
ファイアウォールにネットワーク規則とアプリケーション規則を追加する
ネットワーク ルールを作成します。
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
アプリケーション ルールを作成します。
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 クラスター作成するためのクラスター作成ページを参照できます。
大事な
クラスターを作成する前に、次のクラスター固有の規則を実行してトラフィックを許可してください。
トリノ
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"
Apache Flink
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
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を使用しトラフィックを制限し、その後に従ってトラフィックを許可します。
ヒント
より多くのトラフィックを許可する場合は、ファイアウォール経由で構成できます。
デバッグ方法
クラスターが予期せず動作する場合は、ファイアウォール ログを確認して、ブロックされているトラフィックを見つけることができます。