El inicio seguro ayuda a garantizar que el sistema solo ejecute software auténtico a través de la verificación de la firma digital de todos los componentes del inicio y la detención del proceso de inicio si falla la verificación de la firma.
Google Distributed Cloud (GDC) aislado usa el firmware de la interfaz de firmware extensible unificada (UEFI) para administrar los certificados y las claves que se usan para firmar software.
El firmware UEFI administra de forma segura los certificados que contienen las claves que los fabricantes de software usan para firmar el firmware del sistema, el cargador de inicio del sistema y cualquier archivo binario que carguen. Para ver 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 UEFI verifica la firma digital de cada componente de inicio con respecto al almacenamiento seguro de claves aprobadas. No se puede ejecutar ningún componente de inicio que no esté firmado ni que se haya firmado de manera incorrecta. Para habilitar el inicio seguro, debes establecer el tipo de bootloader
de la VM en uefi
.
Un vTPM es un módulo de plataforma de confianza virtualizado. Consulta https://trustedcomputinggroup.org/trusted-platform-module-tpm-summary/ para obtener más información sobre los vTPM. Es un chip de computadora especializado que puedes emplear a fin de proteger objetos, como claves y certificados, y que usas para autenticar el acceso al sistema. También puedes usar el vTPM para proteger los secretos a través de la protección 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 de Go-TPM en GitHub (https://github.com/google/go-tpm) para ver ejemplos del lenguaje Go que muestran cómo usar un vTPM con este fin.
Antes de comenzar
Para usar los comandos de la interfaz de línea de comandos (CLI) de gdcloud
, asegúrate de haber descargado, instalado y configurado la CLI de gdcloud
.
Todos los comandos de Distributed Cloud usan la CLI de gdcloud
o kubectl
y requieren un entorno de sistema operativo (SO).
Obtén la ruta de acceso del archivo kubeconfig
Para ejecutar comandos en el servidor de la API de Management, asegúrate de tener los siguientes recursos:
Accede y genera el archivo kubeconfig para el servidor de la API de Management si no tienes uno.
Usa la ruta de acceso al archivo kubeconfig del servidor de la API de administración para reemplazar
MANAGEMENT_API_SERVER
en estas instrucciones.
Solicita permisos y acceso
Para realizar las tareas que se indican en esta página, debes tener el rol de administrador de la máquina virtual del proyecto. Sigue los pasos para verificar que tienes el rol de administrador de máquinas virtuales del proyecto (project-vm-admin
) en el espacio de nombres del proyecto en el que reside la VM.
Habilitar el inicio seguro
Habilita el inicio seguro para una VM. Usa las siguientes 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.
Verifica que hayas habilitado el inicio seguro. Establece una conexión SSH a tu VM y ejecuta el siguiente comando:
mokutil --sb-state
Si habilitaste el arranque seguro correctamente, el comando devolverá
SecureBoot enabled
.Si la herramienta
mokutil
informa que no habilitaste el inicio seguro, sigue los pasos de la sección Soluciona problemas de la configuración del inicio seguro.
Soluciona problemas de configuración del inicio seguro
Abre tu recurso personalizado de VM en un editor:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
Busca los campos o valores faltantes, como se muestra en el campo
spec
en "Ejecuta el siguiente comando". Estos campos son obligatorios.Si falta alguno o es incorrecto, edita
spec
para agregar los campos faltantes y corregir los valores erróneos.Guarda el archivo.
Sigue los pasos que se indican en Reinicia la VM.
Si los pasos anteriores no resuelven el problema, consulta la documentación correspondiente al sistema operativo (SO) de la VM para verificar que la versión del SO admita el arranque seguro.
Habilita el módulo de plataforma segura virtual (vTPM)
Habilita el vTPM para una VM. Sigue las instrucciones que se indican a continuación para una VM llamada VM_NAME
en el espacio de nombres del proyecto (PROJECT_NAMESPACE
).
Actualiza el recurso personalizado de tu 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.
Verifica que hayas habilitado el vTPM. Establece una conexión SSH a tu VM y ejecuta el siguiente comando:
dmesg | grep -i tpm
Si habilitaste el vTPM correctamente, 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 los
ACPI tables
no muestran el módulo TPM, sigue los pasos de la sección Soluciona problemas de la configuración del vTPM.
Soluciona problemas de configuración del vTPM
Abre tu recurso personalizado de VM en un editor:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
Busca los campos o valores faltantes, como se muestra en el campo
spec
en Ejecuta el siguiente comando. Estos campos son obligatorios.Si falta alguno o es incorrecto, edita
spec
para agregar los campos faltantes y corregir los valores erróneos.Guarda el archivo.
Sigue los pasos que se indican en Reinicia la VM.
Si los pasos anteriores no resuelven el problema, consulta la documentación correspondiente al sistema operativo (SO) de la VM para verificar que la versión del SO sea compatible con el vTPM.