Sécuriser l’accès au serveur d’API à l’aide de plages d’adresses IP autorisées dans Azure Kubernetes Service (AKS)

Cet article vous montre comment utiliser le composant plages d’adresses IP autorisées pour le serveur d’API pour limiter les adresses IP et CIDR peuvent accéder au plan de contrôle.

Le serveur d’API Kubernetes est le cœur du plan de contrôle Kubernetes et constitue le moyen central d’interagir avec vos clusters et de les gérer. Pour améliorer la sécurité de vos clusters et réduire le risque d’attaques, nous vous recommandons de limiter les plages d’adresses IP qui peuvent accéder au serveur d’API. Pour ce faire, vous pouvez utiliser la fonctionnalité plages d’adresses IP autorisées du serveur d’API.

Avant de commencer

  • La version 2.0.76 d’Azure CLI (ou ultérieure) doit être installée et configurée. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.
  • Pour découvrir les adresses IP à inclure lors de l’intégration de votre cluster AKS à Azure DevOps, consultez l’article Azure DevOps Adresses IP et URL de domaine autorisés.

Limites

La fonctionnalité des plages d’adresses IP autorisées par le serveur d’API présente les limitations suivantes :

  • La fonctionnalité plages d’adresses IP autorisées du serveur d’API a été déplacée hors préversion en octobre 2019. Pour les clusters créés après le déplacement de la fonctionnalité hors préversion, cette fonctionnalité est uniquement prise en charge sur l’équilibreur de charge de référence SKU Standard. Tous les clusters existants sur l’équilibreur de charge de référence SKU de base avec la fonctionnalité de plages d’adresses IP autorisées du serveur API activée continueront de fonctionner en l’état. Toutefois, ces clusters ne peuvent pas être migrés vers un équilibreur de charge de référence SKU Standard. Les clusters existants continueront de fonctionner si leur version de Kubernetes ou leur plan de contrôle sont mis à niveau.
  • La fonctionnalité plages d’adresses IP autorisées du serveur d’API n’est pas prise en charge sur les clusters privés.
  • Lorsque vous utilisez cette fonctionnalité avec des clusters qui utilisent l’adresse IP publique du nœud, les pools de nœuds qui utilisent l’adresse IP publique du nœud doivent utiliser des préfixes d’adresse IP publique. Les préfixes d’adresses IP publiques doivent être ajoutés en tant que plages autorisées.

Vue d’ensemble des plages d’adresses IP pour le serveur d’API

Le serveur d’API Kubernetes expose les API Kubernetes sous-jacentes et fournit l’interaction pour les outils de gestion tels que kubectl et le tableau de bord Kubernetes. AKS fournit un plan de contrôle de cluster monolocataire doté d’un serveur d’API dédié. Par défaut, le serveur d’API reçoit une adresse IP publique. Vous pouvez contrôler l’accès avec des contrôles d’accès en fonction du rôle Kubernetes (RBAC Kubernetes) ou le RBAC Azure.

Pour sécuriser l’accès au plan de contrôle AKS/serveur d’API, normalement accessible, vous pouvez activer et utiliser des plages d’adresses IP autorisées. Ces plages d’adresses IP autorisées autorisent uniquement les plages d’adresses IP définies à communiquer avec le serveur d’API. Toute requête adressée au serveur API depuis une adresse IP qui ne fait pas partie de ces plages d’adresses IP autorisées est bloquée.

Créer un cluster AKS dont les plages d’adresses IP autorisées du serveur d’API sont activées

Important

Par défaut, votre cluster utilise l’équilibreur de charge de la référence SKU Standard, vous pouvez utiliser celui-ci pour configurer la passerelle sortante. Lorsque vous activez Plages d’adresses IP avec accès au serveur d’API autorisé lors de la création du cluster, l’adresse IP publique de votre cluster est autorisée par défaut en plus des plages que vous indiquez. Si vous spécifiez "" ou aucune valeur pour --api-server-authorized-ip-ranges, Plages d’adresses IP avec accès au serveur d’API autorisé est désactivé. Notez que si vous utilisez PowerShell, utilisez --api-server-authorized-ip-ranges="" (avec le signe égal) pour éviter tout problème d’analyse.

