À propos de l'admission des charges de travail privilégiées en mode Autopilot

Vous pouvez contrôler les charges de travail privilégiées qui peuvent s'exécuter en mode Google Kubernetes Engine (GKE) Autopilot à l'aide de listes d'autorisation et de règles. Ce document décrit les contraintes par défaut qu'Autopilot applique aux charges de travail, les types de charges de travail privilégiées que vous pouvez exécuter en mode Autopilot et les méthodes de contrôle de l'admission des charges de travail privilégiées.

Ce document s'adresse aux personnes suivantes :

  • Administrateurs et opérateurs de plate-forme qui souhaitent exécuter des charges de travail GKE privilégiées provenant de différentes sources en mode Autopilot.
  • Administrateurs d'identité et de compte qui souhaitent améliorer la stratégie de sécurité de leur organisation en bloquant toutes les charges de travail privilégiées, à l'exception de certaines charges de travail spécifiques.

À propos des charges de travail privilégiées en mode Autopilot

Pour améliorer votre stratégie de sécurité, les clusters et les nœuds en mode Autopilot appliquent des contraintes de sécurité par défaut. Par exemple, Autopilot rejette la plupart des pods qui définissent le champ spec.securityContext.privileged sur true dans un conteneur. Dans Autopilot, les charges de travail privilégiées sont des charges de travail qui ne répondent pas à ces contraintes par défaut. Par défaut, les nœuds Autopilot d'une Google Cloud organisation rejettent les charges de travail privilégiées.

Les charges de travail privilégiées spécifiques ne peuvent s'exécuter en mode Autopilot que si le cluster dispose de listes d'autorisation correspondant à ces charges de travail. Lorsqu'un administrateur de cluster crée ou modifie un cluster, il peut spécifier des chemins d'accès aux listes d'autorisation que le cluster peut exécuter. Par défaut, chaque Google Cloud organisation est compatible avec les listes d'autorisation des partenaires Autopilot et des projets Open Source validés.

Les administrateurs d'organisation peuvent modifier ce comportement par défaut de différentes manières à l'aide du service de règles d'administration :

  • Autoriser toutes les charges de travail des partenaires GKE Autopilot et les charges de travail Open Source validées. Il s'agit du comportement par défaut dans toutes les Google Cloud organisations.
  • Autoriser des charges de travail partenaires spécifiques ou des charges de travail Open Source validées.
  • Autoriser uniquement des charges de travail privilégiées spécifiques appartenant au client.
  • Refuser toutes les charges de travail privilégiées.

Cette approche tout refuser, puis autoriser certaines choses est une bonne pratique de sécurité qui vous permet de contrôler exactement ce qui s'exécute avec des privilèges élevés dans vos clusters GKE.

Vous pouvez contrôler les charges de travail privilégiées en mode Autopilot dans les situations suivantes, par exemple :

Sources des charges de travail Autopilot privilégiées

Le tableau suivant décrit les types de charges de travail privilégiées que vous pouvez exécuter dans Autopilot :

Types de charges de travail privilégiées
Charges de travail partenaires Autopilot

Un sous-ensemble de Google Cloud partenaires fournit des charges de travail privilégiées pour le mode Autopilot. GKE valide ces charges de travail partenaires. Ces charges de travail sont disponibles pour tous les clients. Par défaut, tous les clients peuvent installer les listes d'autorisation correspondantes dans n'importe quel cluster Autopilot ou Standard.

Pour en savoir plus sur les charges de travail partenaires disponibles, consultez la page Partenaires Autopilot.

Charges de travail Open Source

Des listes d'autorisation permettent d'exécuter des charges de travail Open Source privilégiées spécifiques en mode Autopilot. GKE valide ces charges de travail. Par défaut, tous les clients peuvent installer les listes d'autorisation correspondantes dans n'importe quel cluster Autopilot ou Standard.

Pour en savoir plus sur les charges de travail Open Source disponibles, consultez la page Exécuter des charges de travail Open Source privilégiées sur GKE Autopilot.

