Chiffrer les données de charge de travail utilisées à l'aide des nœuds Confidential Google Kubernetes Engine Node


Cette page vous explique comment appliquer le chiffrement des données utilisées dans vos nœuds et vos charges de travail à l'aide des nœuds Confidential Google Kubernetes Engine (GKE) Node.

Présentation

Les nœuds Confidential GKE Node s'appuient sur les Confidential VMs Compute Engine à l'aide de la plate-forme AMD SEV, qui chiffre le contenu de la mémoire des VM pendant l'utilisation. Le chiffrement en cours d'utilisation est l'un des trois états du chiffrement de bout en bout.

Lorsque vous activez les nœuds Confidential GKE Node sur un cluster ou un pool de nœuds, les données des charges de travail exécutées sur les nœuds confidentiels sont chiffrées en cours d'utilisation. Pour plus de visibilité sur votre plan de contrôle, utilisez Access Transparency.

Vous pouvez activer les nœuds Confidential GKE Node lorsque vous effectuez l'une des opérations suivantes:

  • Créer un cluster
  • Créer un pool de nœuds
  • Mettre à jour un pool de nœuds existant

Vous ne pouvez pas mettre à jour un cluster existant pour modifier le paramètre "Confidential GKE Nodes" au niveau du cluster.

Le tableau suivant présente le comportement de GKE qui s'applique lorsque vous activez les nœuds Confidential GKE Node au niveau du cluster ou du pool de nœuds:

Paramètre "Confidential GKE Nodes" Procédure de configuration Comportement
Au niveau du cluster Créer un cluster Tous les nœuds du cluster d'un pool de nœuds utilisent des nœuds Confidential GKE Node. Vous ne pouvez pas effectuer les opérations suivantes :
  • Désactiver les nœuds Confidential GKE Node pour un pool de nœuds nouveau ou existant dans le cluster
  • Désactiver les nœuds Confidential GKE Node sur le cluster
  • Activer les nœuds Confidential GKE Node sur des clusters existants
Au niveau du pool de nœuds
  • Créer un pool de nœuds
  • Mettre à jour un pool de nœuds existant
Vous ne pouvez configurer des nœuds Confidential GKE Node pour les pools de nœuds que lorsque cette fonctionnalité est désactivée au niveau du cluster.

Tarifs

Le déploiement de nœuds Confidential GKE Node n'entraîne aucun coût supplémentaire, en dehors du coût des Confidential VMs de Compute Engine. Toutefois, les nœuds Confidential GKE Node sont susceptibles de générer un volume de données de journal légèrement supérieur au démarrage en comparaison aux nœuds standards. Pour en savoir plus sur la tarification des journaux, consultez la page Tarifs de Google Cloud Observability.

Disponibilité

Les nœuds Confidential GKE Node sont disponibles dans les situations suivantes :

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.

Activer les nœuds Confidential GKE Node sur des clusters

Vous pouvez créer un cluster avec des nœuds Confidential GKE Node activés à l'aide de gcloud CLI ou de la console Google Cloud. Si vous activez les nœuds Confidential GKE Node au niveau du cluster, tous les nœuds du cluster sont des Confidential VM.

gcloud

Lors de la création d'un cluster, spécifiez l'option --enable-confidential-nodes dans gcloud CLI :

gcloud container clusters create CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --enable-confidential-nodes

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom de votre nouveau cluster
  • MACHINE_TYPE : type de machine du pool de nœuds par défaut de votre cluster, qui doit être le type de machine N2D ou le type de machine C2D

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer.

  3. Dans la section Standard, cliquez sur Configurer.

  4. Dans le volet de navigation, cliquez sur Sécurité sous Cluster.

  5. Cochez la case Activer les nœuds Confidential GKE Node.

  6. Configurez le cluster selon vos besoins.

  7. Cliquez sur Créer.

Pour en savoir plus sur la création de clusters, consultez la page Créer un cluster régional.

