Encriptar los datos de carga de trabajo en uso con nodos confidenciales de GKE


En esta página se muestra cómo aplicar el cifrado de los datos en uso en los nodos y las cargas de trabajo mediante nodos confidenciales de Google Kubernetes Engine. Aplicar el cifrado puede ayudar a aumentar la seguridad de tus cargas de trabajo.

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

Antes de leer esta página, asegúrate de que conoces el concepto de datos en uso.

¿Qué es Confidential GKE Nodes?

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

Nodos confidenciales de GKE

Los nodos confidenciales de GKE usan máquinas virtuales confidenciales de Compute Engine para proteger los datos en uso mediante el cifrado de memoria basado en hardware. Confidential GKE Nodes admite las siguientes tecnologías de Confidential Computing:

  • Virtualización segura encriptada (SEV) de AMD
  • Virtualización segura encriptada con paginación anidada segura (SEV-SNP) de AMD
  • Extensiones de dominio de confianza (TDX) de Intel

Para obtener más información sobre estas tecnologías y ayuda para elegir la tecnología óptima para tus requisitos, consulta la descripción general de las VMs confidenciales.

Confidential GKE Nodes no cambia las medidas de seguridad que GKE aplica a los planos de control de los clústeres. Para obtener información sobre estas medidas, consulta Seguridad del plano de control. Para saber quién accede a los planos de control de tus proyectos de Google Cloud, usa Transparencia de acceso.

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

Ajuste de Confidential GKE Nodes Descripción Comportamiento
Nivel de carga de trabajo Configura Confidential GKE Nodes en una ComputeClass y, a continuación, selecciona esa ComputeClass en una carga de trabajo. GKE crea nodos que usan esa configuración para ejecutar tus pods.

El ajuste de carga de trabajo admite cualquiera de las siguientes tecnologías de computación confidencial, 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 ajuste es irreversible.

Habilita los nodos confidenciales de GKE al crear un clúster Autopilot o Standard. Todos los nodos del clúster usan nodos de Confidential GKE. No puedes anular el ajuste del clúster en grupos de nodos o cargas de trabajo concretos.

Las tecnologías admitidas a nivel de clúster dependen del modo de funcionamiento del clúster, tal como se indica a continuación:

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

Las tecnologías admitidas a nivel de 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, lo que encripta tus datos en enclaves adicionales respaldados por hardware.

Puedes habilitar el modo Confidencial para Hyperdisk Balanced cuando hagas una de las siguientes acciones:

  • Crear una agrupación
  • Crear un grupo de nodos

No puedes actualizar un clúster o un grupo de nodos para cambiar el ajuste Modo confidencial de Hyperdisk Balanced.

En la siguiente tabla se muestra el comportamiento de GKE que se aplica cuando habilitas el modo Confidencial para el ajuste Hyperdisk Balanced a nivel de clúster o de grupo de nodos:

Ajuste del modo Confidencial para Hyperdisk Balanced Cómo se configura Comportamiento
Nivel de clúster Crear una agrupación Solo el grupo de nodos predeterminado del clúster usará el ajuste Modo confidencial para Hyperdisk Balanced. No puede hacer lo siguiente:
  • Inhabilitar el modo Confidencial para la configuración de Hyperdisk Balanced en un grupo de nodos de un clúster
  • Habilitar el modo Confidencial para la configuración de Hyperdisk Balanced en clústeres disponibles
Nivel de grupo de nodos Crear un grupo de nodos Puedes configurar el 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 que ya tengas para que usen el modo Confidencial para Hyperdisk Balanced.

Precios

Se aplican los siguientes precios en función de cómo configures los nodos confidenciales de GKE:

Precios de Confidential GKE Nodes
Nivel de carga de trabajo

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

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

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

Nivel de clúster

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

  • Precios equilibrados de la clase de computación, ya que la serie de máquinas predeterminada del clúster cambia a N2D. Para obtener más información, consulta la sección "Pods de clase de computación equilibrada y de escalado horizontal" de la página Precios de Google Kubernetes Engine.
  • Precios de Confidential GKE Nodes. Para obtener más información, consulta la sección "Precios de nodos confidenciales de GKE en Autopilot de GKE" en Precios de máquinas virtuales confidenciales.

En los clústeres estándar, se aplican los dos costes siguientes:

Nivel de grupo de nodos

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

