Encripta los datos en uso de cargas de trabajo con Confidential GKE Nodes


En esta página, se muestra cómo aplicar la encriptación de datos en uso en tus nodos y cargas de trabajo con Confidential Google Kubernetes Engine Nodes. Aplicar la encriptación puede ayudar a aumentar la seguridad de tus cargas de trabajo.

Esta página está dirigida a los especialistas en seguridad que implementan medidas de seguridad en GKE. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Roles y tareas comunes de los usuarios de GKE.

Antes de leer esta página, asegúrate de estar familiarizado con el concepto de datos en uso.

¿Qué son los Confidential GKE Nodes?

Puedes encriptar tus cargas de trabajo con nodos de GKE confidenciales o el modo confidencial para Hyperdisk Balanced.

Confidential GKE Nodes

Los Confidential GKE Nodes usan la Confidential VM de Compute Engine para proteger los datos en uso con la encriptación de memoria basada en hardware. Confidential GKE Nodes admite las siguientes tecnologías de Confidential Computing:

  • Virtualización encriptada segura (SEV) de AMD
  • Virtualización encriptada segura de AMD-Páginas anidadas seguras (SEV-SNP)
  • Extensiones de dominio de confianza Intel (TDX)

Para obtener más información sobre estas tecnologías y ayuda para elegir la tecnología óptima según tus requisitos, consulta la Descripción general de Confidential VM.

Los nodos confidenciales de GKE no cambian las medidas de seguridad que GKE aplica a los planos de control de los clústeres. Para obtener más información sobre estas medidas, consulta Seguridad del plano de control. Para obtener visibilidad sobre quién accede a los planos de control en tus proyectos de Google Cloud, usa la Transparencia de acceso.

Puedes habilitar Confidential GKE Nodes para clústeres completos, grupos de nodos específicos o cargas de trabajo específicas. En la siguiente tabla, se describen estos métodos de habilitación:

Configura Confidential GKE Nodes Descripción Comportamiento
Nivel de las cargas de trabajo Configura nodos de GKE confidenciales en un objeto ComputeClass y, luego, selecciona ese objeto ComputeClass en una carga de trabajo. GKE crea nodos que usan esa configuración para ejecutar tus Pods.

El parámetro de configuración de la carga de trabajo admite cualquiera de las siguientes tecnologías de Confidential Computing, independientemente del modo del clúster o del tipo de grupo de nodos:

  • AMD SEV
  • AMD SEV-SNP
  • Intel TDX
Nivel de clúster Este parámetro de configuración es irreversible.

Habilita los Confidential GKE Nodes cuando crees un clúster de Autopilot o Standard nuevo. Todos los nodos del clúster usan Confidential GKE Nodes. No puedes anular la configuración del clúster para grupos de nodos o cargas de trabajo individuales.

Las tecnologías admitidas a nivel del clúster dependen del modo de operación del clúster, de la siguiente manera:

  • Clústeres de Autopilot: AMD SEV
  • Clústeres estándar:
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
Nivel de grupo de nodos Habilita los Confidential GKE Nodes cuando crees un grupo de nodos nuevo en un clúster estándar. Solo puedes usar este método si Confidential GKE Nodes está inhabilitado a nivel del clúster.

Las tecnologías compatibles a nivel del grupo de nodos dependen de si el grupo de nodos usa el aprovisionamiento automático de nodos, como se indica a continuación:

  • Grupos de nodos creados manualmente:
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
  • Grupos de nodos aprovisionados automáticamente:
    • AMD SEV
    • AMD SEV-SNP

Modo confidencial para Hyperdisk Balanced

También puedes habilitar el modo confidencial para Hyperdisk Balanced en el almacenamiento de tu disco de arranque, que encripta tus datos en enclaves adicionales respaldados por hardware.

Puedes habilitar el modo confidencial para Hyperdisk Balanced cuando realices una de las siguientes acciones:

  • Crea un clúster nuevo
  • Crear un grupo de nodos nuevo

No puedes actualizar un clúster o un grupo de nodos existente para cambiar el parámetro de configuración del modo confidencial para Hyperdisk Balanced.

En la siguiente tabla, se muestra el comportamiento de GKE que se aplica cuando habilitas el modo confidencial para el parámetro de configuración Hyperdisk Balanced a nivel del clúster o del grupo de nodos:

