Contrôlez l'accès réseau au point de terminaison API du serveur du cluster - Amazon EKS

Aidez à améliorer cette page

Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tout le monde.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Contrôlez l'accès réseau au point de terminaison API du serveur du cluster

Cette rubrique vous aide à activer l'accès privé pour le point de terminaison du Kubernetes API serveur de votre EKS cluster Amazon et à limiter, voire à désactiver complètement, l'accès public depuis Internet.

Lorsque vous créez un nouveau cluster, Amazon EKS crée un point de terminaison pour le Kubernetes API serveur géré que vous utilisez pour communiquer avec votre cluster (à l'aide d'outils de Kubernetes gestion tels quekubectl). Par défaut, ce point de terminaison API du serveur est public sur Internet, et l'accès au API serveur est sécurisé à l'aide d'une combinaison de AWS Identity and Access Management (IAM) et d'un contrôle d'accès basé sur les Kubernetes rôles () natif (RBAC).

Vous pouvez activer l'accès privé au Kubernetes API serveur afin que toutes les communications entre vos nœuds et le API serveur restent dans le vôtreVPC. Vous pouvez limiter les adresses IP qui peuvent accéder à votre API serveur depuis Internet ou désactiver complètement l'accès Internet au API serveur.

Note

Comme ce point de terminaison est destiné au Kubernetes API serveur et non à un point de AWS PrivateLink terminaison traditionnel pour communiquer avec un AWS API, il n'apparaît pas en tant que point de terminaison dans la VPC console Amazon.

Lorsque vous activez l'accès privé aux terminaux pour votre cluster, Amazon EKS crée une zone hébergée privée Route 53 en votre nom et l'associe à celle de votre clusterVPC. Cette zone hébergée privée est gérée par Amazon EKS et n'apparaît pas dans les ressources Route 53 de votre compte. Pour que la zone hébergée privée achemine correctement le trafic vers votre API serveur, vous VPC devez l'avoir enableDnsHostnames enableDnsSupport configuré surtrue, et les DHCP options définies pour vous VPC doivent figurer AmazonProvidedDNS dans sa liste de serveurs de noms de domaine. Pour plus d'informations, consultez la section Mettre à jour le DNS support pour vous VPC dans le guide de VPC l'utilisateur Amazon.

Vous pouvez définir les exigences d'accès aux points de terminaison de votre API serveur lorsque vous créez un nouveau cluster, et vous pouvez mettre à jour l'accès aux points de terminaison API du serveur pour un cluster à tout moment.

Modification de l'accès au point de terminaison de cluster

Utilisez les procédures de cette section afin de modifier l'accès au point de terminaison pour un cluster existant. Le tableau suivant indique les combinaisons d'accès aux terminaux de API serveur prises en charge et leur comportement associé.

Accès public au point de terminaison Accès privé au point de terminaison Attitude
Activé Désactivées
  • Il s'agit du comportement par défaut pour les nouveaux EKS clusters Amazon.

  • KubernetesAPIles demandes provenant de votre cluster VPC (telles que la communication entre le nœud et le plan de contrôle) quittent le réseau VPC mais pas celui d'Amazon.

  • Votre API serveur de cluster est accessible depuis Internet. Vous pouvez éventuellement limiter les CIDR blocs autorisés à accéder au point de terminaison public. Si vous limitez l'accès à des CIDR blocs spécifiques, il est recommandé d'activer également le point de terminaison privé ou de vous assurer que les CIDR blocs que vous spécifiez incluent les adresses à partir desquelles les nœuds et Pods Fargate (si vous les utilisez) accèdent au point de terminaison public.

Activées Activées
  • KubernetesAPIles demandes au sein de votre cluster VPC (telles que la communication entre le nœud et le plan de contrôle) utilisent le point de VPC terminaison privé.

  • Votre API serveur de cluster est accessible depuis Internet. Vous pouvez éventuellement limiter les CIDR blocs autorisés à accéder au point de terminaison public.

Désactivées Activées
  • Tout le trafic vers votre API serveur de cluster doit provenir du réseau de votre cluster VPC ou d'un réseau connecté.

  • Il n'y a aucun accès public à votre API serveur depuis Internet. Toutes kubectl les commandes doivent provenir du réseau VPC ou d'un réseau connecté. Pour les options de connectivité, consultez Accès à un API serveur privé uniquement.

  • Le point de terminaison API du serveur du cluster est résolu par DNS les serveurs publics en une adresse IP privée provenant duVPC. Dans le passé, le point final ne pouvait être résolu que depuis leVPC.

    Si votre point de terminaison n'est pas résolu vers une adresse IP privée au sein VPC d'un cluster existant, vous pouvez :

    • Activer l'accès public, puis le désactiver à nouveau. Vous n'avez besoin de le faire qu'une seule fois pour un cluster et le point de terminaison se résoudra en une adresse IP privée à partir de ce point.

    • Mettez à jour votre cluster.

