Sécuriser l’accès au serveur d’API à l’aide de plages d’adresses IP autorisées dans Azure Kubernetes Service (AKS)
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.
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.
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 détermine la façon dont les API Kubernetes sous-jacentes sont exposées. Ce composant fournit l’interaction des outils de gestion, tels que kubectl
ou 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 IP publique et vous devez contrôler l’accès à l’aide du contrôle d’accès en fonction du rôle Kubernetes (Kubernetes RBAC) ou d’Azure RBAC.
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. Une 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. Continuez à utiliser Kubernetes RBAC ou Azure RBAC pour autoriser des utilisateurs et les actions qu’ils demandent.
Pour plus d’informations sur le serveur d’API et les autres composants de cluster, consultez Concepts de base de Kubernetes pour AKS.
Créer un cluster AKS dont les plages d’adresses IP autorisées du serveur d’API sont activées
Créez un cluster en utilisant la commande az aks create
et spécifiez le paramètre --api-server-authorized-ip-ranges
pour fournir une liste de 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.
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 des plages d’adresses IP autorisées pour le serveur d’API lors de la création du cluster, l’adresse IP publique de votre cluster est également autorisée par défaut en plus des plages que vous indiquez. Si vous spécifiez "" ou si vous n’indiquez aucune valeur pour --api-server-authorized-ip-ranges
, les plages d’adresses IP autorisées du serveur d’API sont autorisées. Notez que si vous utilisez PowerShell, utilisez --api-server-authorized-ip-ranges=""
(avec le signe égal) pour éviter tout problème d’analyse.
L’exemple suivant crée un cluster à nœud unique nommé myAKSCluster dans le groupe de ressources myResourceGroup, avec les plages d’adresses IP autorisées du serveur d’API activées. Les plages d’adresses IP autorisées sont 73.140.245.0/24 :
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 1 \
--vm-set-type VirtualMachineScaleSets \
--load-balancer-sku standard \
--api-server-authorized-ip-ranges 73.140.245.0/24 \
--generate-ssh-keys
Notes
Vous devez ajouter ces plages à une liste verte :
- Adresse IP publique du pare-feu
- 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.
Spécifier les adresses IP sortantes pour l’équilibreur de charge de la référence SKU Standard
Lors de la création d’un cluster AKS, si vous indiquez des préfixes ou des adresses IP sortantes pour le cluster, ceux-ci sont également autorisés. Par exemple :
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 1 \
--vm-set-type VirtualMachineScaleSets \
--load-balancer-sku standard \
--api-server-authorized-ip-ranges 73.140.245.0/24 \
--load-balancer-outbound-ips <publicIpId1>,<publicIpId2> \
--generate-ssh-keys
Dans l’exemple ci-dessus, toutes les adresses IP fournies dans le paramètre --load-balancer-outbound-ip-prefixes
sont autorisées avec les adresses IP dans le paramètre --api-server-authorized-ip-ranges
.
Au lieu de cela, vous pouvez spécifier le paramètre --load-balancer-outbound-ip-prefixes
pour autoriser les préfixes des adresses IP sortantes de l’équilibreur de charge.
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, utilisez 0.0.0.0/32 au moment où vous spécifiez le paramètre --api-server-authorized-ip-ranges
.
Dans l’exemple suivant, seule l’adresse IP publique sortante de l’équilibreur de charge de la référence SKU Standard est autorisée, et vous ne pouvez accéder au serveur d’API qu’à partir des nœuds du cluster.
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 1 \
--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 sur un cluster
Pour mettre à jour les plages d’adresses IP autorisées du serveur d’API sur un cluster existant, utilisez la commande az aks update
et utilisez les --api-server-authorized-ip-ranges
, --load-balancer-outbound-ip-prefixes
, --load-balancer-outbound-ips
ou --load-balancer-outbound-ip-prefixes
.
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
Pour désactiver les plages d’adresses IP autorisées, utilisez az aks update
et spécifiez une plage vide pour désactiver les plages d’adresses IP autorisées du serveur d’API. Par exemple :
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--api-server-authorized-ip-ranges ""
Important
Lors de l’exécution de cette commande à l’aide de PowerShell dans Azure Cloud Shell ou à partir de votre ordinateur local, la valeur de chaîne entre guillemets pour l’argument --api-server-authorized-ip-rangers doit être mise entre apostrophes. Sinon, un message d’erreur est retourné, indiquant qu’un argument attendu est manquant.
Rechercher les plages d’adresses IP autorisées existantes
Pour rechercher les plages d’adresses IP qui ont été autorisées, utilisez az aks show
en indiquant le nom et le groupe de ressources du cluster. Par exemple :
az aks show \
--resource-group myResourceGroup \
--name myAKSCluster \
--query apiServerAccessProfile.authorizedIpRanges
Mettre à jour, désactiver et rechercher les plages d’adresses IP autorisées à l’aide du portail Azure
Les opérations ci-dessus relatives à l’ajout, à la mise à jour, à la recherche et à la désactivation des plages d’adresses IP autorisées peuvent également être effectuées dans le portail Azure. Pour cela, accédez à Mise en réseau sous Paramètres dans le panneau de menu de votre ressource de cluster.
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.
Pour ajouter une autre adresse IP aux plages approuvées, utilisez les commandes suivantes.
# Retrieve your IP address
CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
# Add to AKS approved list
az aks update -g $RG -n $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/24,73.140.245.0/24
Notes
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.