Aidez à améliorer cette page
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.
Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page qui se trouve dans le volet droit de chaque page.
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.
Utilisation des politiques réseau avec le mode automatique EKS
Vue d’ensemble
À mesure que les clients font évoluer leurs environnements applicatifs à l'aide d'EKS, l'isolation du trafic réseau devient de plus en plus fondamentale pour empêcher tout accès non autorisé aux ressources à l'intérieur et à l'extérieur du cluster. Cela est particulièrement important dans un environnement mutualisé où plusieurs charges de travail indépendantes s'exécutent côte à côte dans le cluster. Les politiques réseau Kubernetes vous permettent d'améliorer la sécurité du réseau pour vos charges de travail Kubernetes et leur intégration aux points de terminaison externes du cluster. Le mode automatique EKS prend en charge différents types de politiques réseau.
Isolation des couches 3 et 4
Les politiques réseau standard de Kubernetes fonctionnent aux couches 3 et 4 du modèle de réseau OSI et vous permettent de contrôler le flux de trafic au niveau de l'adresse IP ou du port au sein de votre cluster Amazon EKS.
Cas d’utilisation
-
Segmentez le trafic réseau entre les charges de travail pour vous assurer que seules les applications associées peuvent communiquer entre elles.
-
Isolez les locataires au niveau de l'espace de noms à l'aide de politiques visant à renforcer la séparation du réseau.
DNS-based mise en application
Les clients déploient généralement des charges de travail dans EKS qui font partie d'un environnement distribué plus large, dont certaines doivent communiquer avec des systèmes et des services extérieurs au cluster (trafic en direction du nord). Ces systèmes et services peuvent se trouver dans le AWS cloud ou en dehors du AWS cloud. Les politiques basées sur le système de noms de domaine (DNS) vous permettent de renforcer votre posture de sécurité en adoptant une approche plus stable et prévisible pour empêcher l'accès non autorisé des pods aux ressources ou aux points de terminaison externes au cluster. Ce mécanisme élimine le besoin de suivre et d'autoriser manuellement des adresses IP spécifiques à la liste. En sécurisant les ressources à l'aide d'une DNS-based approche, vous bénéficiez également d'une plus grande flexibilité pour mettre à jour l'infrastructure externe sans avoir à assouplir votre dispositif de sécurité ou à modifier les politiques réseau en cas de modification des serveurs et des hôtes en amont. Vous pouvez filtrer le trafic sortant vers des points de terminaison externes à l'aide d'un nom de domaine complet (FQDN) ou d'un modèle correspondant à un nom de domaine DNS. Cela vous donne la flexibilité supplémentaire d'étendre l'accès à plusieurs sous-domaines associés à un point de terminaison externe au cluster particulier.
Cas d’utilisation
-
Standardisez une DNS-based approche de filtrage de l'accès depuis un environnement Kubernetes aux points de terminaison externes au cluster.
-
Accès sécurisé aux AWS services dans un environnement multilocataire.
-
Gérez l'accès au réseau depuis les pods jusqu'aux charges de travail sur site dans vos environnements cloud hybrides.
Règles d'administration (ou à l'échelle du cluster)
Dans certains cas, tels que les scénarios multi-locataires, les clients peuvent être tenus d'appliquer une norme de sécurité réseau qui s'applique à l'ensemble du cluster. Au lieu de définir et de gérer de manière répétitive une politique distincte pour chaque espace de noms, vous pouvez utiliser une politique unique pour gérer de manière centralisée les contrôles d'accès au réseau pour les différentes charges de travail du cluster, quel que soit leur espace de noms. Ces types de politiques vous permettent d'étendre le champ d'application de vos règles de filtrage réseau appliquées aux couches 3, 4 et lors de l'utilisation de règles DNS.
Cas d’utilisation
-
Gérez de manière centralisée les contrôles d'accès au réseau pour toutes les charges de travail (ou un sous-ensemble de celles-ci) de votre cluster EKS.
-
Définissez une posture de sécurité réseau par défaut pour l'ensemble du cluster.
-
Étendez les normes de sécurité organisationnelles au périmètre du cluster de manière plus efficace sur le plan opérationnel.
Prise en main
Conditions préalables
-
Cluster Amazon EKS avec le mode automatique EKS activé
-
kubectl configuré pour se connecter à votre cluster
Étape 1 : activer le contrôleur de politiques réseau
Pour utiliser les politiques réseau avec le mode automatique EKS, vous devez d'abord activer le Network Policy Controller en appliquant a ConfigMap à votre cluster.
-
Créez un fichier nommé
enable-network-policy.yamlavec le contenu suivant:apiVersion: v1 kind: ConfigMap metadata: name: amazon-vpc-cni namespace: kube-system data: enable-network-policy-controller: "true" -
Appliquez le ConfigMap à votre cluster :
kubectl apply -f enable-network-policy.yaml
Étape 2 : Création et test de politiques réseau
Votre cluster du mode automatique EKS est maintenant configuré pour prendre en charge les politiques réseau Kubernetes. Vous pouvez tester cette configuration à l’aide de Démonstration des politiques réseau pour Amazon EKS.
Étape 3 : Ajuster la configuration de l'agent de politique réseau dans la classe de nœuds (facultatif)
Vous pouvez éventuellement créer une nouvelle classe de nœuds pour modifier le comportement par défaut de l'agent de politique réseau sur les nœuds ou activer la journalisation des événements de politique réseau. Pour cela, procédez comme suit :
-
Créez ou modifiez un fichier YAML de classe de nœud (par exemple,
nodeclass-network-policy.yaml) avec le contenu suivant :apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: network-policy-config spec: # Optional: Changes default network policy behavior networkPolicy: DefaultAllow # Optional: Enables logging for network policy events networkPolicyEventLogs: Enabled # Include other Node Class configurations as needed -
Appliquez la configuration de la classe de nœuds à votre cluster :
kubectl apply -f nodeclass-network-policy.yaml
-
Vérifiez que la classe de nœuds a été créée :
kubectl get nodeclass network-policy-config
-
Mettez à jour votre groupe de nœuds pour utiliser cette classe de nœuds. Pour de plus amples informations, veuillez consulter Création d’un pool de nœuds pour le mode automatique EKS.
Fonctionnement
DNS-based politique de réseau
-
L'équipe de la plateforme applique une DNS-based politique au cluster EKS.
-
Le Network Policy Controller est chargé de surveiller la création de politiques au sein du cluster, puis de réconcilier les points de terminaison des politiques. Dans ce cas d'utilisation, le contrôleur de politique réseau demande à l'agent de nœud de filtrer les requêtes DNS en fonction des domaines autorisés dans la politique créée. Les noms de domaine sont autorisés à l'aide du nom de domaine complet ou d'un nom de domaine qui correspond à un modèle défini dans la configuration des ressources Kubernetes.
-
La charge de travail A tente de résoudre l'adresse IP d'un point de terminaison externe au cluster. La demande DNS passe d'abord par un proxy qui filtre ces demandes en fonction de la liste d'autorisation appliquée par le biais de la politique réseau.
-
Une fois que la demande DNS est passée par la liste d'autorisation du filtre DNS, le proxy la transmet à CoreDNS,
-
CoreDNS envoie à son tour la demande au résolveur DNS externe (résolveur Amazon Route 53) pour obtenir la liste des adresses IP situées derrière le nom de domaine.
-
Les adresses IP résolues avec TTL sont renvoyées dans la réponse à la demande DNS. Ces adresses IP sont ensuite écrites dans une carte eBPF qui est utilisée à l'étape suivante pour l'application de la couche IP.
-
Les sondes eBPF connectées à l'interface Pod veth filtreront ensuite le trafic sortant de la charge de travail A vers le point de terminaison externe du cluster en fonction des règles en place. Cela garantit que les pods ne peuvent envoyer du trafic externe au cluster qu'aux adresses IP des domaines listés autorisés. La validité de ces adresses IP est basée sur le TTL extrait du résolveur DNS externe (résolveur Amazon Route 53).
Utilisation de la politique réseau d'applications
Il ApplicationNetworkPolicy combine les fonctionnalités des politiques réseau standard de Kubernetes avec le filtrage basé sur le DNS au niveau de l'espace de noms à l'aide d'une seule définition de ressource personnalisée (CRD). Par conséquent, ApplicationNetworkPolicy ils peuvent être utilisés pour :
-
Définition des restrictions aux couches 3 et 4 de la pile réseau à l'aide de blocs IP et de numéros de port.
-
Définissez des règles qui fonctionnent au niveau de la couche 7 de la pile réseau et vous permettent de filtrer le trafic en fonction des noms de domaine complets.
Important
Les règles basées sur le DNS définies à l'aide de ne ApplicationNetworkPolicy s'appliquent qu'aux charges de travail exécutées dans des instances EKS Auto Mode-launched EC2. ApplicationNetworkPolicyprend en charge tous les champs de la norme KubernetesNetworkPolicy, avec un filtre FQDN supplémentaire pour les règles de sortie.
Avertissement
N'utilisez pas le même nom pour un ApplicationNetworkPolicy et un NetworkPolicy dans le même espace de noms. Si les noms entrent en collision, les PolicyEndpoints objets qui en résultent peuvent ne pas refléter correctement l'une ou l'autre des politiques. Les deux ressources sont acceptées sans erreur, ce qui rend ce problème difficile à diagnostiquer.
Pour résoudre un conflit de dénomination, renommez le ApplicationNetworkPolicy ou les objets NetworkPolicy afin qu'ils soient uniques dans l'espace de noms, puis vérifiez que les PolicyEndpoints objets correspondants sont correctement mis à jour.
Exemple
Dans votre cluster EKS Auto Mode, vous avez une charge de travail qui doit communiquer avec une application sur site qui se trouve derrière un équilibreur de charge avec un nom DNS. Vous pouvez y parvenir en utilisant la politique réseau suivante :
apiVersion: networking.k8s.aws/v1alpha1 kind: ApplicationNetworkPolicy metadata: name: my-onprem-app-egress namespace: galaxy spec: podSelector: matchLabels: role: backend policyTypes: - Egress egress: - to: - ipBlock: { cidr: 10.100.0.10/32 } ports: - protocol: TCP port: 53 - protocol: UDP port: 53 - to: - domainNames: - "myapp.mydomain.com" ports: - protocol: TCP port: 8080
Au niveau du réseau Kubernetes, cela permettrait de sortir de tous les pods de l'espace de noms « galaxy » étiqueté role: backend pour se connecter au nom de domaine myapp.mydomain.com sur le port TCP 8080 et à CoreDNS sur le port 53. En outre, vous devez configurer la connectivité réseau pour le trafic sortant de votre VPC vers le centre de données de votre entreprise.
Déterminer l'adresse IP CoreDNS
Pour que votre application puisse résoudre le DNS, elle doit être autorisée à communiquer avec CoreDNS, qui s'exécute localement sur chaque instance EKS Auto Mode. L'adresse IP CoreDNS est dérivée de la plage d'adresses CIDR de service configurée pour le cluster et reste fixe pendant toute la durée de vie du cluster. Vous pouvez donc le déterminer une seule fois et le référencer directement dans vos politiques réseau.
-
Récupérez le CIDR de service pour votre cluster.
Pour les clusters IPv4 :
aws eks describe-cluster --name my-cluster --query 'cluster.kubernetesNetworkConfig.serviceIpv4Cidr' --output textPour les clusters IPv6 :
aws eks describe-cluster --name my-cluster --query 'cluster.kubernetesNetworkConfig.serviceIpv6Cidr' --output text -
Dérivez l'adresse IP CoreDNS à partir du CIDR du service :
-
IPv4 : utilisez l'
.10adresse du CIDR. Par exemple,10.100.0.0/16devient10.100.0.10/32. -
IPv6 — ajouter
aà l'adresse réseau. Par exemple,fd12:3456:789a::/108devientfd12:3456:789a::a/128.
-
Politique réseau d'administration (ou de cluster)
Utilisation de la politique de réseau de clusters
Lorsque vous utilisez unClusterNetworkPolicy, les politiques du niveau Admin sont évaluées en premier et ne peuvent pas être remplacées. Lorsque les politiques du niveau Admin ont été évaluées, les politiques standard étendues à l'espace de noms sont utilisées pour exécuter les règles de segmentation du réseau appliquées. Cela peut être accompli en utilisant l'une ApplicationNetworkPolicy ou l'autre des optionsNetworkPolicy. Enfin, les règles du niveau de base qui définissent les restrictions réseau par défaut pour les charges de travail des clusters seront appliquées. Ces règles de niveau de base peuvent être remplacées par les politiques délimitées par les espaces de noms si nécessaire.
Exemple
Votre cluster contient une application que vous souhaitez isoler des charges de travail des autres locataires. Vous pouvez bloquer explicitement le trafic de cluster provenant d'autres espaces de noms afin d'empêcher l'accès réseau à l'espace de noms sensible de la charge de travail.
apiVersion: networking.k8s.aws/v1alpha1 kind: ClusterNetworkPolicy metadata: name: protect-sensitive-workload spec: tier: Admin priority: 10 subject: namespaces: matchLabels: kubernetes.io/metadata.name: earth ingress: - action: Deny from: - namespaces: matchLabels: {} # Match all namespaces. name: select-all-deny-all
Considérations
Comprendre l'ordre d'évaluation des politiques
Les fonctionnalités de politique réseau prises en charge par EKS sont évaluées dans un ordre spécifique afin de garantir une gestion du trafic prévisible et sécurisée. Il est donc important de comprendre le flux d'évaluation afin de concevoir une posture de sécurité réseau efficace pour votre environnement.
-
Politiques du niveau administrateur (évaluées en premier) : Toutes les politiques du niveau administrateur ClusterNetworkPolicies sont évaluées avant toute autre politique. Au niveau Administrateur, les politiques sont traitées par ordre de priorité (le numéro de priorité le plus bas en premier). Le type d'action détermine ce qui se passe ensuite.
-
Action de refus (priorité la plus élevée) : lorsqu'une politique d'administration avec une action Refuser correspond au trafic, ce trafic est immédiatement bloqué, quelles que soient les autres politiques. Aucune autre étape ClusterNetworkPolicy ou NetworkPolicy les règles ne sont traitées. Cela garantit que les contrôles de sécurité à l'échelle de l'organisation ne peuvent pas être remplacés par des politiques au niveau de l'espace de noms.
-
Autoriser l'action : une fois les règles de refus évaluées, les politiques d'administration comportant des actions Autoriser sont traitées par ordre de priorité (le numéro de priorité le plus bas en premier). Lorsqu'une action Autoriser correspond, le trafic est accepté et aucune autre évaluation de la politique n'a lieu. Ces politiques peuvent accorder l'accès à plusieurs espaces de noms en fonction de sélecteurs d'étiquettes, fournissant ainsi un contrôle centralisé sur les charges de travail qui peuvent accéder à des ressources spécifiques.
-
Action de réussite : les actions de réussite prévues dans les politiques du niveau d'administration délèguent la prise de décision aux niveaux inférieurs. Lorsque le trafic correspond à une règle Pass, l'évaluation ignore toutes les règles restantes du niveau Administrateur pour ce trafic et passe directement au NetworkPolicy niveau. Cela permet aux administrateurs de déléguer explicitement le contrôle de certains modèles de trafic aux équipes chargées de l'application. Par exemple, vous pouvez utiliser les règles Pass pour déléguer la gestion du trafic interne à des administrateurs d'espaces de noms tout en maintenant des contrôles stricts sur l'accès externe.
-
-
Niveau de politique réseau : si aucune politique de niveau administrateur ne correspond à Refuser ou à Autoriser, ou si une action Pass a été sélectionnée, les NetworkPolicy ressources traditionnelles ApplicationNetworkPolicy et limitées à l'espace de noms sont évaluées ensuite. Ces politiques fournissent un contrôle précis au sein des espaces de noms individuels et sont gérées par les équipes chargées de l'application. Namespace-scoped les politiques ne peuvent être que plus restrictives que les politiques d'administration. Ils ne peuvent pas annuler la décision de refus d'une politique d'administration, mais ils peuvent restreindre davantage le trafic autorisé ou transmis par les politiques d'administration.
-
Politiques d'administration du niveau de référence : si aucune politique relative à l'administration ou à l'espace de noms ne correspond au trafic, le niveau de référence est évalué. ClusterNetworkPolicies Ils fournissent des postures de sécurité par défaut qui peuvent être remplacées par des politiques définies par des espaces de noms, permettant aux administrateurs de définir des valeurs par défaut à l'échelle de l'organisation tout en donnant aux équipes la flexibilité nécessaire pour les personnaliser selon les besoins. Les politiques de base sont évaluées par ordre de priorité (le numéro de priorité le plus bas en premier).
-
Refus par défaut (si aucune politique ne correspond) : ce comportement de refus par défaut garantit que seules les connexions explicitement autorisées sont autorisées, tout en maintenant une solide posture de sécurité.
Appliquer le principe du moindre privilège
-
Commencez par des politiques restrictives et ajoutez progressivement des autorisations selon les besoins. Commencez par implémenter des politiques de refus par défaut au niveau du cluster, puis ajoutez progressivement des règles d'autorisation au fur et à mesure que vous validez les exigences de connectivité légitimes. Cette approche oblige les équipes à justifier explicitement chaque connexion externe, créant ainsi un environnement plus sûr et auditable.
-
Auditez régulièrement et supprimez les règles de politique non utilisées - Les politiques réseau peuvent s'accumuler au fil du temps à mesure que les applications évoluent, laissant derrière elles des règles obsolètes qui élargissent inutilement votre surface d'attaque. Mettez en œuvre un processus de révision régulier pour identifier et supprimer les règles de politique qui ne sont plus nécessaires, en veillant à ce que votre posture de sécurité reste stricte et maintenable.
-
Utilisez des noms de domaine spécifiques plutôt que des modèles généraux lorsque cela est possible. Si les caractères génériques sont pratiques, ils
*.amazonaws.com.rproxy.govskope.capermettent également d'accéder à un large éventail de services. Dans la mesure du possible, spécifiez des noms de domaine exacts, de manières3.us-west-2.amazonaws.comà limiter l'accès aux seuls services spécifiques dont vos applications ont besoin, réduisant ainsi le risque de mouvement latéral en cas de charge de travail compromise.
Utilisation de DNS-based politiques dans EKS
-
Les règles basées sur le DNS définies à l'aide de ne
ApplicationNetworkPolicys'appliquent qu'aux charges de travail exécutées dans des instances EKS Auto Mode-launched EC2. Si vous exécutez un cluster en mode mixte (composé de nœuds de travail EKS Auto et non EKS Auto), vos DNS-based règles ne sont efficaces que dans les nœuds de travail en mode EKS Auto (instances gérées EC2).
Validation de vos politiques DNS
-
Utilisez des clusters intermédiaires qui reflètent la topologie du réseau de production pour les tests - Votre environnement de test doit répliquer l'architecture réseau, les dépendances externes et les modèles de connectivité de la production afin de garantir des tests de politique précis. Cela inclut les configurations VPC correspondantes, le comportement de résolution DNS et l'accès aux mêmes services externes dont vos charges de travail de production ont besoin.
-
Mettez en œuvre des tests automatisés pour les chemins réseau critiques - Créez des tests automatisés qui valident la connectivité aux services externes essentiels dans le cadre de votre CI/CD pipeline. Ces tests devraient vérifier que les flux de trafic légitimes sont autorisés alors que les connexions non autorisées sont bloquées, afin de valider en permanence que vos politiques réseau maintiennent la bonne posture de sécurité au fur et à mesure de l'évolution de votre infrastructure.
-
Surveillez le comportement des applications après les changements de politique - Après avoir déployé des politiques réseau nouvelles ou modifiées en production, surveillez de près les journaux des applications, les taux d'erreur et les mesures de performance afin d'identifier rapidement tout problème de connectivité. Établissez des procédures d'annulation claires afin de pouvoir annuler rapidement les modifications de politique si elles entraînent un comportement inattendu des applications ou des interruptions de service.
Interaction avec le pare-feu DNS Amazon Route 53
Les politiques d'administration et de réseau EKS sont d'abord évaluées au niveau du pod lorsque le trafic est initié. Si une politique réseau EKS autorise la sortie vers un domaine spécifique, le pod exécute ensuite une requête DNS qui atteint le résolveur Route 53. À ce stade, les règles du pare-feu DNS Route 53 sont évaluées. Si le pare-feu DNS bloque la requête de domaine, la résolution DNS échoue et la connexion ne peut pas être établie, même si la politique réseau EKS l'autorisait. Cela crée des couches de sécurité complémentaires : les politiques DNS-based réseau EKS fournissent un contrôle de sortie au niveau du pod pour les exigences d'accès spécifiques aux applications et les limites de sécurité multi-locataires, tandis que le pare-feu DNS fournit une VPC-wide protection contre les domaines malveillants connus et applique les listes de blocage à l'échelle de l'organisation.