Vous pouvez modifier l'accès aux points de terminaison de votre API serveur de cluster à l'aide du AWS Management Console ou AWS CLI.

AWS Management Console
Pour modifier l'accès aux terminaux de votre API serveur de cluster à l'aide du AWS Management Console
  1. Ouvrez la EKS console Amazon à l'adresse https://console.aws.amazon.com/eks/home#/clusters.

  2. Choisissez le nom du cluster pour afficher les informations le concernant.

  3. Choisissez la page Réseaux, puis Mise à jour.

  4. Pour l'accès privé, choisissez d'activer ou de désactiver l'accès privé pour le point de terminaison du Kubernetes API serveur de votre cluster. Si vous activez l'accès privé, les Kubernetes API demandes provenant de votre cluster VPC utilisent le point de VPC terminaison privé. Vous devez activer l'accès privé pour désactiver l'accès public.

  5. Pour l'accès public, choisissez d'activer ou de désactiver l'accès public pour le point de terminaison du Kubernetes API serveur de votre cluster. Si vous désactivez l'accès public, le Kubernetes API serveur de votre cluster ne peut recevoir que des demandes provenant de l'intérieur du clusterVPC.

  6. (Facultatif) Si vous avez activé l'accès public, vous pouvez spécifier les adresses internet qui peuvent communiquer au point de terminaison public. Sélectionnez Advanced Settings (Paramètres avancés). Entrez un CIDR bloc, tel que203.0.113.5/32. Le bloc ne peut pas inclure d'adresses réservées. Vous pouvez entrer des blocs supplémentaires en sélectionnant Add Source (Ajouter une source). Vous pouvez spécifier un nombre maximum de CIDR blocs. Pour de plus amples informations, veuillez consulter Afficher et gérer Amazon EKS et les quotas Fargate de service. Si vous ne spécifiez aucun bloc, le point de terminaison API du serveur public reçoit des demandes provenant de toutes (0.0.0.0/0) adresses IP. Si vous limitez l'accès à votre point de terminaison public à l'aide de CIDR blocs, il est recommandé d'activer également l'accès au point de terminaison privé afin que les nœuds et Pods Fargate (si vous les utilisez) puissent communiquer avec le cluster. Si le point de terminaison privé n'est pas activé, vos CIDR sources de point de terminaison d'accès public doivent inclure les sources de sortie de votreVPC. Par exemple, si vous avez un nœud dans un sous-réseau privé qui communique avec Internet via une NAT passerelle, vous devrez ajouter l'adresse IP sortante de la NAT passerelle dans le cadre d'un CIDR blocage autorisé sur votre point de terminaison public.

  7. Choisissez Update (Mettre à jour) pour terminer.

AWS CLI
Pour modifier l'accès aux terminaux de votre API serveur de cluster à l'aide du AWS CLI