Charges de travail appartenant au client

Si vous êtes un client éligible et que vous disposez de charges de travail privilégiées que vous souhaitez exécuter dans des nœuds Autopilot, vous pouvez créer des listes d'autorisation pour ces charges de travail. Cette fonctionnalité est désactivée par défaut pour toutes les Google Cloud organisations. Vous utilisez le service de règles d'administration pour ajouter des chemins d'accès aux listes d'autorisation pour des charges de travail spécifiques, puis vous mettez à jour les clusters pour installer ces listes d'autorisation.

Pour en savoir plus, consultez la section Charges de travail privilégiées appartenant au client.

Fonctionnement du contrôle d'admission des charges de travail privilégiées

Pour autoriser l'exécution de charges de travail privilégiées spécifiques dans vos nœuds Autopilot, vous installez des listes d'autorisation correspondant à chaque charge de travail. Ces listes d'autorisation sont des ressources personnalisées Kubernetes WorkloadAllowlist. GKE valide les détails de la charge de travail par rapport à toutes les WorkloadAllowlists du cluster et n'autorise l'admission que si les détails correspondent. Par défaut, chaque cluster Autopilot ou Standard d'une Google Cloud organisation vous permet d'installer des WorkloadAllowlists pour les charges de travail partenaires Autopilot et pour les charges de travail Open Source.

De manière générale, l'exécution de charges de travail privilégiées dans des nœuds Autopilot comprend les étapes suivantes :

  1. L'administrateur de l'organisation vérifie que la contrainte de règle d'administration gérée container.managed.autopilotPrivilegedAdmission autorise l'installation de listes d'autorisation à partir d'une source spécifique. Pour en savoir plus, consultez la section Contrainte gérée de règle d'administration pour les listes d'autorisation.
  2. Pour les charges de travail privilégiées appartenant au client, l'administrateur de la plate-forme crée des listes d'autorisation correspondant aux charges de travail privilégiées. Pour en savoir plus, consultez la section Charges de travail privilégiées appartenant au client.
  3. L'administrateur du cluster configure un cluster Autopilot ou Standard pour autoriser l'installation de listes d'autorisation à partir d'une source spécifique. Pour en savoir plus, consultez la section Configuration du cluster.
  4. L'administrateur du cluster crée un AllowlistSynchronizer qui référence le chemin d'accès à la liste d'autorisation. L'AllowlistSynchronizer installe la liste d'autorisation et la maintient à jour. Pour en savoir plus, consultez la section Installation de la liste d'autorisation.

Une fois ces étapes terminées, un opérateur d'application peut déployer la charge de travail privilégiée dans le cluster.

Contrainte gérée de règle d'administration pour les listes d'autorisation

Par défaut, chaque Google Cloud organisation applique une règle d'administration basée sur la container.managed.autopilotPrivilegedAdmission contrainte gérée. Cette contrainte définit un ensemble de chemins d'accès à des fichiers ou à des répertoires à partir desquels les clusters GKE peuvent installer des listes d'autorisation. La configuration du cluster doit utiliser les chemins d'accès aux listes d'autorisation à partir des paramètres de cette contrainte.

Par défaut, la contrainte autopilotPrivilegedAdmission autorise l'utilisation de toutes les listes d'autorisation appartenant à des partenaires GKE approuvés et à des projets Open Source. Ce paramètre correspond à la configuration par défaut des clusters GKE, qui peuvent installer n'importe laquelle de ces listes d'autorisation approuvées.

En tant qu'administrateur de règles d'administration, vous pouvez modifier l'ensemble des chemins d'accès aux listes d'autorisation qui peuvent être appliqués aux clusters GKE de votre organisation, de votre dossier ou de votre projet. Par exemple, pour autoriser l'utilisation d'une liste d'autorisation personnalisée appartenant à votre organisation, vous ajoutez ce chemin d'accès à la liste d'autorisation à la contrainte gérée.