Remarque

Vous devez ajouter ces plages à une liste verte :

  • Adresse IP de sortie du cluster (pare-feu, passerelle NAT ou autre adresse, selon votre type de trafic sortant).
  • Toute plage qui représente les réseaux à partir desquels vous allez administrer le cluster.

La limite supérieure du nombre de plages d’adresses IP que vous pouvez spécifier est 200.

La propagation des règles peut prendre jusqu’à deux minutes. Veuillez patienter pendant le test de la connexion.

Lors de la création d’un cluster avec Plages d’adresses IP avec accès au serveur d’API autorisé activé, vous utilisez le paramètre --api-server-authorized-ip-ranges pour fournir la liste des plages d’adresses IP publiques autorisées. Lorsque vous spécifiez une plage CIDR, commencez par la première adresse IP dans la plage. Par exemple, 137.117.106.90/29 est une plage valide, mais assurez-vous que vous spécifiez la première adresse IP dans la plage, par exemple 137.117.106.88/29.

  • Créez un cluster AKS avec Plages d’adresses IP avec accès au serveur d’API autorisé activé à l’aide de la commande az aks create avec le paramètre --api-server-authorized-ip-ranges. L’exemple suivant crée un cluster nommé myAKSCluster dans le groupe de ressources myResourceGroup, avec Plages d’adresses IP avec accès au serveur d’API autorisé activé. Les plages d’adresses IP autorisées sont 73.140.245.0/24 :

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --generate-ssh-keys
    

Spécifier les adresses IP sortantes d’un équilibreur de charge de la référence SKU Standard

Lors de la création d’un cluster avec Plages d’adresses IP avec accès au serveur d’API autorisé activé, vous pouvez également spécifier les adresses IP sortantes ou les préfixes du cluster à l’aide des paramètres --load-balancer-outbound-ips ou --load-balancer-outbound-ip-prefixes. Toutes les adresses IP fournies dans le paramètre sont autorisées avec les adresses IP dans le paramètre --api-server-authorized-ip-ranges.

  • Créez un cluster AKS avec Plages d’adresses IP avec accès au serveur d’API autorisé activé et spécifiez les adresses IP sortantes pour l’équilibreur de charge de référence SKU Standard à l’aide du paramètre --load-balancer-outbound-ips. L’exemple suivant crée un cluster nommé myAKSCluster dans le groupe de ressources myResourceGroup, avec Plages d’adresses IP avec accès au serveur d’API autorisé activé et les adresses IP sortantes <public-ip-id-1> et <public-ip-id-2> :

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --load-balancer-outbound-ips <public-ip-id-1>,<public-ip-id-2> --generate-ssh-keys
    

Autoriser uniquement l’adresse IP publique sortante de l’équilibreur de charge de la référence SKU Standard

Lorsque vous activez les plages d’adresses IP autorisées du serveur d’API à la création du cluster, l’adresse IP publique sortante pour l’équilibreur de charge de la référence SKU Standard de votre cluster est également autorisée par défaut, en plus des plages que vous indiquez. Pour autoriser uniquement l’adresse IP publique sortante de l’équilibreur de charge de la référence SKU Standard, vous utilisez 0.0.0.0/32 lorsque vous spécifiez le paramètre --api-server-authorized-ip-ranges.

  • Créez un cluster AKS avec Plages d’adresses IP avec accès au serveur d’API autorisé activé et n’autorisez que l’adresse IP publique de l’équilibreur de charge de référence SKU Standard à l’aide du paramètre --api-server-authorized-ip-ranges. L’exemple suivant crée un cluster nommé myAKSCluster dans le groupe de ressources myResourceGroup, avec Plages d’adresses IP avec accès au serveur d’API autorisé activé et n’autorise que l’adresse IP publique sortante de l’équilibreur de charge de référence SKU Standard :

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 0.0.0.0/32 --generate-ssh-keys
    