Parámetro de configuración del modo confidencial para Hyperdisk Balanced Cómo configurar Comportamiento
Nivel de clúster Crea un clúster nuevo Solo el grupo de nodos predeterminado del clúster usará el parámetro de configuración del modo confidencial para Hyperdisk Balanced. No puedes hacer lo siguiente:
  • Inhabilita el modo confidencial para el parámetro de configuración de Hyperdisk Balanced en un grupo de nodos existente en el clúster
  • Habilita el modo confidencial para el parámetro de configuración de Hyperdisk Balanced en clústeres existentes
Nivel de grupo de nodos Crear un grupo de nodos nuevo Puedes configurar el parámetro de configuración del modo confidencial para Hyperdisk Balanced en cualquier grupo de nodos nuevo en el momento de la creación. No puedes actualizar los grupos de nodos existentes para que usen el parámetro de configuración del modo confidencial de Hyperdisk Balanced.

Precios

Se aplican los siguientes precios, según cómo configures los Confidential GKE Nodes:

Precios de Confidential GKE Nodes
A nivel de la carga de trabajo

En las cargas de trabajo de Autopilot, se aplican los siguientes costos:

  • Facturación basada en nodos de Autopilot para las series de máquinas de Compute Engine en las que se ejecutan los Pods. Para obtener más información, consulta la sección "Pods que tienen requisitos de hardware específicos" en Precios de Google Kubernetes Engine.
  • Precios de Confidential GKE Nodes Para obtener más información, consulta la sección "Precios de Confidential GKE Nodes en GKE Autopilot" en Precios de Confidential VMs.

En las cargas de trabajo estándar, se aplican los siguientes costos:

Nivel de clúster

En los clústeres de Autopilot, se aplican los siguientes costos:

  • Precios de la clase de procesamiento balanceada, ya que la serie de máquinas predeterminada en el clúster cambia a N2D Para obtener más información, consulta la sección “Pods de clase de procesamiento equilibrada y de expansión horizontal” en Precios de Google Kubernetes Engine.
  • Precios de Confidential GKE Nodes Para obtener más información, consulta la sección "Precios de Confidential GKE Nodes en GKE Autopilot" en Precios de Confidential VMs.

En los clústeres de Standard, se aplican los siguientes costos:

Nivel de grupo de nodos

En los grupos de nodos estándar, se aplican los siguientes costos:

Además, los Confidential GKE Nodes pueden generar un poco más de datos de registro en el inicio que los nodos que no son Confidential GKE Nodes. Para obtener más información sobre los precios de los registros, consulta Precios de Google Cloud Observability.

Antes de comenzar

Antes de comenzar, asegúrate de haber 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, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta gcloud components update para obtener la versión más reciente.

Requisitos

Confidential GKE Nodes tiene los siguientes requisitos:

  • Los clústeres de Autopilot deben ejecutar la versión 1.30.2 de GKE o una posterior.
  • Los clústeres estándar deben ejecutar una de las siguientes versiones de GKE, según la tecnología de Confidential Computing que elijas:

    • AMD SEV: Cualquier versión de GKE
    • AMD SEV-SNP: 1.32.2-gke.1297000 o versiones posteriores
    • Intel TDX: 1.32.2-gke.1297000 o posterior
  • Para habilitar los nodos confidenciales de GKE a nivel de la carga de trabajo, los clústeres de Autopilot y Standard deben ejecutar la versión 1.33.3-gke.1392000 o posterior de GKE.

  • Los nodos deben usar un tipo de máquina que admita la tecnología de Confidential Computing que elijas. Para obtener más información, consulta Tipos de máquinas, CPU y zonas.

  • Los planos de control y los nodos del clúster deben estar en una ubicación que admita la tecnología de Confidential Computing que elijas. Para obtener más información, consulta Cómo ver las zonas admitidas.

Configura Confidential GKE Nodes a nivel de la carga de trabajo

Para habilitar Confidential GKE Nodes en cargas de trabajo individuales, debes usar un objeto ComputeClass. Las ComputeClasses son recursos personalizados de Kubernetes que te permiten definir los atributos de los nodos nuevos que crea GKE y controlar el comportamiento de resguardo si el hardware no está disponible. Las ComputeClasses admiten todas las tecnologías de Confidential Computing disponibles para GKE, incluso si una tecnología específica no se admite a nivel del clúster o del grupo de nodos.