Après la création d'un cluster avec des nœuds Confidential GKE Node, les pools de nœuds créés dans ce cluster ne peuvent utiliser que des nœuds confidentiels. Vous ne pouvez pas créer de pools de nœuds standards dans des clusters où les nœuds Confidential GKE Node sont activés. Vous ne pouvez pas non plus désactiver les nœuds Confidential GKE Node sur des pools de nœuds individuels lorsque vous activez les nœuds Confidential GKE Node au niveau du cluster.

Activer les nœuds Confidential GKE Node sur des pools de nœuds

Vous pouvez activer les nœuds Confidential GKE Node sur des pools de nœuds spécifiques si les nœuds Confidential GKE Node sont désactivés au niveau du cluster.

Créer un pool de nœuds

Pour créer un pool de nœuds avec les nœuds Confidential GKE Node activés, exécutez la commande suivante :

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --enable-confidential-nodes

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom de votre nouveau pool de nœuds.
  • CLUSTER_NAME : nom du cluster
  • MACHINE_TYPE : type de machine de votre pool de nœuds, qui doit être un type de machine N2D ou le type de machine C2D

Mettre à jour un pool de nœuds existant

Vous pouvez activer les nœuds Confidential GKE Node sur des pools de nœuds existants qui utilisent le type de machine N2D ou le type de machine C2D. Exécutez la commande ci-dessous.

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-confidential-nodes

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom de votre pool de nœuds.
  • CLUSTER_NAME : nom du cluster

Vérifier que les nœuds Confidential GKE Node sont activés

Sur des clusters

Vous pouvez vérifier que votre cluster utilise des nœuds Confidential GKE Node à l'aide de gcloud CLI ou de la console Google Cloud.

gcloud

Décrivez le cluster :

gcloud container clusters describe CLUSTER_NAME

Si les nœuds Confidential GKE Node sont activés, le résultat de la commande inclut les lignes suivantes :

confidentialNodes:
  enabled: true

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur le nom du cluster que vous souhaitez inspecter.

  3. Sous Sécurité, dans le champ Nœuds Confidential GKE Node, vérifiez que les nœuds Confidential GKE Node sont Activés.

Sur des pools de nœuds

Pour vérifier que votre pool de nœuds utilise des nœuds Confidential GKE Node, exécutez la commande suivante :

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME

Si les nœuds Confidential GKE Node sont activés, le résultat ressemble à ce qui suit :

confidentialNodes:
  enabled: true

Sur les nœuds

Pour valider la confidentialité de nœuds spécifiques, vous pouvez :

  1. vérifier que la plate-forme AMD SEV est activée, ou
  2. vérifier qu'il s'agit d'une Confidential VM à l'aide de Cloud Monitoring.

Exécuter des applications sur des nœuds Confidential GKE Node

L'approche de Google en matière d'informatique confidentielle consiste à permettre une migration Lift and Shift sans effort pour les applications existantes. Les charges de travail GKE que vous exécutez aujourd'hui peuvent s'exécuter sur des nœuds Confidential GKE Node sans modification du code.

Si vous souhaitez indiquer de manière déclarative que vos charges de travail ne doivent s'exécuter que sur des clusters avec nœuds Confidential GKE Node, vous pouvez utiliser le sélecteur de nœuds cloud.google.com/gke-confidential-nodes. Voici un exemple de spécification de pod utilisant ce sélecteur :

apiVersion: v1
kind: Pod
spec:
  containers:
  - name: my-confidential-app
    image: us-docker.pkg.dev/myproject/myrepo/my-confidential-app
  nodeSelector:
    cloud.google.com/gke-confidential-nodes: "true"

Définir des contraintes de règle d'administration

