Utiliser le pare-feu pour restreindre le trafic sortant à l’aide d’Azure CLI
Important
Azure HDInsight sur AKS a été mis hors service le 31 janvier 2025. En savoir plus avec cette annonce.
Vous devez migrer vos charges de travail vers Microsoft Fabric ou un produit Azure équivalent pour éviter l’arrêt brusque de vos charges de travail.
Important
Cette fonctionnalité est actuellement en préversion. Les Conditions d’utilisation supplémentaires pour les préversions Microsoft Azure incluent des termes juridiques supplémentaires qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou qui ne sont pas encore publiées en disponibilité générale. Pour plus d’informations sur cette préversion spécifique, consultez informations sur la préversion de Azure HDInsight sur AKS. Pour des questions ou des suggestions de fonctionnalités, envoyez une demande sur AskHDInsight avec les détails et suivez-nous pour plus de mises à jour sur Communauté Azure HDInsight.
Lorsqu’une entreprise souhaite utiliser son propre réseau virtuel pour les déploiements de cluster, la sécurisation du trafic du réseau virtuel devient importante. Cet article décrit les étapes permettant de sécuriser le trafic sortant à partir de votre cluster HDInsight sur AKS via le Pare-feu Azure à l’aide de Azure CLI.
Le diagramme suivant illustre l’exemple utilisé dans cet article pour simuler un scénario d’entreprise :
L’exemple illustré dans cet article utilise Azure Could Shell.
Définir les variables
Copier et exécuter dans Azure Cloud Shell pour définir les valeurs de ces variables.
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"
Créer un réseau virtuel et des sous-réseaux
Créez un groupe de ressources à l’aide de la commande az group create.
az group create --name $RG --location $LOC
Créez un réseau virtuel et deux sous-réseaux.
Réseau virtuel avec sous-réseau pour HDInsight sur le pool de clusters 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
Sous-réseau pour le Pare-feu Azure.
az network vnet subnet create \ --resource-group $RG \ --vnet-name $VNET_NAME \ --name $FWSUBNET_NAME \ --address-prefix 10.2.0.0/16
Important
- Si vous ajoutez un NSG (groupe de sécurité réseau) dans le sous-réseau
HDIAKS_SUBNET_NAME
, vous devez ajouter manuellement certaines règles de trafic sortant et entrant. Suivez en utilisant le groupe de sécurité réseau pour restreindre le trafic. - Par défaut, la table de routage ne sera pas associée au sous-réseau. Si nécessaire, l’utilisateur doit créer une table de routage et l’associer au pool de clusters.
- Si vous ajoutez un NSG (groupe de sécurité réseau) dans le sous-réseau
Créer HDInsight sur un pool de clusters AKS à l’aide du portail Azure
Créez un pool de clusters.
Créez une table de routage.
Créez une table de routage et associez-la au pool de clusters. Pour plus d’informations, consultez la section « créer une table de routage ».
Obtenir les détails du cluster AKS créés derrière le pool de clusters
Suivez les étapes pour obtenir les informations du cluster AKS, ce qui est utile dans les étapes suivantes.
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)
Créer un pare-feu
Créez une ressource IP publique SKU Standard. Cette ressource est utilisée comme adresse frontale du pare-feu Azure.
az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
Inscrivez l’extension CLI en préversion du Pare-feu Azure pour créer un pare-feu Azure.
az extension add --name azure-firewall
Créez un pare-feu Azure et activez le proxy DNS.
az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
Créez une configuration IP du Pare-feu Azure.
az network firewall ip-config create -g $RG -f $FWNAME -n $FWIPCONFIG_NAME --public-ip-address $FWPUBLICIP_NAME --vnet-name $VNET_NAME
Une fois la commande de configuration IP réussie, enregistrez l’adresse IP frontale du pare-feu pour la configuration ultérieurement.
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)
Ajouter des règles de réseau et d’application au pare-feu
Créez les règles de réseau.
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
Créez les règles d’application.
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"
Créer un itinéraire dans la table de routage pour rediriger le trafic vers le pare-feu
Créez une table de routage à associer à HDInsight sur le pool de clusters AKS. Pour plus d’informations, consultez les commandes pour créer une table de routage .
Créer un cluster
Dans les étapes précédentes, nous avons routé le trafic réseau vers le pare-feu.
Les étapes suivantes fournissent des détails sur les règles de réseau et d’application spécifiques requises par chaque type de cluster. Vous pouvez faire référence aux pages de création de cluster pour créer apache Flink, Trinoet clusters Apache Spark en fonction de vos besoins.
Important
Avant de créer un cluster, veillez à exécuter les règles spécifiques au cluster suivantes pour autoriser le trafic.
Trino
Ajoutez les règles de réseau et d’application suivantes pour un 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"
Modifiez le
Sql.<Region>
dans la syntaxe suivante selon votre région en fonction de vos besoins. Par exemple :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
Ajoutez la règle d’application suivante pour un 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
Ajoutez les règles de réseau et d’application suivantes pour un cluster Spark.
Modifiez le
Storage.<Region>
dans la syntaxe suivante selon votre région. Par exemple :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"
Modifiez le «
Sql.<Region>
» dans la syntaxe suivante selon votre région. Par exemple :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"
Résoudre le problème de routage symétrique
Les étapes suivantes vous permettent de configurer un service d’entrée de l’équilibreur de charge pour chaque cluster et de vous assurer que le trafic de réponse réseau n’atteint pas le pare-feu. Ajoutez un itinéraire à la table de routage pour rediriger le trafic de réponse vers votre adresse IP cliente vers Internet, puis vous pouvez accéder directement au cluster.
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
Si vous ne pouvez pas atteindre le cluster après avoir configuré le groupe de sécurité réseau, suivez pour utiliser le groupe de sécurité réseau afin de restreindre le trafic et pour autoriser le trafic.
Pourboire
Si vous souhaitez autoriser davantage de trafic, vous pouvez le configurer sur le pare-feu.
Guide pratique pour déboguer
Si vous trouvez que le cluster fonctionne de manière inattendue, vous pouvez vérifier les journaux de pare-feu pour trouver le trafic bloqué.