Para configurar Confidential GKE Nodes a nivel de la carga de trabajo, sigue estos pasos:

  1. Opcional: En el caso de los clústeres de GKE estándar, habilita el aprovisionamiento automático de nodos para el clúster. En el caso de los clústeres de Autopilot, omite este paso.

    Si decides usar ComputeClasses solo con grupos de nodos creados manualmente, también debes configurar manualmente los taints y las etiquetas de nodos en esos grupos de nodos. Esta configuración manual adicional puede hacer que notes menos beneficios por usar una ComputeClass para crear Confidential GKE Nodes.

  2. Guarda el siguiente manifiesto de ComputeClass como un archivo YAML. Para obtener más información sobre los campos y valores admitidos para ComputeClasses, consulta la CustomResourceDefinition de ComputeClass.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      nodePoolConfig:
        confidentialNodeType: CONFIDENTIAL_COMPUTE_TECHNOLOGY
      nodePoolAutoCreation:
        enabled: true
      activeMigration:
        optimizeRulePriority: true
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2']
      priorities:
      - machineFamily: MACHINE_SERIES
      - machineType: MACHINE_TYPE
      whenUnsatisfiable: DoNotScaleUp
    

    Reemplaza lo siguiente:

    • COMPUTE_CLASS: Es un nombre para tu nueva clase de procesamiento.
    • CONFIDENTIAL_COMPUTE_TECHNOLOGY: Es la tecnología de Confidential Computing que se usará. Se admiten los siguientes valores:

      • SEV para AMD SEV
      • SEV_SNP para AMD SEV-SNP
      • TDX para Intel TDX
    • ZONE1,ZONE2,...: Son las zonas en las que se crearán los nodos, como ['us-central1-a','us-central1-b']. Especifica las zonas que admiten la tecnología de Confidential Computing que especificaste. Para obtener más información, consulta Cómo ver las zonas admitidas.

    • MACHINE_SERIES: Es la serie de máquinas para los nodos, como n2d. Especifica una serie de máquinas que admita la tecnología de Confidential Computing que especificaste. Para obtener más información, consulta Tipos de máquinas, CPU y zonas.

    • MACHINE_TYPE el tipo de máquina para los nodos, como n2d-standard-4. Especifica un tipo de máquina que admita la tecnología de Confidential Computing que especificaste. Para obtener más información, consulta Tipos de máquinas, CPU y zonas.

    Este manifiesto incluye el campo spec.nodePoolAutoCreation con un valor de enabled: true, lo que permite que GKE cree grupos de nodos nuevos con el aprovisionamiento automático de nodos.

  3. Crea el objeto ComputeClass en tu clúster:

    kubectl apply -f PATH_TO_COMPUTE_CLASS_MANIFEST
    

    Reemplaza PATH_TO_COMPUTE_CLASS_MANIFEST por la ruta de acceso al archivo de manifiesto de ComputeClass.

  4. Guarda el siguiente manifiesto de Deployment como un archivo YAML:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "4Gi"

  5. Crea el Deployment:

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    Reemplaza PATH_TO_DEPLOYMENT_MANIFEST por la ruta de acceso al archivo de manifiesto de la Deployment.

Los nodos nuevos que GKE crea para esta carga de trabajo usan la tecnología de Confidential Computing que especificaste. Estos nodos se ejecutan en una de las zonas que seleccionaste, en un tipo de máquina que definiste en ComputeClass. GKE agrega taints y etiquetas de nodos para que solo los Pods que seleccionen la misma ComputeClass puedan ejecutarse en los nodos.

Configura Confidential GKE Nodes a nivel del clúster

Puedes habilitar Confidential GKE Nodes para todo un clúster de Autopilot o Standard, lo que significa que cada nodo de los clústeres usa Confidential GKE Nodes. Como resultado, todas las cargas de trabajo que implementes en ese clúster se ejecutarán en Confidential GKE Nodes. No puedes anular la configuración del clúster en cargas de trabajo o grupos de nodos individuales.

Crea un clúster de Autopilot nuevo

Los clústeres de Autopilot solo admiten AMD SEV a nivel del clúster. Cuando habilitas los Confidential GKE Nodes, la serie de máquinas predeterminada en el clúster de Autopilot cambia a N2D. Todas tus cargas de trabajo se ejecutan en estos nodos confidenciales sin necesidad de cambiar los manifiestos de carga de trabajo.

  • Ejecuta el siguiente comando:

    gcloud container clusters create-auto CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-confidential-nodes
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Es el nombre del clúster de Autopilot.
    • CONTROL_PLANE_LOCATION: Es la región de Compute Engine para el plano de control del clúster, como us-central1.

    El clúster debe ejecutar la versión 1.30.2 o una posterior. Para obtener más información, consulta Crea un clúster de Autopilot con un canal y una versión de lanzamiento específicos.