Paramètres de contrainte gérée

La contrainte gérée autopilotPrivilegedAdmission présente la spécification suivante :

spec:
  rules:
  - enforce: true
    parameters:
      allowAnyGKEPath: ALLOW_GKE_PATHS
      allowPaths:
      - PATH1
      - PATH2
      - PATH3

Les champs suivants de la spécification contrôlent l'ensemble des listes d'autorisation que les clusters peuvent utiliser :

  • allowAnyGKEPath: valeur booléenne qui contrôle si les clusters peuvent utiliser l'ensemble par défaut des chemins d'accès aux listes d'autorisation approuvés par GKE. Ce paramètre accepte les valeurs suivantes :

    • True: les administrateurs de cluster peuvent configurer des clusters sans modifier la configuration de la liste d'autorisation, avec un ou plusieurs chemins d'accès à la liste d'autorisation commençant par gke://, ou avec une chaîne vide pour désactiver toutes les listes d'autorisation du cluster. True est la valeur par défaut de ce paramètre.

    • False: les administrateurs de cluster doivent configurer des clusters avec une chaîne vide pour les sources de listes d'autorisation ou avec n'importe quel chemin d'accès à la liste d'autorisation à partir du paramètre allowPaths.

  • allowPaths: liste des sources de listes d'autorisation approuvées à partir desquelles les administrateurs de cluster peuvent spécifier des valeurs lorsqu'ils configurent un cluster. Vous pouvez spécifier des chemins d'accès à des fichiers de listes d'autorisation spécifiques ou à des répertoires entiers.

Le tableau suivant décrit les résultats de la configuration de ces paramètres de différentes manières :

Valeur allowAnyGKEPath Valeur allowPaths Résultat
True Vide ou non spécifié.

Les administrateurs de cluster peuvent effectuer l'une des actions suivantes lors de la création ou de la modification du cluster :

  • Utiliser la configuration de liste d'autorisation par défaut : omettre toutes les options de configuration de liste d'autorisation afin que le cluster puisse installer des listes d'autorisation à partir de n'importe quel chemin d'accès comportant le préfixe gke://.
  • Désactiver l'installation de la liste d'autorisation : spécifier une valeur vide pour la configuration de la liste d'autorisation du cluster.
  • Spécifier les chemins d'accès aux listes d'autorisation GKE : spécifier un ou plusieurs chemins d'accès aux listes d'autorisation comportant le préfixe gke://. Le cluster ne peut installer des listes d'autorisation qu'à partir de ces chemins d'accès.
False Vide ou non spécifié.

Les administrateurs de cluster doivent spécifier une valeur vide pour la configuration de la liste d'autorisation du cluster configuration. Si les administrateurs de cluster ignorent la configuration du chemin d'accès à la liste d'autorisation, alors la création ou la modification du cluster échoue.

True Des valeurs sont spécifiées.

Les administrateurs de cluster peuvent effectuer l'une des actions suivantes lors de la création ou de la modification du cluster :

  • Utiliser la configuration de liste d'autorisation par défaut : omettre toutes les options de configuration de liste d'autorisation afin que le cluster puisse installer des listes d'autorisation à partir de n'importe quel chemin d'accès comportant le gke:// préfixe.
  • Désactiver l'installation de la liste d'autorisation : spécifier une valeur vide pour la configuration de la liste d'autorisation du cluster.
  • Spécifier les chemins d'accès aux listes d'autorisation : spécifier un ou plusieurs chemins d'accès aux listes d'autorisation comportant le préfixe gke:// ou spécifiés dans le paramètre allowPaths.
False Des valeurs sont spécifiées.

Les administrateurs de cluster doivent effectuer l'une des actions suivantes lors de la création ou de la modification du cluster :

  • Désactiver l'installation de la liste d'autorisation : spécifier une valeur vide pour la configuration de la liste d'autorisation du cluster.
  • Spécifier les chemins d'accès aux listes d'autorisation : spécifier un ou plusieurs chemins d'accès aux listes d'autorisation à partir du paramètre allowPaths.

