Les clusters Google Kubernetes Engine (GKE) Autopilot appliquent diverses règles de sécurité conçues pour prévenir de nombreux vecteurs d'attaque courants. Ce document explique aux administrateurs de plate-forme comment appliquer tout ou partie de ces règles Autopilot dans les clusters Standard. Vous ne pouvez pas désactiver l'application des règles de cluster dans les clusters Autopilot, car ils sont conçus pour une stratégie de sécurité GKE de base plus élevée.
Dans les clusters Standard, vous pouvez activer et désactiver des règles spécifiques à tout moment. Les administrateurs d'organisation peuvent contrôler si des règles Autopilot spécifiques peuvent être désactivées en appliquant une contrainte personnalisée dans l'organisation, le dossier ou le projet. Vous pouvez utiliser ces règles prédéfinies pour appliquer les bonnes pratiques de sécurité sans avoir à écrire des rôles et des liaisons RBAC complexes. De nombreuses règles au niveau du cluster peuvent vous aider à améliorer la sécurité de votre cluster, même si vous n'êtes pas intéressé par l'utilisation du mode Autopilot pour le cluster ou les charges de travail. Pour en savoir plus sur les règles de cluster Autopilot disponibles, consultez la section Règles compatibles.
Points à prendre en compte pour appliquer les règles des clusters Autopilot
Alors que les clusters Autopilot appliquent toujours ces règles, les clusters Standard comportent souvent des charges de travail et des pools de nœuds existants qui peuvent enfreindre les règles que vous appliquez. Avant d'appliquer ou de désactiver une règle dans votre cluster, lisez les points suivants :
- Les modifications ne s'appliquent qu'aux nouvelles charges de travail : lorsque vous activez une règle qui s'applique aux charges de travail, les modifications ne s'appliquent qu'aux pods créés ou modifiés après l'activation de cette règle. Les pods existants qui ne respectent pas le règlement peuvent continuer à s'exécuter. Avant d'activer une règle, examinez les charges de travail existantes dans le cluster pour vérifier qu'elles respectent la contrainte de la règle.
- Les règles de pool de nœuds s'appliquent à tous les nœuds : lorsque vous activez une règle qui s'applique aux pools de nœuds de votre cluster Standard, les contraintes s'appliquent aux pools de nœuds nouveaux et existants. Si un pool de nœuds existant ne respecte pas le règlement, l'opération de mise à jour du cluster échoue. Par exemple, si vous essayez d'activer le paramètre
no-standard-node-poolsdans un cluster qui possède déjà un pool de nœuds géré par l'utilisateur, votre opération échoue. Avant d'activer une règle de pool de nœuds, examinez les pools de nœuds existants dans le cluster. - L'activation de toutes les règles active le mode Autopilot : si vous activez toutes les règles Autopilot disponibles (y compris celle qui empêche les pools de nœuds gérés par l'utilisateur), toutes les charges de travail de votre cluster ne peuvent s'exécuter qu'en mode Autopilot. Cela signifie que toutes vos charges de travail doivent respecter les contraintes de sécurité d'Autopilot et toutes les règles du cluster. Cette approche vous permet d'exécuter l'intégralité du cluster Standard en mode Autopilot, avec la possibilité de désactiver des règles spécifiques si nécessaire.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API Google Kubernetes Engine. Activer l'API Google Kubernetes Engine
- Pour utiliser Google Cloud CLI pour cette tâche, installez puis initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande
gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.
Activer des règles Autopilot spécifiques dans votre cluster
Utilisez la gcloud CLI ou l'API GKE pour activer des règles spécifiques lorsque vous créez ou mettez à jour un cluster standard. Pour ajouter des règles de cluster Autopilot spécifiques à la liste des règles que GKE applique dans le cluster, utilisez le flag --autopilot-cluster-policies avec la commande gcloud container clusters create ou la commande gcloud container clusters update.
L'exemple suivant montre comment activer des règles dans un cluster existant :
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--autopilot-cluster-policies=AUTOPILOT_POLICIES
Remplacez les éléments suivants :
CLUSTER_NAME: nom de votre cluster Standard.CONTROL_PLANE_LOCATION: région ou zone du plan de contrôle du cluster, par exempleus-central1ouus-central1-a.AUTOPILOT_POLICIES: liste de règles de cluster Autopilot séparées par une virgule à appliquer dans le cluster, telles queno-system-mutation,no-system-impersonation. Vous devez spécifier une ou plusieurs règles compatibles. Les règles que vous spécifiez sont ajoutées à la liste des règles que GKE applique déjà dans le cluster. Pour désactiver l'application d'une règle, consultez la section Désactiver des règles Autopilot spécifiques dans votre cluster.
Si la commande échoue et qu'un message d'erreur commençant par Bad value [invalid
policy]: s'affiche, vérifiez que tous les noms de règles que vous avez spécifiés figurent dans la liste des règles compatibles.
Vérifier l'application des règles
Une fois que vous avez activé une règle spécifique, vous pouvez vérifier que l'application fonctionne en essayant de créer une ressource qui enfreint cette règle. Par exemple, si vous activez la règle no-system-mutation, vous pouvez essayer de créer un pod dans l'espace de noms kube-system. GKE bloque l'opération de création de pod et affiche un message d'erreur semblable à celui-ci :
Error from server (Forbidden): pods is forbidden: User cannot create resource "pods" in API group "" in the namespace "kube-system": GKE Warden authz [denied by managed-namespaces-limitation]: the namespace "kube-system" is managed and the request's verb "create" is denied
Désactiver des règles Autopilot spécifiques dans votre cluster
Vous pouvez désactiver à tout moment l'une des règles du cluster Autopilot.
La désactivation d'une règle est utile lorsque vos exigences de sécurité ont changé ou lorsqu'un workflow existant a été interrompu lorsque vous avez activé cette règle. Pour supprimer une règle de la liste des règles appliquées par GKE dans le cluster, utilisez l'indicateur --remove-autopilot-cluster-policies avec la commande gcloud container clusters update :
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--remove-autopilot-cluster-policies=AUTOPILOT_POLICIES
Vous devez spécifier au moins une valeur pour l'indicateur --remove-autopilot-cluster-policies. Si vous spécifiez cette option sans valeur, l'opération échoue.
Si la commande échoue et qu'un message d'erreur commençant par Bad value [invalid
policy]: s'affiche, vérifiez que tous les noms de règles que vous avez spécifiés figurent dans la liste des règles compatibles.
Appliquer des règles de cluster Autopilot dans les organisations
Les administrateurs de l'organisation peuvent appliquer l'utilisation de ces règles de cluster à l'ensemble d'une organisation, d'un projet ou d'un dossier à l'aide de contraintes de règles d'administration personnalisées. Cette mesure supplémentaire peut vous aider à empêcher la suppression non autorisée ou involontaire des règles de cluster requises. Utilisez le champ ClusterPolicyConfig dans votre contrainte personnalisée, comme dans l'exemple suivant :
name: organizations/ORGANIZATION_ID/customConstraints/custom.autopilotClusterPolicies
resourceTypes:
- container.googleapis.com/Cluster
methodTypes:
- CREATE
- UPDATE
condition: "resource.ClusterPolicyConfig.no_system_mutation == true && resource.ClusterPolicyConfig.no_system_impersonation == true"
actionType: ALLOW
displayName: Autopilot policies in Standard clusters.
description: For all new and existing Standard clusters, enable the no_system_mutation and no_system_impersonation Autopilot cluster policies. For more information, see https://docs.cloud.google.com/kubernetes-engine/security/autopilot-cluster-policies-standard.
Règles acceptées
Chacune des règles Autopilot disponibles dans les clusters standards implémente une ou plusieurs bonnes pratiques de sécurité au niveau du cluster.
Les règles telles que no-system-mutation, no-system-impersonation et no-unsafe-webhooks permettent d'améliorer la sécurité de n'importe quel cluster GKE, même si vous n'êtes pas intéressé par l'utilisation du mode Autopilot.
Le tableau suivant décrit les règles Autopilot que vous pouvez activer dans les clusters standards et vous aide à vous préparer à l'application des règles :
| Nom de la règle | Description | Que faire avant d'activer la fonctionnalité ? |
|---|---|---|
no-system-mutation |
Empêchez la création ou la modification de ressources dans les espaces de noms système GKE (tels que kube-system). |
Déplacez vos pods des espaces de noms système vers vos propres espaces de noms. |
no-system-impersonation |
Bloque les tentatives d'usurpation d'identité des utilisateurs du système et empêche la création de CertificateSigningRequests à l'aide de principaux système. | Recherchez les requêtes CertificateSigningRequests non autorisées qui ont été générées pour les identités système. Si vous trouvez des CertificateSigningRequests non autorisées approuvées, effectuez une rotation des identifiants de votre cluster pour invalider les certificats. |
no-unsafe-webhooks |
Empêche les webhooks et les règles d'admission d'intercepter les ressources système critiques telles que les objets Node, les PersistentVolumes ou les CertificateSigningRequests. |
Utilisez le service Recommender pour identifier les webhook qui interceptent les ressources système. Si vous trouvez des webhooks, modifiez leur configuration. Pour en savoir plus, consultez Garantir la stabilité du plan de contrôle lors de l'utilisation de webhooks. |
no-standard-node-pools |
Empêchez l'existence de pools de nœuds gérés par l'utilisateur dans le cluster, y compris les pools de nœuds créés manuellement et automatiquement. Seuls les pools de nœuds Autopilot peuvent exister dans le cluster. | Supprimez tous les pools de nœuds non-Autopilot existants, y compris le pool de nœuds par défaut créé avec le cluster. |
Étapes suivantes
- Découvrez comment renforcer la sécurité de votre cluster.
- En savoir plus sur les autres mesures de sécurité Autopilot