Crea un clúster estándar nuevo

Puedes especificar una tecnología de Confidential Computing para tus nodos cuando creas un clúster de Standard. Especificar la tecnología cuando creas un clúster tiene los siguientes efectos:

  • En ese clúster, solo puedes crear grupos de nodos o cargas de trabajo que usen Confidential GKE Nodes.
  • No puedes actualizar el clúster para inhabilitar los Confidential GKE Nodes.
  • No puedes anular la tecnología de Confidential Computing a nivel del clúster en cargas de trabajo o grupos de nodos individuales.

La configuración de un parámetro de Confidential Computing a nivel del clúster es permanente. Por lo tanto, considera los siguientes casos de uso antes de crear tu clúster:

Para crear un clúster en modo estándar que use Confidential GKE Nodes, selecciona una de las siguientes opciones:

gcloud

Al crear un clúster nuevo, especifica la opción --confidential-node-type en la CLI de gcloud:

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --machine-type=MACHINE_TYPE \
    --node-locations=ZONE1,ZONE2,... \
    --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY

Reemplaza lo siguiente:

  • CLUSTER_NAME: El nombre de tu clúster.
  • LOCATION: Es la ubicación de Compute Engine para el plano de control del clúster. La ubicación debe admitir la tecnología de Confidential Computing que especifiques. Para obtener más información, consulta la sección Disponibilidad.
  • MACHINE_TYPE: Es un tipo de máquina que admite la tecnología de Confidential Computing que especificas. Para obtener más información, consulta la sección Disponibilidad.
  • ZONE1,ZONE2,...: Es una lista separada por comas de las zonas de la región del plano de control que admiten la nueva tecnología de Confidential Computing. Para obtener más información, consulta Cómo ver las zonas admitidas.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: Es la tecnología de Confidential Computing que se usará. Se admiten los siguientes valores:

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

También puedes usar la marca --enable-confidential-nodes en el comando de creación del clúster. Si solo especificas esta marca en tu comando, el clúster usará AMD SEV. El tipo de máquina que especifiques en el comando debe ser compatible con AMD SEV. Sin embargo, si especificas la marca --confidential-node-type en el mismo comando, GKE usa el valor que especificas en la marca --confidential-node-type.

Console

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

    Ir a Crea un clúster de Kubernetes

  2. En el menú de navegación, en la sección Clúster, haz clic en Seguridad.

  3. Selecciona la casilla de verificación Habilitar Confidential GKE Node.

  4. En el diálogo Cambios necesarios, haz clic en Hacer cambios.

  5. En el menú Tipo, selecciona la tecnología de Confidential Computing que deseas usar.

    Si la tecnología que seleccionas requiere una serie de máquinas de Compute Engine específica, aparecerá un diálogo. Haz clic en Realizar cambios para actualizar la serie de máquinas del grupo de nodos.

  6. En el menú de navegación, en la sección Grupos de nodos, haz clic en default-pool.

  7. En el panel Detalles del grupo de nodos, haz lo siguiente:

    1. Selecciona la casilla de verificación Especificar las ubicaciones de los nodos. Aparecerá una lista de las zonas de la región del clúster.
    2. Selecciona las casillas de verificación de las zonas que admiten la tecnología de Confidential Computing que seleccionaste para los nodos. Para obtener más información, consulta Cómo ver las zonas admitidas.
  8. Haz clic en Crear.

Para obtener más información sobre la creación de clústeres, consulta Crea un clúster regional.

En el caso de cualquier grupo de nodos creado con el parámetro de configuración del modo confidencial para Hyperdisk Balanced, solo los nodos del grupo de nodos están restringidos a la configuración. Para cualquier grupo de nodos nuevo que se cree en el clúster, debes configurar el modo confidencial durante la creación.

Configura el aprovisionamiento automático de nodos

Puedes configurar el aprovisionamiento automático de nodos para usar Confidential GKE Nodes en grupos de nodos aprovisionados automáticamente. El aprovisionamiento automático de nodos admite las siguientes tecnologías de Confidential Computing:

  • AMD SEV
  • AMD SEV-SNP

