VM protegida

La VM protegida ofrece la integridad verificable de tus instancias de VM de Compute Engine, para que puedas estar seguro de que las instancias no se expusieron a software malicioso o rootkits de nivel de inicio y kernel. La integridad verificable de la VM protegida se logra a través del uso del inicio seguro, el inicio medido habilitado para el módulo de plataforma de confianza virtual (vTPM) y la supervisión de integridad.

La VM protegida es la primera oferta de la iniciativa de Shielded Cloud. Esta iniciativa tiene por objeto proporcionar una base aún más segura para todo Google Cloud Platform (GCP), ofreciendo integridad verificable y funciones, como el sellado o la protección del vTPM que ayudan a prevenir el robo de datos.

Inicio seguro

El inicio seguro ayuda a garantizar que el sistema solo ejecute software auténtico mediante 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.

Las instancias de VM protegida ejecutan un firmware que se firma y se verifica con la autoridad certificada de Google, lo que garantiza que no se modifica el firmware de la instancia y lo que establece la raíz de confianza para el inicio seguro. El inicio seguro usa el firmware de la Interfaz de Firmware Extensible Unificada (UEFI) 2.3.1, que almacena de manera segura las claves utilizadas por los fabricantes de software para firmar el firmware del sistema, el cargador de inicio del sistema y cualquier binario que carguen. Durante la secuencia de inicio, el firmware UEFI verifica la firma digital de cada componente del inicio con una base de datos de claves aprobadas. No se puede ejecutar ningún componente del inicio que no esté firmado ni que se haya firmado de manera incorrecta.

Si esto ocurre, la instancia de VM muestra un estado de error en GCP Console, y el registro de la consola en serie de la instancia de VM tendrá una entrada que contiene las strings UEFI: Failed to load image y Status: Security Violation, junto con una descripción de la opción del inicio que falló. Para solucionar la falla, inhabilite el inicio seguro con las instrucciones que aparecen en la sección Modifica las opciones de VM protegida, para que puedas iniciar la instancia de VM, diagnosticar y resolver el problema, y luego volver a habilitar el inicio seguro.

Módulo de plataforma de confianza virtual (vTPM)

Un vTPM es un módulo de plataforma de confianza virtual, 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. El vTPM de la VM protegida es totalmente compatible con la especificación de la biblioteca del Trusted Computing Group (TPM) 2.0 y usa BoringSSL, que cuenta con la verificación de FIPS 140-2 L1.

El vTPM de la VM protegida habilita el inicio medido, mediante la realización de las medidas necesarias para crear un buen modelo de referencia de inicio conocido, denominado modelo de referencia de la política de integridad. El modelo de referencia de la política de integridad se usa para comparar medidas de inicios de VM posteriores, a fin de determinar si algo cambió.

También puedes usar el vTPM para proteger los secretos a través de la protección o el sellado. Consulta el proyecto de Go-TPM en GitHub para ver ejemplos del lenguaje Go que muestran cómo usar un vTPM con este fin.

Inicio medido

Durante el inicio medido, se crea un hash para cada componente (por ejemplo, el firmware, el bootloader o el kernel) a medida que se carga el componente. Luego, ese hash se concatena y se vuelve a generar un hash con los hashes de cualquier componente que ya se haya cargado, como se muestra a continuación:

Proceso del inicio medido.

Esta información identifica los dos componentes que se cargaron y su orden de carga.

La primera vez que se inicia una instancia de VM, el inicio medido crea el modelo de referencia de la política de integridad a partir del primer conjunto de estas medidas y almacena estos datos de manera segura. Después de eso, cada vez que se inicie la instancia de VM, se vuelven a tomar estas medidas y se almacenan en una memoria segura hasta el próximo reinicio. Estos dos conjuntos de medidas habilitan la supervisión de integridad, que puedes usar para determinar si hubo cambios en la secuencia de inicio de una instancia de VM.

Supervisión de integridad

La supervisión de integridad ayuda a comprender y tomar decisiones sobre el estado de tus instancias de VM.

La supervisión de integridad depende de las medidas creadas por el inicio medido, que utiliza los registros de configuración de la plataforma (PCR) para almacenar información sobre los componentes y el orden de carga de los componentes del modelo de referencia de la política de integridad (una buena secuencia de inicio conocida) y la secuencia de inicio más reciente.

