Partager via


Restreindre le trafic de sortie à partir de clusters Big Data SQL Server 2019 dans un cluster privé Azure Kubernetes Service (AKS)

Important

Les clusters Big Data Microsoft SQL Server 2019 sont mis hors service. La prise en charge des clusters Big Data SQL Server 2019 a pris fin le 28 février 2025. Pour plus d’informations, consultez le billet de blog d’annonce et les options Big Data sur la plateforme Microsoft SQL Server.

Vous pouvez restreindre le trafic de sortie à partir de clusters Big Data avec Azure Kubernetes Service (AKS). Le service provisionne un équilibreur de charge SKU standard. Cette opération est configurée et utilisée pour la sortie par défaut. À présent, la configuration par défaut peut ne pas répondre à tous les scénarios et exigences. Par exemple, si les adresses IP publiques ne sont pas autorisées ou si des sauts supplémentaires sont nécessaires pour la sortie. Vous pouvez définir une table de routage définie par l’utilisateur si le cluster interdit les adresses IP publiques et se trouve derrière une appliance virtuelle réseau (NVA).

Les clusters AKS disposent d’un accès Internet sortant (sortant) illimité. C’est à des fins de gestion et d’exploitation. Les nœuds de travail d’un cluster AKS doivent accéder à certains ports et à des Noms de Domaine Entièrement Qualifiés (FQDN). Voici quelques exemples :

  • Lorsque le cluster doit extraire des images de conteneur système de base à partir de Microsoft Container Registry (MCR) pendant les mises à jour de sécurité du système d’exploitation du nœud Worker.
  • Lorsque les nœuds worker AKS équipés de GPU doivent accéder aux points de terminaison de Nvidia pour installer un pilote.
  • Lorsque les clients utilisent AKS conjointement avec les services Azure, tels qu’Azure Policy pour la conformité de niveau entreprise et Azure Monitoring avec Container Insights.
  • Lorsqu’un espace de développement est activé et d’autres scénarios similaires.

Note

Lorsque vous déployez un cluster Big Data (BDC) dans un cluster privé Azure Kubernetes Service (AKS), il n’existe aucune dépendance entrante, sauf celles mentionnées dans cet article. Vous trouverez toutes les dépendances sortantes pour le contrôle du trafic sortant des nœuds de cluster dans Azure Kubernetes Service (AKS).

Cet article explique comment déployer des bdC dans un cluster privé AKS avec une mise en réseau et un UDR avancés. Il explore également une intégration plus poussée de BDC à des environnements de mise en réseau de qualité entreprise.

Comment restreindre le trafic de sortie avec le pare-feu Azure

Le Pare-feu Azure fournit un tag FQDN Azure Kubernetes Service (AzureKubernetesService) pour simplifier la configuration.

Pour obtenir des informations complètes sur la balise FQDN, consultez Restreindre le trafic de sortie à l’aide du pare-feu Azure.

L’image suivante montre comment le trafic est restreint sur un cluster privé AKS.

Capture d’écran montrant le trafic de sortie du pare-feu de cluster privé AKS.

Développez l’architecture de base d’un cluster Big Data avec pare-feu Azure :

  1. Créer le groupe de ressources et le réseau virtuel
  2. Créer et configurer un pare-feu Azure
  3. Créer une table de routage définie par l’utilisateur
  4. Configurer des règles de pare-feu
  5. Créer un principal de service (SP)
  6. Créer un cluster privé AKS
  7. Créer un profil de déploiement BDC
  8. Deploy BDC

Créer le groupe de ressources et le réseau virtuel

  1. Définissez un ensemble de variables d’environnement pour créer des ressources.

    export REGION_NAME=<region>
    export RESOURCE_GROUP=private-bdc-aksudr-rg
    export SUBNET_NAME=aks-subnet
    export VNET_NAME=bdc-vnet
    export AKS_NAME=bdcaksprivatecluster
    
  2. Créer le groupe de ressources

    az group create -n $RESOURCE_GROUP -l $REGION_NAME
    
  3. Créer le réseau virtuel

    az network vnet create \
      --resource-group $RESOURCE_GROUP \
      --location $REGION_NAME \
      --name $VNET_NAME \
      --address-prefixes 10.0.0.0/8 \
      --subnet-name $SUBNET_NAME \
      --subnet-prefix 10.1.0.0/16
    
    SUBNET_ID=$(az network vnet subnet show \
      --resource-group $RESOURCE_GROUP \
      --vnet-name $VNET_NAME \
      --name $SUBNET_NAME \
      --query id -o tsv)
    