Además, los nodos confidenciales de GKE pueden generar ligeramente más datos de registro al iniciarse que los nodos que no son confidenciales de GKE. Para obtener más información sobre los precios de los registros, consulta la página Precios de Google Cloud Observability.

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.

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, en función de la tecnología de Confidential Computing que elijas:

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

  • 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, CPUs y zonas.

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

Configurar nodos de Confidential GKE a nivel de carga de trabajo

Para habilitar los nodos confidenciales de GKE en cargas de trabajo concretas, debes usar un ComputeClass. Las clases de computación son recursos personalizados de Kubernetes que te permiten definir los atributos de los nuevos nodos que crea GKE y controlar el comportamiento alternativo si el hardware no está disponible. ComputeClasses admite todas las tecnologías de Confidential Computing disponibles para GKE, aunque una tecnología específica no sea compatible a nivel de clúster o de grupo de nodos.

Para configurar nodos de Confidential GKE Node a nivel de carga de trabajo, sigue estos pasos:

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

    Si decides usar ComputeClasses con grupos de nodos creados manualmente, también debes configurar manualmente los taints y las etiquetas de los nodos de esos grupos de nodos. Esta configuración manual adicional puede provocar que notes menos ventajas al usar una ComputeClass para crear nodos de GKE confidenciales.

  2. Guarda el siguiente manifiesto de ComputeClass como archivo YAML. Para obtener más información sobre los campos y valores admitidos de 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
    

    Haz los cambios siguientes:

    • COMPUTE_CLASS: el nombre de la nueva clase de cálculo.
    • CONFIDENTIAL_COMPUTE_TECHNOLOGY: la tecnología de computación confidencial que se va a usar. Se admiten los siguientes valores:

      • SEV para AMD SEV
      • SEV_SNP para AMD SEV-SNP
      • TDX para Intel TDX
    • ZONE1,ZONE2,...: 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 computación confidencial que has indicado. Para obtener más información, consulta Ver zonas admitidas.

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

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

    Este manifiesto incluye el campo spec.nodePoolAutoCreation con el valor enabled: true, que permite a GKE crear grupos de nodos mediante el aprovisionamiento automático de nodos.

  3. Crea el ComputeClass en tu clúster:

    kubectl apply -f PATH_TO_COMPUTE_CLASS_MANIFEST
    

    Sustituye PATH_TO_COMPUTE_CLASS_MANIFEST por la ruta 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 despliegue:

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    Sustituye PATH_TO_DEPLOYMENT_MANIFEST por la ruta del archivo de manifiesto de la implementación.

Los nodos que GKE crea para esta carga de trabajo usan la tecnología de Confidential Computing que has especificado. Estos nodos se ejecutan en una de las zonas que has seleccionado, en un tipo de máquina que has definido en ComputeClass. GKE añade intolerancias y etiquetas de nodo para que solo los pods que seleccionen la misma ComputeClass puedan ejecutarse en los nodos.

Configurar nodos confidenciales de GKE a nivel de clúster

Puedes habilitar los nodos confidenciales de GKE en todo un clúster Autopilot o Estándar, lo que significa que todos los nodos de los clústeres utilizan nodos confidenciales de GKE. Por lo tanto, todas las cargas de trabajo que implementes en ese clúster se ejecutarán en nodos confidenciales de GKE. No puedes anular la configuración del clúster en cargas de trabajo o grupos de nodos concretos.

Crear un clúster de Autopilot

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

  • Ejecuta el siguiente comando:

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

    Haz los cambios siguientes:

    • CLUSTER_NAME: nombre del clúster de Autopilot.
    • CONTROL_PLANE_LOCATION: la región de Compute Engine del 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 Crear un clúster de Autopilot con un canal de lanzamiento y una versión específicos.

Crear un clúster estándar

Puedes especificar una tecnología de Confidential Computing para tus nodos cuando crees un clúster estándar. Si especificas la tecnología al crear un clúster, se producirán los siguientes efectos:

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

La configuración de la opción de computación confidencial a nivel de clúster es permanente. Por lo tanto, ten en cuenta los siguientes casos prácticos antes de crear tu clúster:

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

gcloud

Cuando crees un clúster, 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