La supervisión de integridad compara las medidas de inicio más recientes con el modelo de referencia de la política de integridad y muestra un par de resultados de aprobado/reprobado dependiendo de si coinciden o no; uno para la secuencia de inicio anticipado y otro para la secuencia de inicio retardado. El inicio anticipado es la secuencia de inicio desde el comienzo del firmware UEFI hasta que pasa el control al bootloader. El inicio retardado es la secuencia de inicio desde el bootloader hasta que pasa el control al kernel del sistema operativo. Si alguna parte de la secuencia de inicio más reciente no coincide con el modelo de referencia, obtienes una falla en la validación de la integridad.

Si se espera una falla, por ejemplo, si realizaste una actualización del sistema en una instancia de VM, debes actualizar el modelo de referencia de la política de integridad. La actualización del modelo de referencia de la política de integridad establece el modelo de referencia para las medidas obtenidas de la secuencia de inicio más reciente. Si no se espera una falla, debes detener esa instancia de VM y luego investigar el motivo de la falla.

Puedes ver los informes de integridad en Stackdriver Monitoring y configurar alertas para las fallas de integridad. Puedes revisar los detalles de los resultados de la supervisión de integridad en Stackdriver Logging. Para obtener más información, consulta Supervisa la integridad en las instancias de VM protegida.

Eventos de supervisión de integridad

La VM protegida crea entradas de registro para los siguientes tipos de eventos:

  • clearTPMEvent: identifica si se borró el vTPM, lo que elimina cualquier secreto que tenga almacenado. Esto no afecta ningún aspecto de la VM protegida, por lo que solo te importará si usas el vTPM para proteger datos sensibles, como se describe en el Módulo de plataforma de confianza virtual (vTPM).
  • earlyBootReportEvent: identifica si se pasó la verificación de integridad de la secuencia de inicio anticipado y proporciona detalles de los valores de PCR a partir del modelo de referencia y la secuencia de inicio más reciente que se comparó para tomar esa determinación.
  • lateBootReportEvent: identifica si se pasó la verificación de integridad de la secuencia de inicio retardado y proporciona detalles de los valores de PCR a partir del modelo de referencia y la secuencia de inicio más reciente que se comparó para tomar esa determinación.
  • setShieldedVmIntegrityPolicy: se registra cada vez que actualizas el modelo de referencia de la política de integridad.
  • shutdownEvent: se registra cada vez que se detiene la instancia de VM.
  • startupEvent: se registra cada vez que se inicia la instancia de VM. La información interesante de este evento es el valor bootCounter, que identifica cuántas veces se reinició esta instancia.
  • updateShieldedVmConfig: se registra cada vez que habilitas o inhabilitas alguna de las opciones de la VM protegida.

La progresión de eventos típica que ves en el registro es startupEvent, earlyBootReportEvent, lateBootReportEvent y finalmente shutdownEvent; todo con el mismo valor de bootCounter para identificarlos como parte de la misma secuencia de inicio de la instancia de VM.

Si actualizas el modelo de referencia de la política de integridad en respuesta a una falla en la integridad esperada de una instancia de VM, verás eventos de earlyBootReportEvent y lateBootReportEvent adicionales que describen las nuevas medidas del modelo de referencia de la política de integridad. En el siguiente ejemplo, se muestra la secuencia esperada:

  • startupEvent
  • earlyBootReportEvent, que compara el modelo de referencia original con la última secuencia de inicio (aprobado).
  • lateBootReportEvent, que compara el modelo de referencia original con la última secuencia de inicio (reprobado).
  • setShieldedVmIntegrityPolicy, cuando actualizas el modelo de referencia de la política de integridad, que configura el modelo de referencia con las medidas obtenidas de la última secuencia de inicio.
  • earlyBootReportEvent que compara el modelo de referencia nuevo con la última secuencia de inicio (aprobado).
  • lateBootReportEvent que compara el modelo de referencia nuevo con la última secuencia de inicio (aprobado).

Windows

earlyBootReportEvent

