Utiliser un pare-feu pour restreindre le trafic sortant à l'aide d’Azure CLI
Remarque
Nous allons mettre hors service Azure HDInsight sur AKS le 31 janvier 2025. Avant le 31 janvier 2025, vous devrez migrer vos charges de travail vers Microsoft Fabric ou un produit Azure équivalent afin d’éviter leur arrêt brutal. Les clusters restants de votre abonnement seront arrêtés et supprimés de l’hôte.
Seul le support de base est disponible jusqu’à la date de mise hors service.
Important
Cette fonctionnalité est disponible actuellement en mode Aperçu. Les Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure contiennent davantage de conditions légales qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou ne se trouvant pas encore en disponibilité générale. Pour plus d’informations sur cette préversion spécifique, consultez les Informations sur la préversion d’Azure HDInsight sur AKS. Pour toute question ou pour des suggestions à propos des fonctionnalités, veuillez envoyer vos requêtes et leurs détails sur AskHDInsight, et suivez-nous sur la Communauté Azure HDInsight pour plus de mises à jour.
Lorsqu'une entreprise souhaite utiliser son propre réseau virtuel pour les déploiements de clusters, la sécurisation du trafic du réseau virtuel devient importante. Cet article fournit les étapes pour sécuriser le trafic sortant de votre cluster HDInsight sur AKS via le Pare-feu Azure à l'aide d’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 Cloud Shell.
Définir les variables
Copiez et exécutez 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 avec la commande az group create.
az group create --name $RG --location $LOC
Créer 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 NSG dans le sous-réseau
HDIAKS_SUBNET_NAME
, vous devez ajouter manuellement certaines règles sortantes et entrantes. Suivez l'utilisation de NSG 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 NSG dans le sous-réseau
Créer HDInsight sur le pool de clusters AKS à l'aide du Portail Microsoft Azure
Créez un pool de clusters.
Crée une table de routage.
Créez une table de routage et associez-la au pool de clusters. Pour plus d’informations, consultez créer une table de routage.
Obtenez les détails du cluster AKS créé 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 de référence SKU standard. Cette ressource est utilisée comme adresse de front-end 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 de 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 que la configuration IP précédente a réussi, enregistrez l’adresse IP du front-end du pare-feu pour la configurer 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 réseau et applicatives 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 des 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 une route 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 créer des commandes de 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 vous référer aux pages de création de cluster pour créer des clusters Apache Flink, Trino et Apache Spark en fonction de vos besoins.
Important
Avant de créer un cluster, assurez-vous d'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
Sql.<Region>
dans la syntaxe suivante en fonction de votre région selon 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
Storage.<Region>
dans la syntaxe suivante en fonction de votre région selon vos besoins. 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
Sql.<Region>
dans la syntaxe suivante en fonction de votre région selon 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' 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 demander le service d'entrée de l'équilibreur de charge cluster par cluster et de garantir que le trafic de réponse réseau ne circule pas vers le pare-feu. Ajoutez une route à la table de routage pour rediriger le trafic de réponse vers l'adresse IP de votre client vers Internet, puis vous pourrez 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 utilisez le groupe de sécurité réseau (NSG) pour restreindre le trafic pour autoriser le trafic.
Conseil
Si vous souhaitez autoriser plus de trafic, vous pouvez le configurer via le pare-feu.
Comment déboguer
Si vous constatez que le cluster fonctionne de manière inattendue, vous pouvez consulter les journaux du pare-feu pour déterminer quel trafic est bloqué.