Créer et configurer le Pare-feu Azure

  1. Définissez un ensemble de variables d’environnement pour la création de ressources.

    export FWNAME=bdcaksazfw
    export FWPUBIP=$FWNAME-ip
    export FWIPCONFIG_NAME=$FWNAME-config
    
    az extension add --name azure-firewall
    
  2. Créer un sous-réseau dédié pour le pare-feu

    Note

    Vous ne pouvez pas modifier le nom du pare-feu après la création

    az network vnet subnet create \
      --resource-group $RESOURCE_GROUP \
      --vnet-name $VNET_NAME \
      --name AzureFirewallSubnet \
      --address-prefix 10.3.0.0/24
    
     az network firewall create -g $RESOURCE_GROUP -n $FWNAME -l $REGION_NAME --enable-dns-proxy true
    
     az network public-ip create -g $RESOURCE_GROUP -n $FWPUBIP -l $REGION_NAME --sku "Standard"
    
     az network firewall ip-config create -g $RESOURCE_GROUP -f $FWNAME -n $FWIPCONFIG_NAME --public-ip-address $FWPUBIP --vnet-name $VNET_NAME
    

Azure achemine automatiquement le trafic entre les sous-réseaux, les réseaux virtuels et les réseaux locaux Azure.

Comment créer une table de routage définie par l’utilisateur

Vous pouvez créer une table UDR avec un saut vers Azure Firewall.


export SUBID= <your Azure subscription ID>
export FWROUTE_TABLE_NAME=bdcaks-rt
export FWROUTE_NAME=bdcaksroute
export FWROUTE_NAME_INTERNET=bdcaksrouteinet

export FWPUBLIC_IP=$(az network public-ip show -g $RESOURCE_GROUP -n $FWPUBIP --query "ipAddress" -o tsv)
export FWPRIVATE_IP=$(az network firewall show -g $RESOURCE_GROUP -n $FWNAME --query "ipConfigurations[0].privateIpAddress" -o tsv)

# Create UDR and add a route for Azure Firewall

az network route-table create -g $RESOURCE_GROUP --name $FWROUTE_TABLE_NAME

az network route-table route create -g $RESOURCE_GROUP --name $FWROUTE_NAME --route-table-name $FWROUTE_TABLE_NAME --address-prefix 0.0.0.0/0 --next-hop-type VirtualAppliance --next-hop-ip-address $FWPRIVATE_IP --subscription $SUBID

az network route-table route create -g $RESOURCE_GROUP --name $FWROUTE_NAME_INTERNET --route-table-name $FWROUTE_TABLE_NAME --address-prefix $FWPUBLIC_IP/32 --next-hop-type Internet

Comment définir des règles de pare-feu

# Add FW Network Rules

az network firewall network-rule create -g $RESOURCE_GROUP -f $FWNAME --collection-name 'aksfwnr' -n 'apiudp' --protocols 'UDP' --source-addresses '*' --destination-addresses "AzureCloud.$REGION_NAME" --destination-ports 1194 --action allow --priority 100
az network firewall network-rule create -g $RESOURCE_GROUP -f $FWNAME --collection-name 'aksfwnr' -n 'apitcp' --protocols 'TCP' --source-addresses '*' --destination-addresses "AzureCloud.$REGION_NAME" --destination-ports 9000
az network firewall network-rule create -g $RESOURCE_GROUP -f $FWNAME --collection-name 'aksfwnr' -n 'time' --protocols 'UDP' --source-addresses '*' --destination-fqdns 'ntp.ubuntu.com' --destination-ports 123