La información importante de earlyBootReportEvent se encuentra en la sección earlyBootReportEvent, que contiene las siguientes secciones y elementos:

  • actualMeasurements: contiene los valores del registro de configuración de la plataforma (PCR) de la última secuencia de inicio. Los valores del PCR son los que identifican los componentes del inicio y el orden de carga de los componentes utilizado por la última secuencia de inicio. Además, son los que se comparan con el modelo de referencia de la política de integridad (cuyos valores se obtienen en la sección policyMeasurements) para determinar si hubo algún cambio en la secuencia de inicio de la instancia de VM. La sección actualMeasurements contiene los siguientes elementos:

    • 0: contiene el valor del PCR0, que incluye información sobre los componentes del firmware. Este PCR no se implementa y, en cambio, contiene un valor estático. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 1: contiene el valor del PCR4, que incluye información sobre el código del administrador del inicio de UEFI y los intentos de inicio.
    • 2: contiene el valor del PCR5, que incluye información sobre la tabla de particiones GUID del disco. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 3: contiene el valor del PCR7, que incluye información sobre la política de inicio seguro de la instancia.
  • policyEvaluationPassed: identifica si la sección dada de la secuencia de inicio pasó la verificación con el modelo de referencia de la política de integridad.

  • policyMeasurements: contiene los valores del PCR del modelo de referencia de la política de integridad. La sección policyMeasurements contiene los siguientes elementos:

    • 0: contiene el valor del PCR0, que incluye información sobre los componentes del firmware. Este PCR no se implementa y, en cambio, contiene un valor estático. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 1: contiene el valor del PCR4, que incluye información sobre el código del administrador del inicio de UEFI y los intentos de inicio.
    • 2: contiene el valor del PCR7, que incluye información sobre la política de inicio seguro de la instancia.

Si deseas obtener información sobre cómo usar los valores del PCR earlyBootReportEvent para diagnosticar una falla en la validación de la integridad, consulta Determina la causa de la falla en la validación de la integridad del inicio.

lateBootReportEvent

La información importante de lateBootReportEvent se encuentra en la sección lateBootReportEvent, que contiene las siguientes secciones y elementos:

  • actualMeasurements: contiene los valores del registro de configuración de la plataforma (PCR) de la última secuencia de inicio. Los valores del PCR son los que identifican los componentes del inicio y el orden de carga de los componentes utilizado por la última secuencia de inicio. Además, son los que se comparan con el modelo de referencia de la política de integridad (cuyos valores se obtienen en la sección policyMeasurements) para determinar si hubo algún cambio en la secuencia de inicio de la instancia de VM. La sección actualMeasurements contiene los siguientes elementos:

    • 0: contiene el valor del PCR0, que incluye información sobre los componentes del firmware. Este PCR no se implementa y, en cambio, contiene un valor estático. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 1: contiene el valor del PCR4, que incluye información sobre el código del administrador del inicio de UEFI y los intentos de inicio.
    • 2: contiene el valor del PCR5, que incluye información sobre la tabla de particiones GUID del disco. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 3: contiene el valor del PCR7, que incluye información sobre la política de inicio seguro de la instancia.
    • 4: contiene el valor de PCR11, que incluye información sobre el control de acceso del cifrado de unidad BitLocker.
    • 5: contiene el valor de PCR12, que incluye información sobre los eventos de datos. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 6: contiene el valor de PCR13, que incluye información sobre los controladores de inicio y el kernel de Windows.
    • 7: contiene el valor de PCR14, que incluye información sobre las autoridades de inicio de Windows.
  • policyEvaluationPassed: identifica si la sección dada de la secuencia de inicio pasó la verificación con el modelo de referencia de la política de integridad.

  • policyMeasurements: contiene los valores del PCR del modelo de referencia de la política de integridad. La sección policyMeasurements contiene los siguientes elementos:

    • 0: contiene el valor del PCR0, que incluye información sobre los componentes del firmware. Este PCR no se implementa y, en cambio, contiene un valor estático. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 1: contiene el valor del PCR4, que incluye información sobre el código del administrador del inicio de UEFI y los intentos de inicio.
    • 2: contiene el valor del PCR7, que incluye información sobre la política de inicio seguro de la instancia.
    • 3: contiene el valor de PCR11, que incluye información sobre el control de acceso del cifrado de unidad BitLocker.
    • 4: contiene el valor de PCR13, que incluye información sobre los controladores de inicio y el kernel de Windows.
    • 5: contiene el valor de PCR14, que incluye información sobre las autoridades de inicio de Windows.

Si deseas obtener información sobre cómo usar los valores del PCR lateBootReportEvent para diagnosticar una falla en la validación de la integridad, consulta Determina la causa de la falla en la validación de la integridad del inicio.

Linux

earlyBootReportEvent