Para usar Confidential GKE Nodes con el aprovisionamiento automático de nodos, especifica la marca --enable-confidential-nodes de gcloud CLI cuando crees un clúster. Se aplican las siguientes consideraciones adicionales:

  • Cuando crees el clúster, elige una tecnología de Confidential Computing que admita el aprovisionamiento automático de nodos. Esta elección es irreversible a nivel del clúster.
  • Cuando habilitas el aprovisionamiento automático de nodos en un clúster existente, el clúster ya debe usar una tecnología de Confidential GKE Nodes que admita el aprovisionamiento automático de nodos.
  • Cuando implementes cargas de trabajo, verifica que estas seleccionen la tecnología de Confidential Computing del clúster y una serie de máquinas compatible con esa tecnología.

Configura Confidential GKE Nodes a nivel del grupo de nodos

Puedes habilitar Confidential GKE Node en grupos de nodos específicos si Confidential GKE Node está inhabilitado a nivel de clúster.

Se debe especificar el modo confidencial para el parámetro de configuración de Hyperdisk Balanced durante la solicitud de creación del grupo de nodos.

Crear un grupo de nodos nuevo

Para crear un grupo de nodos nuevo con Confidential GKE Nodes habilitado, selecciona una de las siguientes opciones:

gcloud

Ejecuta el siguiente comando:

gcloud container node-pools create NODE_POOL_NAME \
    --location=LOCATION \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --node-locations=ZONE1,ZONE2,... \
    --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY

Reemplaza lo siguiente:

  • NODE_POOL_NAME: es el nombre de tu grupo de nodos nuevo.
  • LOCATION: Es la ubicación de tu grupo de nodos nuevo. La ubicación debe admitir la tecnología de Confidential Computing que especifiques. Para obtener más detalles, consulta la sección Disponibilidad.
  • CLUSTER_NAME: El nombre de tu clúster.
  • MACHINE_TYPE: Es un tipo de máquina que admite la tecnología de Confidential Computing que especificas. Para obtener más detalles, consulta la sección Disponibilidad.
  • ZONE1,ZONE2,...: Es una lista separada por comas de las zonas de la región del clúster que admiten la nueva tecnología de Confidential Computing. Para obtener más información, consulta Cómo ver las zonas admitidas.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: Es la tecnología de Confidential Computing que se usará. Se admiten los siguientes valores:

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

También puedes usar la marca --enable-confidential-nodes en el comando de creación del clúster. Si solo especificas esta marca en tu comando, el clúster usará AMD SEV. El tipo de máquina que especifiques en el comando debe ser compatible con AMD SEV. Sin embargo, si especificas la marca --confidential-node-type en el mismo comando, GKE usa el valor que especificas en la marca --confidential-node-type.

Console

  1. En la consola de Google Cloud , accede a la página de los clústeres de Kubernetes.

    Ir a clústeres de Kubernetes

  2. Haz clic en el nombre de tu clúster Standard.

  3. Haz clic en Agregar grupo de nodos.

  4. En el menú de navegación, haz clic en Seguridad.

  5. En el panel Seguridad del nodo, haz lo siguiente:

    1. Selecciona la casilla de verificación Habilitar Confidential GKE Node.
    2. En el diálogo Cambios necesarios, haz clic en Hacer cambios.
    3. En el menú Tipo, selecciona la tecnología de Confidential Computing que deseas usar.

      Si la tecnología que seleccionas requiere una serie de máquinas de Compute Engine específica, aparecerá un diálogo. Haz clic en Realizar cambios para actualizar la serie de máquinas del grupo de nodos.

  6. En el menú de navegación, haz clic en Detalles del grupo de nodos.

  7. En el panel Detalles del grupo de nodos, haz lo siguiente:

    1. Selecciona la casilla de verificación Especificar las ubicaciones de los nodos. Aparecerá una lista de las zonas de la región del clúster.
    2. Selecciona las casillas de verificación de las zonas que admiten la tecnología de Confidential Computing que seleccionaste para los nodos. Para obtener más información, consulta Cómo ver las zonas admitidas.
  8. Opcional: Configura otros parámetros para tu grupo de nodos.

  9. Haz clic en Crear.

Actualiza un grupo de nodos existente

Este cambio requiere volver a crear los nodos, lo que puede causar interrupciones en tus cargas de trabajo en ejecución. Para obtener detalles sobre este cambio específico, busca la fila correspondiente en la tabla de cambios manuales que recrean los nodos con una estrategia de actualización de nodos sin respetar las políticas de mantenimiento. Para obtener más información sobre las actualizaciones de nodos, consulta Planificación de interrupciones por actualizaciones de nodos.