Pour en savoir plus sur le contrôle de l'admission des charges de travail privilégiées dans les règles d'administration, consultez la page Limiter les charges de travail GKE privilégiées dans les organisations.

Charges de travail privilégiées appartenant au client

En tant que client GKE, vous pouvez disposer de vos propres charges de travail spécialisées qui nécessitent plus de privilèges dans le cluster que ne le permettent les contraintes de sécurité Autopilot par défaut. Dans GKE 1.35 et versions ultérieures, vous pouvez exempter ces charges de travail des contraintes Autopilot par défaut en créant des listes d'autorisation.

Une liste d'autorisation est un fichier YAML qui définit une ressource personnalisée Kubernetes WorkloadAllowlist. La spécification d'une WorkloadAllowlist correspond à différents champs de la spécification de pod Kubernetes. Lorsque vous définissez une WorkloadAllowlist, vous faites correspondre les valeurs de la WorkloadAllowlist aux champs correspondants de la spécification de votre charge de travail privilégiée. Vous stockez les fichiers YAML dans un bucket Cloud Storage.

Pour installer ces listes d'autorisation appartenant au client dans un cluster, vous devez procéder comme suit :

  1. L'administrateur de votre organisation ajoute les chemins d'accès Cloud Storage à une règle d'administration. Pour en savoir plus, consultez la section À propos de la contrainte gérée de règle d'administration.
  2. Vous ajoutez les chemins d'accès Cloud Storage à une configuration de cluster. Pour en savoir plus, consultez la section Configuration du cluster.

Pour en savoir plus sur la création de vos propres WorkloadAllowlists, consultez la page Créer des listes d'autorisation pour les charges de travail Autopilot privilégiées.

Configuration du cluster

Pour exécuter une charge de travail privilégiée en mode Autopilot, un administrateur de cluster ajoute un ou plusieurs chemins d'accès aux listes d'autorisation approuvés à la configuration du cluster. Une fois les chemins d'accès ajoutés au cluster, les opérateurs d'application peuvent installer les listes d'autorisation et les charges de travail privilégiées correspondantes dans le cluster.

Par défaut, vous pouvez installer des listes d'autorisation à partir de partenaires Autopilot et de projets Open Source approuvés. Cet ensemble par défaut de sources approuvées pour les listes d'autorisation peut changer en raison d'une règle d'administration, comme décrit dans la section précédente. Si une règle d'administration contrôle les chemins d'accès aux listes d'autorisation approuvés, vous devez vous coordonner avec l'administrateur de votre organisation pour identifier ces chemins d'accès. Vous pouvez ensuite spécifier un ou plusieurs des chemins d'accès approuvés dans la configuration du cluster.

Pour en savoir plus sur la configuration des clusters, consultez la page Exécuter des charges de travail privilégiées dans Autopilot.

Installation de la liste d'autorisation

Pour installer une liste d'autorisation à partir d'une source approuvée dans votre cluster, vous utilisez une ressource personnalisée Kubernetes appelée AllowlistSynchronizer. Vous définissez et créez des AllowlistSynchronizers de la même manière que vous créez d'autres ressources Kubernetes telles que des pods et des déploiements. Chaque AllowlistSynchronizer comporte une liste de chemins d'accès aux listes d'autorisation que vous souhaitez installer dans le cluster.

Lorsque vous créez un AllowlistSynchronizer, GKE installe des listes d'autorisation à partir de ces chemins d'accès et les maintient à jour. Toutes les 10 minutes, GKE vérifie si des modifications ont été apportées aux fichiers de listes d'autorisation. Si une mise à jour existe, le synchroniseur installe la liste d'autorisation mise à jour dans le cluster.

Une fois que GKE a installé une liste d'autorisation basée sur un AllowlistSynchronizer, vous pouvez créer la charge de travail privilégiée correspondante dans le cluster.