La información importante de earlyBootReportEvent se encuentra en la sección earlyBootReportEvent, que contiene las siguientes secciones y elementos:

  • actualMeasurements: contiene los valores del registro de configuración de la plataforma (PCR) de la última secuencia de inicio. Los valores del PCR son los que identifican los componentes del inicio y el orden de carga de los componentes utilizado por la última secuencia de inicio. Además, son los que se comparan con el modelo de referencia de la política de integridad (cuyos valores se obtienen en la sección policyMeasurements) para determinar si hubo algún cambio en la secuencia de inicio de la instancia de VM. La sección actualMeasurements contiene los siguientes elementos:

    • 0: contiene el valor del PCR0, que incluye información sobre los componentes del firmware. Este PCR no se implementa y, en cambio, contiene un valor estático. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 1: contiene el valor de PCR4, que incluye información sobre el corrector de compatibilidad del sistema operativo.
    • 2: contiene el valor del PCR5, que incluye información sobre la tabla de particiones GUID del disco. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 3: contiene el valor del PCR7, que incluye información sobre la política de inicio seguro de la instancia.
  • policyEvaluationPassed: identifica si la sección dada de la secuencia de inicio pasó la verificación con el modelo de referencia de la política de integridad.

  • policyMeasurements: contiene los valores del PCR del modelo de referencia de la política de integridad. La sección policyMeasurements contiene los siguientes elementos:

    • 0: contiene el valor del PCR0, que incluye información sobre los componentes del firmware. Este PCR no se implementa y, en cambio, contiene un valor estático. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 1: contiene el valor de PCR4, que incluye información sobre el corrector de compatibilidad del sistema operativo.
    • 2: contiene el valor del PCR7, que incluye información sobre la política de inicio seguro de la instancia.

Si deseas obtener información sobre cómo usar los valores del PCR earlyBootReportEvent para diagnosticar una falla en la validación de la integridad, consulta Determina la causa de la falla en la validación de la integridad del inicio.

lateBootReportEvent

La información importante de lateBootReportEvent se encuentra en la sección lateBootReportEvent, que contiene las siguientes secciones y elementos:

  • actualMeasurements: contiene los valores del registro de configuración de la plataforma (PCR) de la última secuencia de inicio. Los valores del PCR son los que identifican los componentes del inicio y el orden de carga de los componentes utilizado por la última secuencia de inicio. Además, son los que se comparan con el modelo de referencia de la política de integridad (cuyos valores se obtienen en la sección policyMeasurements) para determinar si hubo algún cambio en la secuencia de inicio de la instancia de VM. La sección actualMeasurements contiene los siguientes elementos:

    • 0: contiene el valor del PCR0, que incluye información sobre los componentes del firmware. Este PCR no se implementa y, en cambio, contiene un valor estático. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 1: contiene el valor de PCR4, que incluye información sobre el cargador de inicio de la segunda etapa y el kernel.
    • 2: contiene el valor del PCR5, que incluye información sobre la tabla de particiones GUID del disco. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 3: contiene el valor del PCR7, que incluye información sobre la política de inicio seguro de la instancia.
  • policyEvaluationPassed: identifica si la sección dada de la secuencia de inicio pasó la verificación con el modelo de referencia de la política de integridad.

  • policyMeasurements: contiene los valores del PCR del modelo de referencia de la política de integridad. La sección policyMeasurements contiene los siguientes elementos:

    • 0: contiene el valor del PCR0, que incluye información sobre los componentes del firmware. Este PCR no se implementa y, en cambio, contiene un valor estático. No se usa en la validación de la última secuencia de inicio con el modelo de referencia de la política de integridad.
    • 1: contiene el valor de PCR4, que incluye información sobre el cargador de inicio de la segunda etapa y el kernel.
    • 2: contiene el valor del PCR7, que incluye información sobre la política de inicio seguro de la instancia.

Si deseas obtener información sobre cómo usar los valores del PCR lateBootReportEvent para diagnosticar una falla en la validación de la integridad, consulta Determina la causa de la falla en la validación de la integridad del inicio.

Autorización de Cloud Identity and Access Management

La VM protegida usa Cloud IAM para obtener autorización.

Las operaciones de la VM protegida usan los siguientes permisos de Compute Engine:

  • compute.instances.updateShieldedVmConfig: permite al usuario cambiar las opciones de la VM protegida en una instancia de VM.
  • compute.instances.setShieldedVmIntegrityPolicy: permite al usuario actualizar el modelo de referencia de la política de integridad en una instancia de VM.

Se otorgan los permisos de la VM protegida a las siguientes funciones de Compute Engine:

  • roles/compute.instanceAdmin.v1
  • roles/compute.securityAdmin

También puedes otorgar permisos de la VM protegida a funciones personalizadas.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…