Haz los cambios siguientes:

  • CLUSTER_NAME: el nombre de tu clúster.
  • LOCATION: la ubicación de Compute Engine del 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: un tipo de máquina que admita la tecnología de Confidential Computing que especifiques. Para obtener más información, consulta la sección Disponibilidad.
  • ZONE1,ZONE2,...: lista separada por comas de las zonas de la región del plano de control que admiten la nueva tecnología de computación confidencial. Para obtener más información, consulta Ver las zonas admitidas.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: la tecnología de computación confidencial que se va a 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 de clústeres. Si solo especificas este indicador 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 especifica la marca --confidential-node-type en el mismo comando, GKE usará el valor que especifique en la marca --confidential-node-type.

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, en la sección Clúster, haga clic en Seguridad.

  3. Selecciona la casilla Habilitar Confidential GKE Nodes.

  4. En el cuadro de diálogo Cambios necesarios, haga clic en Hacer cambios.

  5. En el menú Tipo, selecciona la tecnología de computación confidencial que quieras usar.

    Si la tecnología que seleccionas requiere una serie de máquinas de Compute Engine específica, aparecerá un cuadro de diálogo. Haz clic en Hacer 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. Seleccione la casilla Especificar ubicaciones de nodos. Se mostrará una lista de las zonas de la región del clúster.
    2. Selecciona las casillas de las zonas que admitan la tecnología de computación confidencial que hayas seleccionado para los nodos. Para obtener más información, consulta Ver las zonas admitidas.
  8. Haz clic en Crear.

Para obtener más información sobre cómo crear clústeres, consulta Crear un clúster regional.

En el caso de los grupos de nodos creados con el ajuste Modo confidencial para Hyperdisk Balanced, solo los nodos del grupo de nodos están restringidos a la configuración. En el caso de los grupos de nodos que se creen en el clúster, debes configurar el modo Confidencial al crearlos.

Configurar el aprovisionamiento automático de nodos

Puedes configurar el aprovisionamiento automático de nodos para usar nodos de Confidential GKE 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 nodos de Confidential GKE Node con el aprovisionamiento automático de nodos, especifica la marca --enable-confidential-nodes de gcloud CLI al crear un clúster. Se aplican las siguientes consideraciones adicionales:

  • Cuando crees el clúster, elige una tecnología de computación confidencial que admita el aprovisionamiento automático de nodos. Esta opción es irreversible a nivel de clúster.
  • Cuando habilitas el aprovisionamiento automático de nodos en un clúster, este debe usar una tecnología de nodos de GKE confidenciales compatible con el aprovisionamiento automático de nodos.
  • Cuando despliegues cargas de trabajo, comprueba que seleccionen la tecnología de computación confidencial del clúster y una serie de máquinas compatible con esa tecnología.

Configurar nodos confidenciales de GKE a nivel de grupo de nodos

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

El modo Confidencial de Hyperdisk Balanced se debe especificar durante la solicitud de creación del grupo de nodos.

Crear un grupo de nodos

Para crear un grupo de nodos con nodos confidenciales de GKE habilitados, 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
.

Haz los cambios siguientes:

  • NODE_POOL_NAME: el nombre del nuevo grupo de nodos.
  • LOCATION: la ubicación del nuevo grupo de nodos. La ubicación debe admitir la tecnología de Confidential Computing que especifiques. Para obtener más información, consulta la sección Disponibilidad.
  • CLUSTER_NAME: el nombre de tu clúster.
  • MACHINE_TYPE: un tipo de máquina que admita la tecnología de Confidential Computing que especifiques. Para obtener más información, consulta la sección Disponibilidad.
  • ZONE1,ZONE2,...: lista separada por comas de las zonas de la región del clúster que admiten la nueva tecnología de computación confidencial. Para obtener más información, consulta Ver las zonas admitidas.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: la tecnología de computación confidencial que se va a 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 de clústeres. Si solo especificas este indicador 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 especifica la marca --confidential-node-type en el mismo comando, GKE usará el valor que especifique en la marca --confidential-node-type.

Consola

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

    Ir a clústeres de Kubernetes

  2. Haz clic en el nombre de tu clúster estándar.

  3. Haz clic en Añadir grupo de nodos.

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

  5. En el panel Seguridad de los nodos, haz lo siguiente:

    1. Selecciona la casilla Habilitar Confidential GKE Nodes.
    2. En el cuadro de diálogo Cambios necesarios, haga clic en Hacer cambios.
    3. En el menú Tipo, selecciona la tecnología de computación confidencial que quieras usar.

      Si la tecnología que seleccionas requiere una serie de máquinas de Compute Engine específica, aparecerá un cuadro de diálogo. Haz clic en Hacer 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. Seleccione la casilla Especificar ubicaciones de nodos. Se mostrará una lista de las zonas de la región del clúster.
    2. Selecciona las casillas de las zonas que admitan la tecnología de computación confidencial que hayas seleccionado para los nodos. Para obtener más información, consulta Ver las zonas admitidas.
  8. Opcional: Configura otros ajustes para tu grupo de nodos.

  9. Haz clic en Crear.