Effectuez les étapes suivantes en utilisant la AWS CLI version 1.27.160 ou une version ultérieure. Vous pouvez vérifier votre version actuelle avec aws --version. Pour installer ou mettre à niveau le AWS CLI, reportez-vous à la section Installation du AWS CLI.

  1. Mettez à jour l'accès aux terminaux de votre API serveur de cluster à l'aide de la AWS CLI commande suivante. Remplacez les valeurs par le nom de votre cluster et les valeurs d'accès au point de terminaison souhaitées. Si vous définissezendpointPublicAccess=true, vous pouvez (éventuellement) saisir un seul CIDR bloc ou une liste de CIDR blocs séparés par des virgules pour. publicAccessCidrs Les blocs ne peuvent pas inclure d'adresses réservées. Si vous spécifiez CIDR des blocs, le point de terminaison API du serveur public ne recevra que les demandes provenant des blocs répertoriés. Vous pouvez spécifier un nombre maximum de CIDR blocs. Pour de plus amples informations, veuillez consulter Afficher et gérer Amazon EKS et les quotas Fargate de service. Si vous limitez l'accès à votre point de terminaison public à l'aide de CIDR blocs, il est recommandé d'activer également l'accès au point de terminaison privé afin que les nœuds et Pods Fargate (si vous les utilisez) puissent communiquer avec le cluster. Si le point de terminaison privé n'est pas activé, vos CIDR sources de point de terminaison d'accès public doivent inclure les sources de sortie de votreVPC. Par exemple, si vous avez un nœud dans un sous-réseau privé qui communique avec Internet via une NAT passerelle, vous devrez ajouter l'adresse IP sortante de la NAT passerelle dans le cadre d'un CIDR blocage autorisé sur votre point de terminaison public. Si vous ne spécifiez aucun CIDR bloc, le point de terminaison API du serveur public reçoit les demandes de toutes les adresses IP (0.0.0.0/0).

    Note

    La commande suivante active l'accès privé et public à partir d'une adresse IP unique pour le point de terminaison du API serveur. 203.0.113.5/32Remplacez-le par un seul CIDR bloc ou par une liste de CIDR blocs séparés par des virgules auxquels vous souhaitez restreindre l'accès au réseau.

    aws eks update-cluster-config \ --region region-code \ --name my-cluster \ --resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="203.0.113.5/32",endpointPrivateAccess=true

    L'exemple qui suit illustre un résultat.

    { "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "InProgress", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] } }
  2. Surveillez le statut de la mise à jour de l'accès à votre point de terminaison avec la commande suivante, en indiquant le nom de votre cluster et l'ID de mise à jour qui a été renvoyé par la commande précédente. Votre mise à jour est terminée lorsqu'elle affiche l'état Successful.

    aws eks describe-update \ --region region-code \ --name my-cluster \ --update-id e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000

    L'exemple qui suit illustre un résultat.

    { "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "Successful", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] } }

Accès à un API serveur privé uniquement

Si vous avez désactivé l'accès public pour le point de terminaison du Kubernetes API serveur de votre cluster, vous ne pouvez accéder au API serveur que depuis votre réseau VPC ou depuis un réseau connecté. Voici quelques méthodes possibles pour accéder au point de terminaison du Kubernetes API serveur :

Réseau connecté

Connectez votre réseau à l'VPCaide d'une passerelle de AWS transit ou d'une autre option de connectivité, puis utilisez un ordinateur du réseau connecté. Vous devez vous assurer que le groupe de sécurité de votre plan de EKS contrôle Amazon contient des règles permettant d'autoriser le trafic entrant sur le port 443 depuis votre réseau connecté.

Hôte Amazon EC2 Bastion

Vous pouvez lancer une EC2 instance Amazon dans un sous-réseau public de votre cluster, VPC puis vous SSH connecter via cette instance pour exécuter des kubectl commandes. Pour plus d'informations, consultez la section Hôtes bastions Linux sur AWS. Vous devez vous assurer que le groupe de sécurité de votre plan de EKS contrôle Amazon contient des règles autorisant le trafic entrant sur le port 443 depuis votre hôte Bastion. Pour de plus amples informations, veuillez consulter Afficher les exigences relatives aux groupes EKS de sécurité Amazon pour les clusters.

Lorsque vous configurez kubectl votre hôte bastion, veillez à utiliser des AWS informations d'identification déjà mappées à la RBAC configuration de votre cluster, ou ajoutez le IAMprincipal que votre bastion utilisera à la RBAC configuration avant de supprimer l'accès public du point de terminaison. Pour plus d’informations, consultez Accorder IAM aux utilisateurs et aux rôles l'accès à Kubernetes APIs et Accès non autorisé ou refusé (kubectl).

AWS Cloud9 IDE

AWS Cloud9 est un environnement de développement intégré basé sur le cloud (IDE) qui vous permet d'écrire, d'exécuter et de déboguer votre code avec un simple navigateur. Vous pouvez créer un AWS Cloud9 IDE dans celui de votre cluster VPC et l'utiliser IDE pour communiquer avec votre cluster. Pour plus d'informations, consultez Création d'un environnement dans AWS Cloud9. Vous devez vous assurer que le groupe de sécurité de votre plan de EKS contrôle Amazon contient des règles autorisant le trafic entrant sur le port 443 en provenance de votre groupe de IDE sécurité. Pour de plus amples informations, veuillez consulter Afficher les exigences relatives aux groupes EKS de sécurité Amazon pour les clusters.

Lorsque vous configurez kubectl pour votre AWS Cloud9 IDE, veillez à utiliser des AWS informations d'identification déjà mappées à la RBAC configuration de votre cluster, ou ajoutez le IAM principal que vous IDE utiliserez à la RBAC configuration avant de supprimer l'accès public du point de terminaison. Pour plus d’informations, consultez Accorder IAM aux utilisateurs et aux rôles l'accès à Kubernetes APIs et Accès non autorisé ou refusé (kubectl).