En esta página, se muestra cómo aplicar la encriptación de datos en uso en tus nodos y cargas de trabajo mediante Confidential Google Kubernetes Engine Nodes. La aplicación forzosa de la encriptación 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 comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Tareas y roles comunes de los usuarios de GKE Enterprise.
Antes de leer esta página, asegúrate de estar familiarizado con el concepto de datos en uso.
¿Qué es Confidential GKE Nodes?
Puedes encriptar tus cargas de trabajo con Confidential GKE Nodes o el modo confidencial de Hyperdisk Balanced.
Confidential GKE Nodes
Los Confidential GKE Nodes están creados sobre las Confidential VMs de Compute Engine y usa la Secure Encrypted Virtualization (SEV) de AMD, la cual se encarga de encriptar los contenidos de las memorias en uso de las VM. La encriptación en uso es uno de los tres estados de la encriptación de extremo a extremo.
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 obtener visibilidad sobre quién accede a los planos de control en tus Google Cloud proyectos, usa Transparencia de acceso.
Para habilitar Confidential GKE Nodes, puedes hacer lo siguiente:
- Crea un clúster nuevo
- Implementa una carga de trabajo con el aprovisionamiento automático de nodos
- Crea un grupo de nodos
- Actualiza un grupo de nodos existente
No puedes actualizar un clúster existente para cambiar la configuración de Confidential GKE Nodes a nivel de clúster.
En la siguiente tabla, se muestra el comportamiento de GKE que se aplica cuando habilitas Confidential GKE Nodes:
Configura Confidential GKE Nodes | Cómo configurar | Comportamiento |
---|---|---|
Nivel de clúster | Crea un clúster nuevo en modo Autopilot o Standard | Todos los nodos usan Confidential GKE Nodes. Esta operación es irreversible. No puedes anular la configuración de nodos individuales. En los clústeres de GKE Autopilot, todos los nodos usan automáticamente la serie de máquinas predeterminada para la clase de procesamiento equilibrada, que es N2D. |
Nivel de grupo de nodos |
|
GKE encripta el contenido de la memoria de los nodos en ese grupo de nodos. Esto solo es posible si Confidential GKE Nodes está inhabilitado a nivel del clúster. |
Modo confidencial para Hyperdisk Balanced
También puedes habilitar el modo confidencial para Hyperdisk Balanced en el almacenamiento del 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 existentes para cambiar la configuración de 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 parámetro de configuración Hyperdisk Balanced a nivel del clúster o del grupo de nodos:
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
modo confidencial para la configuración de Hyperdisk Balanced. No puedes hacer lo siguiente:
|
Nivel de grupo de nodos | Crear un grupo de nodos nuevo | Puedes configurar el modo confidencial para el parámetro de configuración de Hyperdisk Balanced para cualquier grupo de nodos nuevo en el momento de la creación. No puedes actualizar los grupos de nodos existentes para usar el modo confidencial de Hyperdisk Balanced. |
Precios
Se aplican los siguientes precios:
Autopilot:
- Generas costos según los precios de la clase de procesamiento balanceada porque, cuando habilitas Confidential GKE Nodes, se cambia la serie de máquinas predeterminada del clúster a N2D. Para obtener detalles sobre los precios, consulta Precios de Autopilot.
- Incurre en costos por Confidential GKE Nodes, además de los precios de GKE Autopilot. Para obtener más información, consulta la sección "Precios de Confidential GKE Nodes en GKE Autopilot" en Precios de VMs confidenciales.
Estándar: No se aplican costos adicionales por implementar Confidential GKE Nodes, excepto el costo de la Confidential VM de Compute Engine. Sin embargo, los Confidential GKE Nodes pueden generar un poco más de datos de registro en el inicio que los nodos estándar. Para obtener información sobre el precio de los registros, consulta Precios de Google Cloud Observability.
Disponibilidad
Confidential GKE Nodes tiene los siguientes requisitos de disponibilidad:
- Tus nodos deben estar en una zona o región que admita instancias N2D, instancias C2D o instancias C3D.
- Tus clústeres de Autopilot deben usar la versión 1.30.2 de GKE o una posterior.
- Tus grupos de nodos estándar deben usar uno de los tipos de máquinas compatibles y la imagen de nodo de Container-Optimized OS.
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 deseas 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.
Usa Confidential GKE Nodes en Autopilot
Puedes habilitar Confidential GKE Nodes para un clúster de Autopilot completo, lo que hace que cada nodo sea un nodo confidencial. Todas tus cargas de trabajo se ejecutan en nodos confidenciales sin necesidad de realizar cambios en los manifiestos de cargas de trabajo. Si habilitas Confidential GKE Nodes, la serie de máquinas predeterminada del clúster cambiará a N2D.
Habilita Confidential GKE Nodes en un clúster de Autopilot nuevo
Ejecuta el siguiente comando:
gcloud container clusters create-auto CLUSTER_NAME \
--location=LOCATION \
--enable-confidential-nodes
Reemplaza lo siguiente:
CLUSTER_NAME
: Es el nombre del clúster de Autopilot.LOCATION
: La ubicación de Compute Engine del clúster.
El clúster debe ejecutar la versión 1.30.2 o una posterior. Para configurar una versión específica cuando creas un clúster, consulta Configura la versión y el canal de versiones de un nuevo clúster de Autopilot.
Usa Confidential GKE Nodes en el modo estándar
Puedes habilitar Confidential GKE Nodes a nivel del clúster o del grupo de nodos en el modo estándar.
Habilita Confidential GKE Nodes en clústeres Standard
Puedes crear un clúster nuevo con Confidential GKE Nodes habilitados mediante gcloud CLI o la consola de Google Cloud. Si habilitas Confidential GKE Node a nivel de clúster, todos los nodos del clúster son Confidential VM.
También puedes usar Confidential GKE Nodes en clústeres que usan el aprovisionamiento automático de nodos para escalar grupos de nodos de forma automática.
Al crear un clúster nuevo, especifica la opción --enable-confidential-nodes
en la CLI de gcloud:
gcloud container clusters create CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--enable-confidential-nodes
Reemplaza lo siguiente:
Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.
Haz clic en add_box Crear.
En la sección Estándar, haz clic en Configurar.
En el panel de navegación, en Clúster, haz clic en Seguridad.
Selecciona la casilla de verificación Habilitar Confidential GKE Node.
Configura tu clúster según sea necesario.
Haga clic en Crear.
Consulta Crea un clúster regional para obtener más detalles sobre la creación de clústeres.
Después de crear un clúster con Confidential GKE Node, cualquier grupo de nodos creado en este clúster solo puede usar nodos confidenciales. No puedes crear grupos de nodos normales en clústeres con Confidential GKE Nodes habilitado. Tampoco puedes inhabilitar Confidential GKE Nodes en grupos de nodos individuales cuando habilitas Confidential GKE Nodes a nivel de clúster.
En el caso de cualquier grupo de nodos creado con el modo confidencial para la configuración de Hyperdisk Balanced, solo los nodos del grupo de nodos están restringidos a la configuración de configuración. Para los grupos de nodos nuevos que se creen en el clúster, debes configurar el modo confidencial en el momento de la creación.
Habilita Confidential GKE Node en grupos de nodos
Puedes habilitar Confidential GKE Node en grupos de nodos específicos si Confidential GKE Node está inhabilitado a nivel de clúster.
El parámetro de configuración de modo confidencial para Hyperdisk Balanced se debe especificar 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 Node habilitado, ejecuta el siguiente comando:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--enable-confidential-nodes
Reemplaza lo siguiente:
- NODE_POOL_NAME: es el nombre de tu grupo de nodos nuevo.
- CLUSTER_NAME: El nombre de tu clúster.
- MACHINE_TYPE: Es el tipo de máquina para tu grupo de nodos, que debe ser un tipo de máquina N2D, C2D o C3D.
Actualiza un grupo de nodos existente
Puedes habilitar los Confidential GKE Node en grupos de nodos existentes que usen los tipos de máquinas N2D, C2D o C3D. Ejecuta el siguiente comando:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--enable-confidential-nodes
Reemplaza lo siguiente:
- NODE_POOL_NAME: es el nombre de tu grupo de nodos.
- CLUSTER_NAME: El nombre de tu clúster.
Este cambio requiere que se vuelvan 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 Cambios manuales que vuelven a crear 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 Planifica las interrupciones de actualización de nodos.
Coloca las cargas de trabajo solo en grupos de nodos de Confidential GKE Node
Si habilitas Confidential GKE Node a nivel del clúster, todas tus cargas de trabajo se ejecutan en nodos confidenciales. No es necesario que realices cambios en tus manifiestos. Sin embargo, si solo habilitas Confidential GKE Node para grupos de nodos específicos, debes expresar de forma declarativa que tus cargas de trabajo solo deben ejecutarse en grupos de nodos con Confidential GKE Node. Usa el
selector de nodos cloud.google.com/gke-confidential-nodes
,
como en el siguiente ejemplo:
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"
Verifica que Confidential GKE Nodes estén habilitados
Puedes verificar si tus clústeres o nodos usan Confidential GKE Node inspeccionándolos.
En clústeres de modo Autopilot o Standard
Puedes verificar que tu clúster de Autopilot o Standard esté utilizando Confidential GKE Nodes con gcloud CLI o la consola de Google Cloud.
Describe el clúster:
gcloud container clusters describe CLUSTER_NAME
Si Confidential GKE Nodes están habilitados, se incluyen las siguientes líneas en el resultado del comando:
confidentialNodes:
enabled: true
Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.
Haz clic en el nombre del clúster que deseas inspeccionar.
Debajo de Seguridad, en el campo Confidential GKE Nodes, verifica si los Confidential GKE Node están Habilitados.
En nodos del modo Autopilot o Standard
Para verificar si nodos específicos de Autopilot o Standard usan Confidential GKE Node, haz lo siguiente:
Busca el nombre del nodo:
kubectl get nodes
Describe el nodo:
kubectl describe
NODE_NAME Reemplaza
NODE_NAME
por el nombre de un nodo que deseas inspeccionar.
Si Confidential GKE Nodes está habilitado, el resultado incluye lo siguiente:
# lines omitted for clarity
cloud.google.com/gke-confidential-nodes=true
En grupos de nodos de modo Standard
Para verificar que tu grupo de nodos use Confidential GKE Node, ejecuta el siguiente comando:
gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME
Si Confidential GKE Node están habilitado, el resultado es similar al siguiente:
confidentialNodes:
enabled: true
Si el parámetro de configuración de modo confidencial para Hyperdisk Balanced está habilitado, el resultado es similar al siguiente:
enableConfidentialStorage: true
En nodos individuales del modo estándar
Para validar la confidencialidad de los nodos específicos en los clústeres estándar, puedes hacer lo siguiente:
- La validación de la SEV de AMD está habilitada, o
- Validar Confidential VM mediante Cloud Monitoring.
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 Confidential GKE Nodes habilitados. Agrega el nombre del Service de la API container.googleapis.com
a la lista de denegación cuando apliques restricciones de políticas de la organización, por 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 un modo confidencial para la StorageClass de Hyperdisk Balanced para cada tipo de Hyperdisk:
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 KMSREGION
: 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 de HSM que se usa para encriptar el disco.
Crea la StorageClass:
kubectl create -f hdb-example-class.yaml
Crea un derecho de volumen persistente de Hyperdisk para GKE que use el modo confidencial para el volumen de 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:
- Todas las limitaciones de las instancias de Confidential VM de Compute Engine se aplican a los Confidential GKE Nodes.
- Los Confidential GKE Nodes que tengan el tipo de máquina C2D solo pueden usar el aprovisionamiento automático de nodos en la versión de 1.24 de GKE o las posteriores.
- Los Confidential GKE Nodes solo admiten Volúmenes persistentes respaldados por discos persistentes si tu plano de control ejecuta la versión de 1.22 de GKE o una posterior. Para obtener instrucciones, consulta Usa el controlador de CSI del disco persistente de Compute Engine.
- Los Confidential GKE Node no son compatibles con las GPU.
- Los Confidential GKE Node no son compatibles con los nodos de usuario único.
- Los Confidential GKE Nodes solo admiten el uso del almacenamiento efímero en SSD locales, pero no admiten el uso de SSD locales en general.
- Solo se admiten los nodos de Container-Optimized OS. Los nodos de Ubuntu y Windows no son compatibles.
Inhabilitar Confidential GKE Node
Solo puedes inhabilitar Confidential GKE Nodes en grupos de nodos de modo estándar. Si el grupo de nodos está 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.
- Consulta la sección Limitaciones para obtener más información sobre el modo confidencial de Hyperdisk Balanced.
- El modo confidencial para Hyperdisk Balanced solo es compatible con Confidential GKE Node.
Limitaciones de la migración en vivo
Ciertos tipos de máquinas de Confidential VM de Compute Engine 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 activa, 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 Nodes
La inhabilitación de Confidential GKE Node solo funciona para los grupos de nodos que habilitaron Confidential GKE Node. Si el clúster se crea con Confidential GKE Node, no puedes inhabilitar la función. Ejecuta el siguiente comando para inhabilitar los Confidential GKE Nodes en un grupo de nodos:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--no-enable-confidential-nodes
Este cambio requiere que se vuelvan 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 Cambios manuales que vuelven a crear 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 Planifica las interrupciones de actualización de nodos.
¿Qué sigue?
- Obtén más información sobre la Confidential VM.
- Usa nodos de GKE protegidos.
- Obtén más información sobre la Google Cloud encriptación en reposo.
- Obtén más información sobre la Google Cloud encriptación en tránsito.
- Obtén más información sobre las claves de encriptación administradas por el cliente (CMEK).
- Obtén más información sobre la encriptación de secretos de la capa de la aplicación.