Ejecutar un vTPM en cargas de trabajo de Confidential GKE Nodes

En esta página se explica cómo usar módulos de plataforma de confianza virtuales (vTPMs) con cargas de trabajo estándar de Google Kubernetes Engine (GKE) que se ejecutan en nodos confidenciales de GKE. Los vTPMs proporcionan integridad de la plataforma junto con otras funciones de seguridad, como la certificación remota, el sellado de secretos y la generación de números aleatorios. En esta página, aprenderás a instalar un complemento de dispositivo y a hacer que los vTPMs sean visibles para las aplicaciones de GKE.

Esta página está dirigida a ingenieros de seguridad que quieran acceder de forma remota a las funciones de seguridad de los vTPMs en aplicaciones de GKE.

Antes de leer esta página, asegúrese de que conoce las siguientes funciones:

Antes de empezar

Antes de empezar, asegúrate de que has realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.

Limitaciones

Solo puedes hacer que los vTPMs sean visibles para las aplicaciones de GKE en nodos de Confidencial GKE que usen AMD SEV como tecnología de computación confidencial. No se admiten Intel TDX ni AMD SEV-SNP.

Disponibilidad

Puedes usar nodos de Confidential GKE Node en las siguientes condiciones:

  • En zonas y regiones con instancias N2D o C2D disponibles.

  • Imágenes de nodo que usan Container-Optimized OS con containerd (cos_containerd).

Crear un clúster de Confidential GKE Nodes

Puedes crear un clúster con los nodos confidenciales de GKE habilitados mediante la CLI de gcloud o la Google Cloud consola. Si habilitas los nodos confidenciales de GKE a nivel de clúster, todos los nodos del clúster se convertirán en VMs confidenciales.

gcloud

Crea un clúster que utilice AMD SEV como tecnología de Confidential Computing:

gcloud container clusters create CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --confidential-node-type=SEV

Haz los cambios siguientes:

  • CLUSTER_NAME: el nombre del nuevo clúster.
  • MACHINE_TYPE: el tipo de máquina del grupo de nodos predeterminado de tu clúster, que debe ser el tipo de máquina N2D o C2D.

Consola

  1. En la Google Cloud consola, ve a la página Crear un clúster de Kubernetes.

    Ir a Crear un clúster de Kubernetes

  2. En el menú de navegación, vaya a Clúster y haga clic en Seguridad.
  3. Selecciona Habilitar Confidential GKE Nodes.
  4. En el cuadro de diálogo de confirmación, haz clic en Hacer cambios.
  5. En el menú Tipo, selecciona AMD SEV.
  6. Para configurar otras secciones del clúster, sigue las instrucciones que se indican en Crear un clúster regional.
  7. Haz clic en Crear.

Después de crear un clúster con nodos de Confidential GKE, los grupos de nodos que se creen en este clúster solo podrán usar nodos confidenciales. No puedes crear grupos de nodos normales en clústeres con nodos confidenciales de GKE habilitados. Tampoco puedes inhabilitar los nodos confidenciales de GKE en grupos de nodos concretos cuando los habilitas a nivel de clúster.

Ejecutar un vTPM en cargas de trabajo de Confidential GKE Nodes

Para ejecutar vTPM en cargas de trabajo de nodos confidenciales de GKE, Google proporciona un DaemonSet que se aplica a los clústeres de nodos confidenciales de GKE. Ejecuta el siguiente comando para desplegar el DaemonSet:

kubectl create -f https://raw.githubusercontent.com/google/cc-device-plugin/main/manifests/cc-device-plugin.yaml

Configurar pods para ver el vTPM

Usa un límite de recursos para configurar los pods de forma que vean el vTPM. Especifica el límite de recursos como 1 en una especificación de Pod con el siguiente par clave-valor:

  • Tecla: google.com/cc
  • Valor: 1

Ejemplo de una especificación de pod que usa vTPM:

apiVersion: v1
kind: Pod
metadata:
  name: my-vtpm-pod
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 8080
      name: http
    resources:
      limits:
        google.com/cc: 1

Siguientes pasos