Actualizar un grupo de nodos

Para aplicar este cambio, es necesario volver a crear los nodos, lo que puede provocar interrupciones en las cargas de trabajo en ejecución. Para obtener información sobre este cambio concreto, busca la fila correspondiente en la tabla Cambios manuales que recrean los nodos mediante 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 Planificar interrupciones de actualizaciones de nodos.

Puedes actualizar los grupos de nodos que ya tengas para usar nodos de Confidential GKE o para cambiar la tecnología de Confidential Computing que usan los nodos. El grupo de nodos debe cumplir todos los requisitos siguientes:

  • 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 computación confidencial elegida.

Como la disponibilidad del tipo de máquina y de la ubicación puede variar entre las tecnologías de computación confidencial, es posible que tengas que actualizar estos atributos de tu grupo de nodos antes de habilitar una tecnología de computación confidencial específica.

Para actualizar un grupo de nodos que ya tengas para que use nodos de Confidential GKE, selecciona una de las siguientes opciones:

gcloud

Puedes usar la CLI de gcloud para habilitar los nodos confidenciales de GKE en un pool de nodos o para cambiar la tecnología de computación confidencial de los nodos.

  1. Si el grupo de nodos ya usa nodos confidenciales de GKE, inhabilita los nodos confidenciales de GKE. 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 por valores admitidos para la nueva tecnología de computación confidencial:

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

    Haz los cambios siguientes:

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

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

    Sustituye CONFIDENTIAL_COMPUTE_TECHNOLOGY por la tecnología de computación confidencial que quieras usar. Se admiten los siguientes valores:

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

Consola

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

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

    Ir a clústeres de Kubernetes

  2. Haz clic en el nombre de tu clúster estándar.

  3. Haz clic en la pestaña Nodos.

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

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

  6. En la sección Zonas, comprueba que las zonas seleccionadas admitan la tecnología de computación confidencial. Para obtener más información, consulta Ver las zonas admitidas.

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

    1. Desmarca la casilla de la zona no admitida.
    2. Opcional: Marca las casillas 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, marca la casilla Habilitar nodos confidenciales de GKE.

  8. En el menú Tipo, selecciona la tecnología de computación confidencial para los nodos.

  9. Haz clic en Guardar.

Colocar cargas de trabajo solo en grupos de nodos confidenciales

Si habilitas los nodos confidenciales de GKE a nivel de clúster, todas tus cargas de trabajo se ejecutarán en nodos confidenciales. No tienes que hacer cambios en tus manifiestos. Sin embargo, si habilitas los nodos confidenciales de GKE solo para grupos de nodos específicos del modo Estándar a nivel de grupo de nodos, debes indicar de forma declarativa que tus cargas de trabajo solo se deben ejecutar en grupos de nodos con nodos confidenciales de GKE.

  • 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"
    

    Sustituye 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 nodo, 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 solo usen un subconjunto de las tecnologías de computación confidencial disponibles, usa una regla de afinidad de nodos similar a la del 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 computación confidencial en las que quieras ejecutar la carga de trabajo.

Verificar que Confidential GKE Nodes esté habilitado

Para comprobar si tus clústeres o nodos usan nodos de GKE confidenciales, inspecciona los clústeres, los pools de nodos, los nodos o las instancias de Compute Engine.

Verificar clústeres

Selecciona una de las opciones siguientes:

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 será similar al siguiente:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

Consola

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

    Ir a clústeres de Kubernetes

  2. Haga clic en el nombre del clúster que quiera inspeccionar.

  3. En la sección Seguridad, comprueba que el campo Nodos de GKE confidenciales tenga el valor Habilitado.

Verificación de grupos de nodos

Selecciona una de las opciones siguientes:

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 será similar al siguiente:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

Si el modo Confidencial de Hyperdisk Balanced también está habilitado, el resultado será similar al siguiente:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR
enableConfidentialStorage: true

Consola

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

    Ir a clústeres de Kubernetes

  2. Haga clic en el nombre del clúster que quiera inspeccionar.

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

  4. En la sección Seguridad, comprueba que el campo Nodos confidenciales de GKE tenga el valor Habilitado.

