Modifier

Share via


Sécuriser l’accès réseau à Kubernetes

Azure Bastion
Azure DNS
Azure Kubernetes Service (AKS)
Azure Private Link
Réseau virtuel Azure

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.

Notes

Cet article fait partie d’une série d’articles destinée à aider les professionnels qui connaissent Amazon EKS à comprendre le fonctionnement d’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é.

Diagramme montrant un cluster AKS 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 commande run 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 format privatelink.<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é.

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 :

Autres contributeurs :

Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.

Étapes suivantes

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 :