Puedes actualizar los grupos de nodos existentes para que usen Confidential GKE Nodes o para cambiar la tecnología de Confidential Computing que usan los nodos. El grupo de nodos debe cumplir con todos los siguientes requisitos:

  • Los nodos usan un tipo de máquina que admite la tecnología de Confidential Computing elegida.
  • Los nodos se ejecutan en zonas que admiten la tecnología de Confidential Computing elegida.

Dado que la disponibilidad del tipo de máquina y la ubicación pueden variar entre las tecnologías de Confidential Computing, es posible que debas actualizar estos atributos para tu grupo de nodos antes de habilitar una tecnología específica de Confidential Computing.

Para actualizar un grupo de nodos existente para usar Confidential GKE Nodes, selecciona una de las siguientes opciones:

gcloud

Puedes usar gcloud CLI para habilitar Confidential GKE Nodes en un grupo de nodos o para cambiar la tecnología de Confidential Computing de los nodos.

  1. Si el grupo de nodos ya usa Confidential GKE Nodes, inhabilita Confidential GKE Nodes. Espera a que se complete la operación de actualización del grupo de nodos.
  2. Cambia el tipo de máquina del grupo de nodos y las ubicaciones de los nodos a valores admitidos para la nueva tecnología de Confidential Computing:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CLUSTER_LOCATION \
        --machine-type=MACHINE_TYPE \
        --node-locations=ZONE1,ZONE2,...
    

    Reemplaza lo siguiente:

    • NODE_POOL_NAME: Es el nombre del grupo de nodos existente.
    • CLUSTER_NAME: el nombre del clúster
    • CLUSTER_LOCATION: Es la ubicación del clúster.
    • MACHINE_TYPE: Es un tipo de máquina que admite la nueva tecnología de Confidential Computing. Para obtener más información, consulta la sección Disponibilidad.
    • ZONE1,ZONE2,...: Es una lista separada por comas de las zonas de la región del clúster que admiten la nueva tecnología de Confidential Computing. Para obtener más información, consulta Cómo ver las zonas admitidas.
  3. Actualiza el grupo de nodos con la tecnología de Confidential Computing que se usará:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CLUSTER_LOCATION \
        --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY
    

    Reemplaza CONFIDENTIAL_COMPUTE_TECHNOLOGY por la tecnología de Confidential Computing que se usará. Se admiten los siguientes valores:

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

Console

Solo puedes actualizar un grupo de nodos existente para usar Confidential GKE Node si el tipo de máquina del grupo de nodos es compatible con la tecnología de Confidential Computing que elegiste. Si los nodos no usan un tipo de máquina compatible, usa las instrucciones de gcloud CLI que se indican en esta sección.

  1. En la consola de Google Cloud , accede a la página de los clústeres de Kubernetes.

    Ir a clústeres de Kubernetes

  2. Haz clic en el nombre de tu clúster Standard.

  3. Haz clic en la pestaña Nodos.

  4. Haz clic en el nombre del grupo de nodos que deseas modificar.

  5. En la página Detalles del grupo de nodos, haz clic en Editar. Se abrirá el panel Editar grupo de nodos.

  6. En la sección Zonas, verifica que las zonas seleccionadas admitan la tecnología de Confidential Computing. Para obtener más información, consulta Cómo ver las zonas admitidas.

    Si una zona seleccionada no admite la tecnología, haz lo siguiente:

    1. Desmarca la casilla de verificación de la zona no admitida.
    2. Opcional: Selecciona las casillas de verificación de otras zonas admitidas.
    3. Haz clic en Guardar. Espera a que se complete la operación de actualización del grupo de nodos.
    4. Haz clic en Editar para volver a abrir el panel Editar grupo de nodos.
  7. En la sección Seguridad, selecciona la casilla de verificación Habilitar Confidential GKE Nodes.

  8. En el menú Tipo, selecciona la tecnología de Confidential Computing para los nodos.

  9. Haz clic en Guardar.

Coloca cargas de trabajo solo en grupos de nodos confidenciales

