El arranque seguro ayuda a asegurar que el sistema solo ejecute software original. Para ello, verifica la firma digital de todos los componentes del arranque y detiene el proceso si se produce algún error en dicha verificación.
Google Distributed Cloud (GDC) air-gapped usa el firmware de la interfaz de firmware extensible unificada (UEFI) para gestionar los certificados y las claves que se utilizan para firmar software.
El firmware de UEFI gestiona de forma segura los certificados que contienen las claves que utilizan los fabricantes de software para firmar el firmware del sistema, el bootloader del sistema y cualquier binario que carguen. Para consultar la documentación de UEFI, visita https://uefi.org/sites/default/files/resources/UEFI_Secure_Boot_in_Modern_Computer_Security_Solutions_2013.pdf
.
En cada inicio, el firmware de UEFI coteja la firma digital de cada componente del arranque con un almacén seguro de claves aprobadas. De esta forma, los componentes que no estén debidamente firmados no se ejecutarán. Para habilitar el arranque seguro, debes definir el tipo de bootloader
de la VM como uefi
.
Un vTPM es un módulo de plataforma segura virtualizado. Consulta https://trustedcomputinggroup.org/trusted-platform-module-tpm-summary/ para obtener más información sobre los vTPMs. Es un chip informático especializado que puedes utilizar para proteger los objetos con los que autenticas el acceso a tu sistema, como claves y certificados. También puedes usar el vTPM para proteger secretos mediante el blindaje o el sellado. Para obtener más información sobre el almacenamiento sellado, consulta https://en.wikipedia.org/wiki/Trusted_Computing#SEALED-STORAGE. Consulta el proyecto Go-TPM en GitHub (https://github.com/google/go-tpm) para ver ejemplos en lenguaje Go que muestran cómo utilizar un vTPM con este propósito.
Antes de empezar
Para usar los comandos de la gdcloud
interfaz de línea de comandos (CLI), asegúrate de haber descargado, instalado y configurado la gdcloud
CLI.
Todos los comandos de Distributed Cloud usan la CLI gdcloud
o kubectl
y requieren un entorno de sistema operativo.
Obtener la ruta del archivo kubeconfig
Para ejecutar comandos en el servidor de la API Management, asegúrate de tener los siguientes recursos:
Inicia sesión y genera el archivo kubeconfig del servidor de la API Management si no tienes uno.
Usa la ruta al archivo kubeconfig del servidor de la API Management para sustituir
MANAGEMENT_API_SERVER
en estas instrucciones.
Solicitar permisos y acceso
Para realizar las tareas que se indican en esta página, debes tener el rol de administrador de máquinas virtuales del proyecto. Sigue los pasos para verificar que tienes el rol de administrador de máquinas virtuales de proyecto (project-vm-admin
) en el espacio de nombres del proyecto en el que reside la VM.
Habilitar arranque seguro
Habilita el arranque seguro en una VM. Sigue estas instrucciones para una VM llamada VM_NAME
en el espacio de nombres del proyecto (PROJECT_NAMESPACE
).
Actualiza tu recurso personalizado de VM para habilitar el arranque seguro:
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $' spec: shieldConfig: bootType: uefi enableSecureBoot: true '
Si la VM está en ejecución, reiníciala siguiendo las instrucciones para reiniciar una VM.
Comprueba que hayas habilitado el arranque seguro. Establece una conexión SSH con tu máquina virtual y ejecuta el siguiente comando:
mokutil --sb-state
Si has habilitado el arranque seguro correctamente, el comando devolverá
SecureBoot enabled
.Si la herramienta
mokutil
indica que no has habilitado el arranque seguro, sigue los pasos de la sección Solucionar problemas de configuración del arranque seguro.
Solucionar problemas de configuración de arranque seguro
Abre el recurso personalizado de la VM en un editor:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
Busca los campos o valores que faltan, como se muestra en el campo
spec
de "Ejecuta el siguiente comando". Estos campos son obligatorios.Si falta alguno o es incorrecto, edita
spec
para añadir los campos que faltan y corregir los valores erróneos.Guarda el archivo.
Sigue los pasos que se indican en Reiniciar la VM.
Si los pasos anteriores no resuelven el problema, consulta la documentación del sistema operativo de la máquina virtual para comprobar que la versión del SO sea compatible con el arranque seguro.
Habilitar el módulo de plataforma segura virtual (vTPM)
Habilita el vTPM en una VM. Sigue estas instrucciones para una VM llamada VM_NAME
en el espacio de nombres del proyecto (PROJECT_NAMESPACE
).
Actualiza el recurso personalizado de la VM para habilitar el vTPM:
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $' spec: shieldConfig: enableVtpm: true '
Si la VM está en ejecución, reiníciala siguiendo las instrucciones para reiniciar una VM.
Comprueba que hayas habilitado vTPM. Establece una conexión SSH con tu VM y ejecuta el siguiente comando:
dmesg | grep -i tpm
Si has habilitado correctamente el vTPM, el comando devolverá el módulo TPM como parte de las tablas ACPI. El resultado es similar al siguiente:
[ 7.620985] tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1, rev-id 1)
Si las
ACPI tables
no muestran el módulo TPM, sigue los pasos que se indican en la sección Solucionar problemas de configuración de vTPM.
Solucionar problemas de configuración de vTPM
Abre el recurso personalizado de la VM en un editor:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
Busca los campos o valores que faltan, tal como se muestra en el campo
spec
de Ejecuta el siguiente comando. Estos campos son obligatorios.Si falta alguno o es incorrecto, edita
spec
para añadir los campos que faltan y corregir los valores erróneos.Guarda el archivo.
Sigue los pasos que se indican en Reiniciar la VM.
Si los pasos anteriores no resuelven el problema, consulta la documentación del sistema operativo de la máquina virtual para comprobar si la versión del SO es compatible con vTPM.