# Add FW Application Rules

az network firewall application-rule create -g $RESOURCE_GROUP -f $FWNAME --collection-name 'aksfwar' -n 'fqdn' --source-addresses '*' --protocols 'http=80' 'https=443' --fqdn-tags "AzureKubernetesService" --action allow --priority 100

Vous pouvez associer un UDR à un cluster AKS où vous avez précédemment déployé un bdc à l’aide de la commande suivante :

az network vnet subnet update -g $RESOURCE_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME --route-table $FWROUTE_TABLE_NAME

Créer et configurer le principal de service (SP)

Dans cette étape, vous devez créer le principal de service et attribuer l’autorisation au réseau virtuel.

Consultez l’exemple suivant :

# Create SP and Assign Permission to Virtual Network

az ad sp create-for-rbac -n "bdcaks-sp"

APPID=<your service principal ID >
PASSWORD=< your service principal password >
VNETID=$(az network vnet show -g $RESOURCE_GROUP --name $VNET_NAME --query id -o tsv)

# Assign SP Permission to VNET

az role assignment create --assignee $APPID --scope $VNETID --role "Network Contributor"


RTID=$(az network route-table show -g $RESOURCE_GROUP -n $FWROUTE_TABLE_NAME --query id -o tsv)
az role assignment create --assignee $APPID --scope $RTID --role "Network Contributor"

Créer un cluster AKS

Vous pouvez maintenant créer le cluster AKS avec userDefinedRouting comme type sortant.

az aks create \
    --resource-group $RESOURCE_GROUP \
    --location $REGION_NAME \
    --name $AKS_NAME \
    --load-balancer-sku standard \
    --outbound-type userDefinedRouting \
    --enable-private-cluster \
    --network-plugin azure \
    --vnet-subnet-id $SUBNET_ID \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --service-principal $APPID \
    --client-secret $PASSWORD \
    --node-vm-size Standard_D13_v2 \
    --node-count 2 \
    --generate-ssh-keys

Créer un profil de déploiement de cluster Big Data

Vous pouvez créer un cluster Big Data avec un profil personnalisé :

azdata bdc config init --source aks-dev-test --target private-bdc-aks --force

Générer et configurer un profil de déploiement BDC personnalisé

azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.docker.imageTag=2019-CU6-ubuntu-16.04"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.storage.data.className=default"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.storage.logs.className=default"

azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.endpoints[1].serviceType=NodePort"

azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.master.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.gateway.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.appproxy.spec.endpoints[0].serviceType=NodePort"

Déployer un bdc dans un cluster privé AKS

export AZDATA_USERNAME=<your bdcadmin username>
export AZDATA_PASSWORD=< your bdcadmin password>

azdata bdc create --config-profile private-bdc-aks --accept-eula yes

Puis-je utiliser des pare-feu tiers pour restreindre le trafic de sortie ?

Vous pouvez utiliser des pare-feu tiers pour restreindre le trafic de sortie avec un cluster privé BDC et AKS déployé. Pour afficher un exemple, visitez les pare-feu de la Place de marché Azure. Les pare-feu tiers peuvent être utilisés dans des solutions de déploiement privé avec des configurations plus conformes. Le pare-feu doit fournir les règles réseau suivantes :

  • Affichez toutes les règles de réseau sortant requises et les noms de domaine complets pour les clusters AKS. Cette URL inclut également tous les points de terminaison HTTP/HTTPS génériques et les dépendances. Celles-ci peuvent varier avec votre cluster AKS, en fonction d’un certain nombre de qualificateurs et de vos besoins réels.
  • Règles de réseau requises par Azure Global / FQDN/règles d’application mentionnées ici.
  • Règles facultatives et recommandées de nom de domaine complet (FQDN) / d'application pour les clusters AKS mentionnées ici.

Vérifiez comment gérer un cluster Big Data dans un cluster privé AKS , puis l’étape suivante consiste à se connecter à un cluster Big Data.

Consultez les scripts d’automatisation pour ce scénario dans le référentiel d’exemples SQL Server sur GitHub.