Cet article compare les modes d’utilisation d’un réseau AKS (Azure Kubernetes Service) et Amazon EKS (Amazon Elastic Kubernetes Service). L’article explique comment améliorer la sécurité des connexions au serveur d’API managé d’un cluster AKS ainsi que les différentes options permettant de restreindre l’accès au réseau public.
Remarque
Cet article fait partie d'une série d'articles qui aide les professionnels qui connaissent Amazon EKS à comprendre Azure Kubernetes Service (AKS).
Modes d’utilisation d’un réseau Amazon EKS
Avec Amazon VPC (Amazon Virtual Private Cloud), vous pouvez lancer des ressources AWS (Amazon Web Services) sur un réseau virtuel composé de sous-réseaux publics et privés, ou de plages d’adresses IP dans le réseau VPC. Un sous-réseau public héberge des ressources qui doivent être connectées à Internet, et un sous-réseau privé héberge des ressources qui ne sont pas connectées à l’Internet public. Amazon EKS peut provisionner des groupes de nœuds managés dans des sous-réseaux publics et privés.
Le contrôle d’accès des points de terminaison vous permet de déterminer si le point de terminaison d’un serveur d’API est accessible à partir du réseau Internet public ou via le réseau VPC. EKS offre plusieurs façons de contrôler l’accès au point de terminaison de cluster. Vous pouvez activer le point de terminaison public par défaut, un point de terminaison privé ou les deux points de terminaison simultanément. Quand vous activez le point de terminaison public, vous pouvez ajouter des restrictions CIDR (Classless Inter-Domain Routing) pour limiter le nombre d’adresses IP de clients pouvant se connecter au point de terminaison public.
La façon dont les nœuds Amazon EKS se connectent au plan de contrôle Kubernetes managé est déterminée par le paramètre de point de terminaison configuré pour le cluster. Vous pouvez changer les paramètres de point de terminaison à tout moment via la console Amazon EKS ou l’API. Pour plus d’informations, consultez Contrôle d’accès des points de terminaison de cluster Amazon EKS.
Point de terminaison public uniquement
L’exposition du plan de contrôle via un point de terminaison public est le mode par défaut pour les nouveaux clusters Amazon EKS. Quand seul le point de terminaison public du cluster est activé, les requêtes d’API Kubernetes provenant d’Amazon VPC (par exemple la communication entre le nœud Worker et le plan de contrôle) quittent le réseau VPC mais pas le réseau d’Amazon. Pour que les nœuds se connectent au plan de contrôle, ils doivent utiliser une adresse IP publique et une route vers une passerelle Internet, ou une route vers une passerelle NAT (traduction d’adresses réseau) où ils peuvent utiliser l’adresse IP publique de la passerelle NAT.
Points de terminaison publics et privés
Quand les points de terminaison publics et privés sont activés, les requêtes d’API Kubernetes provenant du réseau VPC communiquent avec le plan de contrôle via les interfaces ENI (interfaces réseau élastiques) managées par Amazon EKS dans le VPC. Le serveur d’API du cluster est accessible depuis Internet.
Point de terminaison privé uniquement
Quand seul le point de terminaison privé est activé, tout le trafic à destination du serveur d’API de cluster, par exemple les commandes kubectl
ou helm
, doit provenir du réseau VPC du cluster ou d’un réseau connecté. L’accès public au serveur d’API à partir d’Internet est désactivé. Vous pouvez implémenter ce mode d’accès en utilisant AWS VPN (AWS Virtual Private Network) ou AWS DirectConnect pour la connexion au réseau VPC. Pour restreindre l’accès au point de terminaison sans AWS VPN ou DirectConnect, vous pouvez ajouter des restrictions CIDR au point de terminaison public afin de limiter les connexions sans effectuer de configurations réseau supplémentaires.
Pour plus d’informations sur les options de connectivité, consultez Accès à un serveur d’API privé uniquement.
Accès réseau AKS au serveur d’API
Il existe deux options pour sécuriser l’accès réseau à l’API Kubernetes dans AKS : un cluster AKS privé ou des plages d’adresses IP autorisées.
Cluster AKS privé
Un cluster privé AKS permet de garantir que le trafic réseau entre le serveur d’API et les pools de nœuds reste dans le réseau virtuel. Dans un cluster AKS privé, le plan de contrôle ou le serveur d’API a une adresse IP interne accessible uniquement via un point de terminaison privé Azure situé dans le même réseau virtuel. Toute machine virtuelle du même réseau virtuel peut communiquer de manière privée avec le plan de contrôle via le point de terminaison privé. Le plan de contrôle ou le serveur d’API est hébergé dans l’abonnement managé par Azure, tandis que le cluster AKS et ses pools de nœuds se trouvent dans l’abonnement du client.
Le diagramme suivant illustre une configuration de cluster privé.
Téléchargez un fichier Visio de cette architecture.
Pour provisionner un cluster AKS privé, le fournisseur de ressources AKS crée un FQDN (nom de domaine complet) privé pour le groupe de ressources de nœud dans une zone DNS privée. Si vous le souhaitez, AKS peut également créer un FQDN public avec un enregistrement d’adresse (A
) correspondant dans la zone DNS publique Azure. Les nœuds d’agent utilisent l’enregistrement A
dans la zone DNS privée pour résoudre l’adresse IP du point de terminaison privé et permettre la communication avec le serveur d’API.
Le fournisseur de ressources AKS peut créer la zone DNS privée dans le groupe de ressources de nœud. Vous pouvez également créer la zone DNS privée et faire passer son ID de ressource au système de provisionnement. Vous pouvez créer un cluster privé quand vous utilisez Terraform avec Azure, Bicep, les modèles ARM, Azure CLI, le module Azure PowerShell ou l’API REST Azure pour créer le cluster.
Vous pouvez activer un FQDN public pour le serveur d’API durant le provisionnement ou à l’aide de la commande az aks update avec le paramètre --enable-public-fqdn
sur les clusters existants. Si vous activez le FQDN public, toute machine virtuelle qui accède au serveur, par exemple un agent autohébergé Azure DevOps ou un exécuter autohébergé GitHub Actions, doit se trouver dans le réseau virtuel qui héberge le cluster, ou dans un réseau connecté via un peering de réseaux virtuels ou un VPN site à site.
Pour un cluster AKS privé, vous devez désactiver le FQDN public du serveur d’API. Pour communiquer avec le plan de contrôle privé, une machine virtuelle doit se trouver dans le même réseau virtuel ou dans un réseau virtuel appairé avec une liaison de réseau virtuel vers la zone DNS privée. L’enregistrement A
dans la zone DNS privée résout le FQDN du serveur d’API en adresse IP de point de terminaison privé qui communique avec le plan de contrôle sous-jacent. Pour plus d’informations, consultez Créer un cluster Azure Kubernetes Service privé.
Options de déploiement de cluster privé
Le fournisseur de ressources AKS expose les paramètres suivants pour personnaliser le déploiement de clusters AKS privés :
authorizedIpRanges
(chaîne) spécifie les plages d’adresses IP autorisées au format CIDR.disableRunCommand
(Booléen) spécifie s’il est nécessaire de désactiver ou non la commanderun
pour le cluster.enablePrivateCluster
(Booléen) spécifie s’il est nécessaire de créer ou non le cluster en tant que cluster privé.enablePrivateClusterPublicFQDN
(Booléen) spécifie s’il est nécessaire de créer ou non un autre FQDN public pour le cluster privé.privateDnsZone
(chaîne) spécifie une zone DNS privée dans le groupe de ressources de nœud. Si vous ne spécifiez aucune valeur, le fournisseur de ressources crée la zone. Vous pouvez spécifier les valeurs suivantes :System
est la valeur par défaut.None
représente par défaut le DNS public. Ainsi, AKS ne crée pas de zone DNS privée.<Your own private DNS zone resource ID>
utilise une zone DNS privée que vous créez au formatprivatelink.<region>.azmk8s.io
ou<subzone>.privatelink.<region>.azmk8s.io.
Le tableau suivant montre les options de configuration DNS pour le déploiement d’un cluster AKS privé :
Options de zone DNS privée | enablePrivateClusterPublicFQDN: true |
enablePrivateClusterPublicFQDN: false |
---|---|---|
Système | Les nœuds d’agent ainsi que toutes les autres machines virtuelles du réseau virtuel de cluster AKS ou de tout réseau virtuel connecté à la zone DNS privée, utilisent l’enregistrement A de la zone DNS privée pour résoudre l’adresse IP privée du point de terminaison privé.Toute autre machine virtuelle utilise le FQDN public du serveur d’API. |
Les nœuds d’agent ainsi que toutes les autres machines virtuelles du réseau virtuel de cluster AKS ou de tout réseau virtuel connecté à la zone DNS privée, utilisent l’enregistrement A de la zone DNS privée pour résoudre l’adresse IP privée du point de terminaison privé.Aucun FQDN de serveur d’API public n’est disponible. |
Aucun | Toutes les machines virtuelles ainsi que les nœuds d’agent utilisent le FQDN public du serveur d’API disponible via un enregistrement A dans une zone DNS publique managée par Azure. |
Configuration incorrecte. Le cluster AKS privé a besoin d’au moins une zone DNS publique ou privée pour la résolution de noms du serveur d’API. |
Votre propre ID de ressource de zone DNS privée | Les nœuds d’agent ainsi que toutes les autres machines virtuelles du réseau virtuel de cluster AKS ou de tout réseau virtuel connecté à la zone DNS privée, utilisent l’enregistrement A de la zone DNS privée pour résoudre l’adresse IP privée du point de terminaison privé.Toutes les autres machines virtuelles utilisent le FQDN public du serveur d’API. |
Les nœuds d’agent ainsi que toutes les autres machines virtuelles du réseau virtuel de cluster AKS ou de tout réseau virtuel connecté à la zone DNS privée, utilisent l’enregistrement A de la zone DNS privée pour résoudre l’adresse IP privée du point de terminaison privé.Aucun FQDN de serveur d’API public n’est disponible. |
Connectivité et gestion des clusters privés
Il existe plusieurs options pour établir une connectivité réseau avec le cluster privé.
Créez des machines virtuelles dans le même réseau virtuel que le cluster AKS.
Utilisez des machines virtuelles dans un réseau virtuel distinct, et configurez un peering de réseaux virtuels avec le réseau virtuel du cluster AKS.
Utilisez une connexion Azure ExpressRoute ou VPN.
Utilisez la commande Azure CLI az aks command invoke pour exécuter les commandes
kubectl
ethelm
sur le cluster privé sans vous connecter directement au cluster.Utilisez une connexion de point de terminaison privé Azure.
Vous pouvez gérer un cluster AKS privé à l’aide de l’outil en ligne de commande kubectl via une machine virtuelle de gestion située dans le même réseau virtuel ou un réseau virtuel appairé.
Vous pouvez utiliser Azure Bastion dans le même réseau virtuel ou dans un réseau virtuel appairé pour vous connecter à une machine virtuelle de gestion Jumpbox. Azure Bastion est une solution PaaS (platform as a service) complètement managée qui vous permet de vous connecter à une machine virtuelle à l’aide de votre navigateur et du portail Azure. Azure Bastion fournit une connectivité sécurisée et transparente aux machines virtuelles en utilisant le protocole RDP (Remote Desktop Protocol) ou SSH (Secure Shell) via le protocole TLS (Transport Layer Security) directement à partir du portail Azure. Quand les machines virtuelles se connectent via Azure Bastion, elles n’ont pas besoin d’une adresse IP publique, d’un agent ou d’un logiciel client particulier.
Vous pouvez également utiliser az aks command invoke pour exécuter les commandes kubectl
ou helm
sur votre cluster AKS privé sans avoir à vous connecter à une machine virtuelle Jumpbox.
Plages d’adresses IP autorisées
La deuxième option pour améliorer la sécurité du cluster et réduire les attaques contre le serveur d’API consiste à utiliser des plages d’adresses IP autorisées. Les adresses IP autorisées restreignent l’accès au plan de contrôle d’un cluster AKS public à une liste connue d’adresses IP et de CIDR. Quand vous utilisez cette option, le serveur d’API est toujours exposé publiquement, mais son accès est limité. Pour plus d’informations, consultez Sécuriser l’accès au serveur d’API à l’aide de plages d’adresses IP autorisées dans Azure Kubernetes Service (AKS).
La commande Azure CLI az aks update
suivante autorise les plages d’adresses IP :
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--api-server-authorized-ip-ranges 73.140.245.0/24
Considérations relatives à la connectivité AKS
Un cluster privé AKS offre une sécurité et une isolation plus élevées que les adresses IP autorisées. Toutefois, vous ne pouvez pas convertir un cluster AKS public existant en cluster privé. Vous pouvez activer les adresses IP autorisées pour n’importe quel cluster AKS existant.
Vous ne pouvez pas appliquer de plages d’adresses IP autorisées à un point de terminaison de serveur d’API privé. Les adresses IP autorisées s’appliquent uniquement au serveur d’API public.
Les clusters privés ne prennent pas en charge les agents hébergés par Azure DevOps. Utilisez plutôt des agents autohébergés.
Pour permettre à Azure Container Registry de fonctionner avec un cluster AKS privé, configurez une liaison privée pour le registre de conteneurs dans le réseau virtuel du cluster. Vous pouvez également configurer le peering entre le réseau virtuel Container Registry et le réseau virtuel du cluster privé.
Les limitations du service Azure Private Link s’appliquent aux clusters privés.
Si vous supprimez ou modifiez le point de terminaison privé dans le sous-réseau d’un client d’un cluster privé, le cluster cesse de fonctionner.
Contributeurs
Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.
Auteurs principaux :
- Paolo Salvatori | Ingénieur des services principaux
- Martin Gjoshevski | Ingénieur service senior
- Laura Nicolas | Ingénieur logiciel senior
Autres contributeurs :
- Chad Kittel | Ingénieur logiciel principal
- Ed Price | Responsable de programme senior
- Theano Petersen | Rédacteur technique
Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.
Étapes suivantes
- AKS pour les professionnels Amazon EKS
- Gestion de l’identité et de l’accès Kubernetes
- Monitoring et journalisation Kubernetes
- Options de stockage pour un cluster Kubernetes
- Gestion des coûts pour Kubernetes
- Gestion des nœuds et des pools de nœuds Kubernetes
- Gouvernance des clusters
Ressources associées
Les références suivantes fournissent des liens vers de la documentation et des exemples d’automatisation pour déployer des clusters AKS avec une API sécurisée :
- Créer un cluster AKS privé avec une zone DNS publique
- Créer un cluster Azure Kubernetes Service privé à l’aide de Terraform et d’Azure DevOps
- Créer un cluster Azure Kubernetes Service public ou privé avec Azure NAT Gateway et Azure Application Gateway
- Utiliser des points de terminaison privés avec un cluster AKS privé
- Présentation d’Azure Private Link
- Présentation de la sécurisation de l’infrastructure réseau avec Azure Network Security