Pour en savoir plus sur l'installation de listes d'autorisation dans un cluster, consultez la page Exécuter des charges de travail privilégiées dans Autopilot.

Chemins d'accès aux listes d'autorisation

Lorsque vous configurez la prise en charge des listes d'autorisation dans votre règle d'administration ou vos clusters, vous spécifiez des chemins d'accès à une ou plusieurs WorkloadAllowlists que vous avez approuvées pour l'installation. La syntaxe de ces chemins d'accès dépend de la personne qui a créé la WorkloadAllowlist, comme suit :

  • Partenaires Autopilot spécifiques et projets Open Source approuvés :

    gke://REPOSITORY_PATH/SELECTOR
    

    Remplacez les éléments suivants :

    Par exemple, le chemin d'accès suivant sélectionne n'importe quelle liste d'autorisation dans le répertoire Grafana/alloy :

    gke://Grafana/alloy/*
    
  • Charges de travail privilégiées appartenant au client :

    gs://DIRECTORY_PATH/SELECTOR
    

    Remplacez DIRECTORY_PATH par le chemin d'accès au répertoire de Cloud Storage contenant vos fichiers de listes d'autorisation. Vous pouvez spécifier plusieurs chemins d'accès.

Vous pouvez spécifier un ou plusieurs des chemins d'accès précédents dans votre règle d'administration ou votre configuration de cluster. Par exemple, vous pouvez ajouter des charges de travail partenaires GKE et des charges de travail appartenant au client à la même configuration. Vous pouvez également utiliser le caractère * pour sélectionner toutes les listes d'autorisation. Par exemple, gke://* sélectionne n'importe quelle liste d'autorisation approuvée par GKE à partir de n'importe quelle source.

Le tableau suivant décrit la configuration nécessaire dans les règles d'administration ou les clusters pour prendre en charge certains objectifs :

Objectif Configuration de la règle d'administration Configuration du cluster
Autoriser toutes les WorkloadAllowlists approuvées par GKE Procédez comme suit :
  1. Définissez le paramètre allowAnyGKEPath sur la valeur par défaut True.
  2. Laissez le paramètre allowPaths vide.
Effectuez l'une des opérations suivantes :
  • Ne configurez pas de listes d'autorisation pour votre cluster. Par défaut, tous les clusters autorisent l'installation de WorkloadAllowlists approuvées par GKE.
  • Spécifiez uniquement gke://* comme chemin d'accès approuvé lorsque vous configurez des listes d'autorisation pour votre cluster.
Autoriser uniquement des WorkloadAllowlists approuvées par GKE spécifiques Procédez comme suit :
  1. Définissez le paramètre allowAnyGKEPath sur False.
  2. Spécifiez les chemins d'accès à des WorkloadAllowlists approuvées par GKE spécifiques dans le allowPaths paramètre.
Spécifiez les chemins d'accès à des WorkloadAllowlists approuvées par GKE spécifiques lorsque vous créez ou mettez à jour un cluster. Une règle d'administration peut limiter les chemins d'accès approuvés par GKE que vous pouvez spécifier.
Autoriser uniquement les WorkloadAllowlists gérées par le client Procédez comme suit :
  1. Définissez le paramètre allowAnyGKEPath sur False.
  2. Spécifiez les chemins d'accès aux WorkloadAllowlists gérées par le client dans le allowPaths paramètre.
Spécifiez les chemins d'accès aux WorkloadAllowlists gérées par le client lorsque vous créez ou mettez à jour un cluster. Les chemins d'accès que vous spécifiez doivent se trouver dans le allowPaths paramètre d'une règle d'administration.
Empêcher l'utilisation de WorkloadAllowlists Procédez comme suit :
  1. Définissez le paramètre allowAnyGKEPath sur False.
  2. Laissez le paramètre allowPaths vide.
Définissez une chaîne vide "" comme chemin d'accès approuvé lorsque vous créez ou mettez à jour un cluster.

Étape suivante