Verificar un nodo específico

  1. Busca el nombre del nodo:

    kubectl get nodes
    
  2. Describe el nodo:

    kubectl describe NODE_NAME
    

    Sustituye NODE_NAME por el nombre de un nodo que quieras inspeccionar.

    El resultado debería ser similar al siguiente:

    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 esta salida, la etiqueta de nodo cloud.google.com/gke-confidential-nodes-instance-type indica que el nodo es confidencial.

Definir restricciones de políticas de organización

Puedes definir una restricción de política de organización para asegurarte de que todos los recursos de VM que se creen en tu organización sean instancias de VM confidenciales. En GKE, puedes personalizar la restricción Restrict Non-Confidential Computing para que todos los clústeres nuevos se creen con una de las tecnologías de Confidential Computing disponibles habilitada. Añade el nombre del servicio de la API container.googleapis.com a la lista de denegación cuando apliques restricciones de políticas de 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

Sustituye PROJECT_ID por el ID del proyecto.

Crear un PersistentVolume para el modo Confidencial de Hyperdisk Balanced

Para obtener información sobre los valores permitidos de la capacidad de procesamiento o las IOPS, consulta Planificar el nivel de rendimiento de un volumen de Hyperdisk.

En los siguientes ejemplos se muestra cómo crear un modo Confidencial para una clase StorageClass de Hyperdisk Balanced para cada tipo de Hyperdisk:

Hyperdisk Balanced

  1. Guarda el siguiente manifiesto en 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"
    

    Haz los cambios siguientes:

    • KMS_PROJECT_ID: el proyecto propietario de la clave de Cloud KMS
    • REGION: la región en la que se encuentra el disco
    • KEY_RING: el nombre del conjunto de claves que incluye la clave
    • HSM_KEY_NAME: nombre de la clave de HSM usada para cifrar el disco
  2. Crea el objeto StorageClass:

    kubectl create -f hdb-example-class.yaml
    
  3. Crea una reclamación de volumen persistente de Hyperdisk para GKE que use tu volumen de Hyperdisk Balanced en modo Confidencial.

Para encontrar el nombre de las StorageClasses disponibles en tu clúster, ejecuta el siguiente comando:

kubectl get sc

Limitaciones

Confidential GKE Nodes tiene las siguientes limitaciones:

El modo Confidencial de Hyperdisk Balanced tiene las siguientes limitaciones:

Limitaciones de la migración en tiempo real

Las máquinas virtuales confidenciales de Compute Engine que usan el tipo de máquina N2D y la tecnología de computación confidencial AMD SEV admiten la migración en vivo, lo que minimiza las posibles interrupciones de la carga de trabajo debido a un evento de mantenimiento del host. La migración en directo 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 añadió la migración en directo, actualiza manualmente los grupos de nodos a la misma versión compatible o a otra. Al actualizar los nodos, se vuelve a crear el nodo y se habilita la migración en directo en los nodos nuevos.

Para obtener información sobre los tipos de máquinas de Compute Engine que admiten la migración en vivo, consulta Configuraciones admitidas.

Si se produce un evento de mantenimiento del host en un nodo que no admite la migración en directo, el nodo pasa al estado NotReady. Los pods en ejecución sufrirán interrupciones hasta que el nodo vuelva a estar listo. Si el mantenimiento dura más de cinco minutos, es posible que GKE intente recrear los pods en otros nodos.

Inhabilitar Confidential GKE Nodes

Para aplicar este cambio, es necesario volver a crear los nodos, lo que puede provocar interrupciones en las cargas de trabajo en ejecución. Para obtener información sobre este cambio concreto, busca la fila correspondiente en la tabla Cambios manuales que recrean los nodos mediante 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 Planificar interrupciones de actualizaciones de nodos.

Solo puedes inhabilitar Confidential GKE Nodes en grupos de nodos del modo Estándar. Si el grupo de nodos está en un clúster que usa nodos confidenciales de GKE a nivel de clúster, no puedes inhabilitar la función a nivel de grupo de nodos. Para inhabilitar Confidential GKE Nodes, seleccione 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

Consola

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

    Ir a clústeres de Kubernetes

  2. Haz clic en el nombre de tu clúster estándar.

  3. Haz clic en la pestaña Nodos.

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

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

  6. En la sección Seguridad, desmarca la casilla Habilitar nodos confidenciales de GKE.

  7. Haz clic en Guardar.

Siguientes pasos