Mettre à jour les plages d’adresses IP autorisées du serveur d’API d’un cluster existant

  • Mettez à jour les plages d’adresses IP autorisées du serveur d’API d’un cluster existant à l’aide de la commande az aks update avec le paramètre --api-server-authorized-ip-ranges. L’exemple suivant met à jour les plages d’adresses IP autorisées du serveur d’API sur le cluster nommé myAKSCluster dans le groupe de ressources myResourceGroup. La plage d’adresses IP à autoriser est 73.140.245.0/24 :

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges 73.140.245.0/24
    

    Vous pouvez également utiliser 0.0.0.0/32 quand vous spécifiez le paramètre --api-server-authorized-ip-ranges pour autoriser uniquement l’adresse IP publique de l’équilibreur de charge de la référence SKU Standard.

Désactiver les plages d’adresses IP autorisées

  • Désactivez les plages d’adresses IP autorisées à l’aide de la commande az aks update et spécifiez une plage vide "" pour le paramètre --api-server-authorized-ip-ranges.

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges ""
    

Rechercher les plages d’adresses IP autorisées existantes

  • Recherchez des plages d’adresses IP autorisées existantes à l’aide de la commande az aks show avec le paramètre --query défini sur apiServerAccessProfile.authorizedIpRanges.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query apiServerAccessProfile.authorizedIpRanges
    

Comment trouver mon adresse IP à inclure dans --api-server-authorized-ip-ranges ?

Vous devez ajouter vos ordinateurs de développement, vos outils ou vos adresses IP Automation à la liste de clusters AKS des plages d’adresses IP approuvées pour accéder au serveur d’API à partir de ces emplacements.

Une autre option est de configurer une jumpbox avec les outils nécessaires à l’intérieur d’un sous-réseau distinct dans le réseau virtuel du pare-feu. Cela suppose que votre environnement dispose d’un pare-feu avec le réseau correspondant et que vous avez ajouté les adresses IP du pare-feu aux plages autorisées. De même, si vous avez forcé le tunneling du sous-réseau AKS vers le sous-réseau du pare-feu, avoir une jumpbox dans le sous-réseau du cluster est également une bonne chose.

  1. Récupérez votre adresse IP à l’aide de la commande suivante :

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. Ajoutez votre adresse IP à la liste approuvée à l’aide d’Azure CLI ou d’Azure PowerShell :

    # Add to AKS approved list using Azure CLI
    az aks update --resource-group $RG --name $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/24,73.140.245.0/24
    
    # Add to AKS approved list using Azure PowerShell
    Set-AzAksCluster -ResourceGroupName $RG -Name $AKSNAME -ApiServerAccessAuthorizedIpRange '$CURRENT_IP/24,73.140.245.0/24'
    

Remarque

L’exemple ci-dessus ajoute une autre adresse IP aux plages approuvées. Notez qu’il inclut toujours l’adresse IP de Mettre à jour les plages d’adresses IP autorisées du serveur de d’API d’un cluster. Si vous n’incluez pas votre adresse IP existante, cette commande la remplacera par la nouvelle au lieu de l’ajouter aux plages autorisées. Pour désactiver les plages d’adresses IP autorisées, utilisez az aks update et spécifiez une plage vide "".

Une autre option consiste à utiliser la commande ci-dessous sur les systèmes Windows pour obtenir l’adresse IPv4 publique, ou vous pouvez suivre les étapes décrites dans Rechercher votre adresse IP.

Invoke-RestMethod http://ipinfo.io/json | Select -exp ip

Vous pouvez également trouver cette adresse en recherchant quelle est mon adresse IP dans un navigateur Internet.

Étapes suivantes

Dans cet article, vous avez activé des plages d’adresses IP autorisées pour le serveur d’API. Cette approche est une partie de la façon dont vous pouvez exécuter un cluster AKS de manière sécurisée. Pour plus d’informations, consultez Concepts de sécurité pour les applications et les clusters dans AKS et Meilleures pratiques relatives aux mises à jour et à la sécurité du cluster dans Azure Kubernetes Service.