Présentation de l'isolation des nœuds

Ce document explique les avantages et les limites de l'isolation des nœuds dans un cluster Kubernetes Google Distributed Cloud (GDC) air-gapped. L'isolation des nœuds avec des pools de nœuds dédiés améliore la sécurité du cluster en vous permettant de contrôler précisément l'emplacement d'exécution de pods spécifiques dans le cluster.

L'isolation des charges de travail présente certains avantages, tels que :

  • Réduction du risque d'attaques par élévation de privilèges dans votre cluster Kubernetes.
  • Vous pouvez mieux contrôler les pods qui nécessitent des ressources supplémentaires.

Dans ce cas, envisagez d'isoler vos charges de travail de conteneur dans des pools de nœuds dédiés pour plus de contrôle et d'optimisation. Veillez également à tenir compte des limites pour prendre une décision éclairée concernant les coûts de maintenance supplémentaires requis par l'isolation des nœuds.

Ce document s'adresse à des audiences telles que les administrateurs informatiques du groupe des administrateurs de plate-forme, qui sont chargés de gérer les pools de nœuds d'un cluster Kubernetes, et les développeurs d'applications du groupe des opérateurs d'applications, qui sont chargés de gérer les charges de travail des conteneurs. Pour en savoir plus, consultez Audiences pour la documentation GDC air-gapped.

Pourquoi dois-je isoler mes charges de travail ?

Bien que cela ne soit pas obligatoire, le fait de dédier des pools de nœuds à des charges de travail de conteneurs spécifiques peut éviter des problèmes potentiels. Toutefois, cette approche nécessite une gestion plus poussée et n'est souvent pas essentielle.

Les clusters Kubernetes utilisent des charges de travail privilégiées gérées par GDC pour activer des fonctionnalités de clusters spécifiques, telles que la collecte de métriques. Ces charges de travail disposent d'autorisations spéciales pour s'exécuter correctement dans le cluster.

Les charges de travail que vous déployez sur vos nœuds peuvent être compromises par une entité malveillante. Si vous exécutez ces charges de travail avec des charges de travail privilégiées gérées par GDC, un pirate informatique qui s'échappe avec un conteneur compromis peut utiliser les identifiants de la charge de travail privilégiée sur le nœud pour élever les privilèges dans votre cluster.

Les pools de nœuds dédiés sont également utiles lorsque vous devez planifier des pods nécessitant plus de ressources que d'autres, par exemple plus de mémoire ou plus d'espace disque local.

Vous pouvez utiliser les mécanismes suivants pour planifier vos charges de travail sur un pool de nœuds dédié :

  • Rejets de nœuds : indiquent à votre cluster Kubernetes d'éviter de planifier des charges de travail sur des nœuds spécifiques sans tolérance correspondante.
  • Affinité de nœud : indique à votre cluster Kubernetes de planifier des pods spécifiques sur des nœuds dédiés.

L'isolation des nœuds est un mécanisme avancé de défense en profondeur que vous devez uniquement utiliser avec d'autres fonctionnalités d'isolation, telles que des conteneurs et des comptes de service dotés de privilèges minimaux. Il est possible que l'isolation des nœuds ne couvre pas tous les chemins d'élévation et qu'elle ne puisse jamais être utilisée comme limite de sécurité principale.

Fonctionnement de l'isolation des nœuds

Pour implémenter l'isolation des nœuds pour vos charges de travail, vous devez procéder comme suit :

  1. Ajoutez un rejet et un libellé au pool de nœuds pour vos charges de travail.

  2. Mettez à jour vos charges de travail avec la tolérance et la règle d'affinité de nœud correspondantes.

Dans ce guide, nous partons du principe que vous disposez d'un pool de nœuds dans votre cluster. L'utilisation de l'affinité des nœuds en plus des rejets de nœuds n'est pas obligatoire, mais nous vous recommandons de l'utiliser, car vous bénéficiez d'un meilleur contrôle sur la planification.

Recommandations et bonnes pratiques

Après avoir configuré l'isolation des nœuds, nous vous recommandons d'effectuer les opérations suivantes :

  • Lorsque vous créez des pools de nœuds, empêchez la plupart des charges de travail gérées par GDC de s'exécuter sur ces nœuds en ajoutant un rejet à ces pools.

  • Chaque fois que vous déployez de nouvelles charges de travail sur votre cluster, par exemple lors de l'installation d'outils tiers, vérifiez les autorisations requises par les pods. Dans la mesure du possible, évitez de déployer des charges de travail qui utilisent des autorisations avec privilèges élevés sur des nœuds partagés.

Limites

Les limites suivantes s'appliquent aux pods s'exécutant dans un pool de nœuds isolé :

  • Les pirates informatiques peuvent toujours lancer des attaques par déni de service (DoS) à partir du nœud compromis.

  • Si vous déployez des ressources DaemonSet disposant de privilèges élevés et pouvant tolérer les rejets, ces pods peuvent constituer un moyen d'augmenter les privilèges à partir d'un nœud compromis.

  • Les nœuds compromis peuvent toujours lire de nombreuses ressources, y compris tous les pods et espaces de noms du cluster.

  • Les nœuds compromis peuvent accéder aux secrets et aux identifiants utilisés par chaque pod exécuté sur ce nœud.

  • Les nœuds compromis peuvent toujours contourner les règles de réseau de sortie.

  • L'utilisation d'un pool de nœuds distinct pour isoler les charges de travail peut avoir un impact sur la rentabilité, l'autoscaling et l'utilisation des ressources.

  • Certaines charges de travail gérées par GDC doivent s'exécuter sur chaque nœud de votre cluster et être configurées pour tolérer tous les rejets.

Étapes suivantes