Si habilitas Confidential GKE Nodes a nivel del clúster, todas tus cargas de trabajo se ejecutarán en nodos confidenciales. No es necesario que realices cambios en tus manifiestos. Sin embargo, si habilitas Confidential GKE Node solo para grupos de nodos específicos del modo estándar a nivel del grupo de nodos, debes expresar de forma declarativa que tus cargas de trabajo solo deben ejecutarse en grupos de nodos con Confidential GKE Node.

  • Para requerir que una carga de trabajo se ejecute en una tecnología de Confidential Computing específica, usa un selector de nodos con la etiqueta cloud.google.com/gke-confidential-nodes-instance-type, como en el siguiente ejemplo:

    apiVersion: v1
    kind: Pod
    spec:
    # For readability, lines are omitted from this example manifest
      nodeSelector:
        cloud.google.com/gke-confidential-nodes-instance-type: "CONFIDENTIAL_COMPUTE_SELECTOR"
    

    Reemplaza CONFIDENTIAL_COMPUTE_SELECTOR por el nombre de la tecnología que usa el grupo de nodos. Este campo admite los siguientes valores, que debes especificar en mayúsculas:

    • SEV: AMD SEV
    • SEV_SNP: AMD SEV-SNP
    • TDX: Intel TDX
  • Para permitir que una carga de trabajo se ejecute en cualquier nodo confidencial, independientemente de la tecnología de Confidential Computing, usa una regla de afinidad de nodos, como en el siguiente ejemplo:

    apiVersion: v1
    kind: Pod
    spec:
      containers:
      - name: confidential-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.google.com/gke-confidential-nodes-instance-type
                operator: Exists
    
  • Para permitir que una carga de trabajo se ejecute en nodos que usan solo un subconjunto de las tecnologías de Confidential Computing disponibles, usa una regla de afinidad de nodos similar al siguiente ejemplo:

    apiVersion: v1
    kind: Pod
    spec:
      containers:
      - name: confidential-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.google.com/gke-confidential-nodes-instance-type
                operator: In
                values:
                - SEV
                - SEV_SNP
                - TDX
    

    En el campo values, especifica solo las tecnologías de Confidential Computing en las que deseas ejecutar la carga de trabajo.

Verifica que Confidential GKE Nodes esté habilitado

Puedes verificar si tus clústeres o nodos usan Confidential GKE Nodes inspeccionando los clústeres, los grupos de nodos, los nodos o las instancias de Compute Engine.

Verificación para clústeres

Selecciona una de las siguientes opciones:

gcloud

Describe el clúster:

gcloud container clusters describe CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format='yaml(confidentialNodes.confidentialInstanceType)'

Si Confidential GKE Nodes está habilitado, el resultado es similar al siguiente:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

Console

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

    Ir a clústeres de Kubernetes

  2. Haz clic en el nombre del clúster que deseas inspeccionar.

  3. En la sección Seguridad, verifica que el campo Confidential GKE Nodes tenga el valor Habilitado.

Verifica los grupos de nodos

Selecciona una de las siguientes opciones:

gcloud

Describe el grupo de nodos:

gcloud container node-pools describe NODE_POOL_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format='yaml(confidentialNodes.confidentialInstanceType,enableConfidentialStorage)'

Si Confidential GKE Nodes está habilitado, el resultado es similar al siguiente:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

Si también está habilitado el modo confidencial para Hyperdisk Balanced, el resultado es similar al siguiente:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR
enableConfidentialStorage: true

Console

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

    Ir a clústeres de Kubernetes

  2. Haz clic en el nombre del clúster que deseas inspeccionar.

  3. Haz clic en el nombre de un grupo de nodos.

  4. En la sección Seguridad, verifica que el campo Confidential GKE Nodes tenga el valor Habilitado.

Verifica un nodo específico

  1. Busca el nombre del nodo:

    kubectl get nodes
    
  2. Describe el nodo:

    kubectl describe NODE_NAME
    

    Reemplaza NODE_NAME por el nombre de un nodo para inspeccionar.

    El resultado es similar a este:

    Name:               gke-cluster-1-default-pool-affsf335r-asdf
    Roles:              <none>
    Labels:             cloud.google.com/gke-boot-disk=pd-balanced
                        cloud.google.com/gke-container-runtime=containerd
                        cloud.google.com/gke-confidential-nodes-instance-type=CONFIDENTIAL_COMPUTE_SELECTOR
                        cloud.google.com/gke-nodepool=default-pool
                        cloud.google.com/gke-os-distribution=cos
                        cloud.google.com/machine-family=e2
    # lines omitted for clarity
    

    En este resultado, la etiqueta de nodo cloud.google.com/gke-confidential-nodes-instance-type indica que el nodo es confidencial.

Establece restricciones de políticas de la organización

Puedes definir una restricción de política de la organización para garantizar que todos los recursos de VM creados en tu organización sean instancias de Confidential VMs. Para GKE, puedes personalizar la restricción Restringir el procesamiento no confidencial para exigir que todos los clústeres nuevos se creen con una de las tecnologías de Confidential Computing disponibles habilitadas. Agrega el nombre del servicio de la API container.googleapis.com a la lista de denegación cuando apliques restricciones de políticas de la organización, como en el siguiente ejemplo:

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