Vous pouvez définir une contrainte de règle d'administration pour vous assurer que toutes les ressources de VM créées dans votre organisation sont des instances de Confidential VM. Pour GKE, vous pouvez personnaliser la contrainte Limiter l'informatique non confidentielle pour exiger que tous les clusters soient créés avec les nœuds Confidential GKE Node. Ajoutez le nom du service d'API container.googleapis.com à la liste de refus lors de l'application des contraintes de règle d'administration, par exemple :

gcloud resource-manager org-policies deny \
    constraints/compute.restrictNonConfidentialComputing compute.googleapis.com container.googleapis.com \
    --project=PROJECT_ID

Remplacez PROJECT_ID par l'ID du projet.

Créer un PersistentVolume pour le mode confidentiel pour Hyperdisk Balanced

Pour obtenir des conseils sur les valeurs autorisées pour le débit ou les IOPS, consultez la section Planifier le niveau de performances de vos volumes Hyperdisk.

Les exemples suivants montrent comment créer une StorageClass en mode confidentiel pour les StorageClass Hyperdisk Balanced pour chaque type de volume Hyperdisk :

Volume Hyperdisk équilibré

  1. Enregistrez le fichier manifeste suivant dans un fichier nommé confidential-hdb-example-class.yaml :

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: balanced-storage
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: hyperdisk-balanced
      provisioned-throughput-on-create: "250Mi"
      provisioned-iops-on-create: "7000"
      enable-confidential-storage: true
      disk-encryption-kms-key: "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/HSM_KEY_NAME"
    

    Remplacez les éléments suivants :

    • KMS_PROJECT_ID : projet propriétaire de la clé Cloud KMS.
    • REGION : la région où se trouve le disque.
    • KEY_RING : nom du trousseau de clés qui inclut la clé
    • HSM_KEY_NAME : nom de la clé HSM utilisée pour chiffrer le disque.
  2. Créez la StorageClass :

    kubectl create -f hdb-example-class.yaml
    
  3. Créez une réclamation de volume persistant Hyperdisk pour GKE qui utilise votre mode Confidentiel pour le volume Hyperdisk équilibré.

Pour trouver le nom des StorageClasses disponibles dans votre cluster, exécutez la commande suivante :

kubectl get sc

Limites

Les nœuds Confidential GKE Node présentent les limites suivantes :

Limites de la migration à chaud

Certains types de machines Compute Engine Confidential VM sont compatibles avec la migration à chaud, qui minimise les interruptions potentielles de la charge de travail en cas d'événement de maintenance de l'hôte. La migration à chaud a lieu dans les versions GKE suivantes:

  • 1.27.10-gke.1218000 et versions ultérieures
  • 1.28.6-gke.1393000 et versions ultérieures
  • 1.29.1-gke.1621000 et versions ultérieures

Si vos pools de nœuds exécutaient déjà une version compatible lors de l'ajout de la migration à chaud, mettez à niveau manuellement les pools de nœuds vers la même version compatible ou une version différente. La mise à niveau des nœuds déclenche leur recréation, et la migration en direct est activée pour les nouveaux nœuds.

Pour en savoir plus sur les types de machines Compute Engine compatibles avec la migration à chaud, consultez la section Configurations compatibles.

Si un événement de maintenance de l'hôte se produit sur un nœud qui n'est pas compatible avec la migration à chaud, le nœud passe à l'état NotReady. L'exécution des pods entraîne des interruptions jusqu'à ce que le nœud soit à nouveau prêt. Si la maintenance prend plus de cinq minutes, GKE peut essayer de recréer les pods sur d'autres nœuds.

Désactiver les nœuds Confidential GKE Node

La désactivation des nœuds Confidential GKE Node ne fonctionne que pour les pools de nœuds sur lesquels les nœuds Confidential GKE Node sont activés. Si le cluster est créé avec des nœuds Confidential GKE Node, vous ne pouvez pas désactiver cette fonctionnalité. Exécutez la commande suivante pour désactiver les nœuds Confidential GKE Node sur un pool de nœuds :

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --no-enable-confidential-nodes

Étapes suivantes