Reemplaza PROJECT_ID con el ID del proyecto.

Crea un PersistentVolume para el modo confidencial de Hyperdisk Balanced

Para obtener orientación sobre los valores permitidos de capacidad de procesamiento o IOPS, consulta Planifica el nivel de rendimiento del volumen de Hyperdisk.

En los siguientes ejemplos, se muestra cómo puedes crear una StorageClass de modo confidencial para Hyperdisk Balanced para cada tipo de Hyperdisk:

Hiperdisco balanceado

  1. Guarda el siguiente manifiesto como un archivo llamado 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"
    

    Reemplaza lo siguiente:

    • KMS_PROJECT_ID: Es el proyecto que posee la clave de Cloud KMS
    • REGION: Es la región en la que se encuentra el disco.
    • KEY_RING: es el nombre del llavero de claves que incluye la clave.
    • HSM_KEY_NAME: Es el nombre de la clave del HSM que se usa para encriptar el disco.
  2. Crea la StorageClass:

    kubectl create -f hdb-example-class.yaml
    
  3. Crea un reclamo de volumen persistente de Hyperdisk para GKE que use tu volumen de modo confidencial para Hyperdisk Balanced.

Para encontrar el nombre de la StorageClass disponible en tu clúster, ejecuta el siguiente comando:

kubectl get sc

Limitaciones

Confidential GKE Nodes tienen las siguientes limitaciones:

El modo confidencial para Hyperdisk Balanced tiene las siguientes limitaciones:

Limitaciones de la migración en vivo

Las Confidential VMs de Compute Engine que usan el tipo de máquina N2D y la tecnología de Confidential Computing de AMD SEV admiten la migración en vivo, lo que minimiza la posible interrupción de la carga de trabajo a causa del evento de mantenimiento del host. La migración en vivo se produce en las siguientes versiones de GKE:

  • 1.27.10-gke.1218000 y versiones posteriores
  • 1.28.6-gke.1393000 y versiones posteriores
  • 1.29.1-gke.1621000 y versiones posteriores

Si tus grupos de nodos ya ejecutaban una versión compatible cuando se agregó la migración en vivo, actualiza los grupos de nodos de forma manual a la misma versión compatible o a una diferente. La actualización de los nodos activa la recreación de nodos, y los nodos nuevos tienen habilitada la migración en vivo.

Para obtener detalles sobre qué tipos de máquinas de Compute Engine admiten la migración, consulta Parámetros de configuración compatibles.

Si se trata de un evento de mantenimiento del host, en un nodo que no admite la migración en vivo, el nodo ingresa en un estado de NotReady. Los Pods en ejecución experimentarán interrupciones hasta que el nodo vuelva a estar listo. Si el mantenimiento lleva más de cinco minutos, GKE podría intentar volver a crear los Pods en otros nodos.

Inhabilitar Confidential GKE Node

Este cambio requiere volver a crear los nodos, lo que puede causar interrupciones en tus cargas de trabajo en ejecución. Para obtener detalles sobre este cambio específico, busca la fila correspondiente en la tabla de cambios manuales que recrean los nodos con una estrategia de actualización de nodos sin respetar las políticas de mantenimiento. Para obtener más información sobre las actualizaciones de nodos, consulta Planificación de interrupciones por actualizaciones de nodos.

Solo puedes inhabilitar Confidential GKE Nodes en grupos de nodos del modo estándar. Si el grupo de nodos se encuentra en un clúster que usa Confidential GKE Nodes a nivel del clúster, no puedes inhabilitar la función a nivel del grupo de nodos. Para inhabilitar Confidential GKE Nodes, selecciona una de las siguientes opciones:

gcloud

Ejecuta el siguiente comando:

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

Console

  1. En la consola de Google Cloud , accede a la página de los clústeres de Kubernetes.

    Ir a clústeres de Kubernetes

  2. Haz clic en el nombre de tu clúster Standard.

  3. Haz clic en la pestaña Nodos.

  4. Haz clic en el nombre del grupo de nodos que deseas modificar.

  5. En la página Detalles del grupo de nodos, haz clic en Editar. Se abrirá el panel Editar grupo de nodos.

  6. En la sección Seguridad, desmarca la casilla de verificación Habilitar Confidential GKE Node.

  7. Haz clic en Guardar.

¿Qué sigue?