VM protegida

La VM protegida ofrece 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 segura virtual (vTPM) y la supervisión de integridad.

La VM protegida es la primera oferta de la iniciativa de Shielded Cloud. La iniciativa de Shield Cloud pretende proporcionar una base aún más segura para todo Google Cloud (GCP) ya que proporciona integridad verificable y ofrece funciones, como la protección de vTPM o el sellado, 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 modifique el firmware de la instancia y establece la raíz de confianza para el Inicio seguro. El firmware Interfaz de firmware de extensión unificada (UEFI) 2.3.1 administra de forma segura los certificados que contienen las claves de los fabricantes de software para firmar el firmware del sistema, el cargador de inicio del sistema y los archivos binarios que cargan. Las instancias de VM protegida usan el firmware UEFI.

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 o que se haya firmado de manera incorrecta.

Si esto ocurre, la instancia de VM mostrará un estado de error en Google Cloud Console, y el registro de la consola en serie de la instancia de VM tendrá una entrada que contiene las strings UEFI: error de carga de imagen y Estado: infracción de seguridad, junto con una descripción de la opción de inicio que falló. Para solucionar la falla, inhabilita el Inicio seguro con las instrucciones que aparecen en la sección Modifica las opciones de VM protegida, a fin de que puedas iniciar la instancia de VM, diagnosticar y resolver el problema, y, luego, volver a habilitar el Inicio seguro.

Módulo de plataforma segura virtual (vTPM)

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

El vTPM de la VM protegida habilita el inicio medido mediante el cumplimiento de las medidas necesarias para crear un modelo de referencia de inicio adecuado 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, firmware, bootloader o kernel) a medida que se carga el componente. Luego, ese hash se concatena y se crea otro 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 que creó el inicio medido, que utilizan 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 secuencia de inicio adecuada 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 eliminó el vTPM, lo que borra todos los secretos almacenados en este. 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 segura virtual (vTPM).
  • earlyBootReportEvent: identifica si se aprobó la verificación de integridad de la secuencia de inicio anticipado, y proporciona detalles sobre los valores del PCR a partir del modelo de referencia y la secuencia de inicio más reciente que se compararon para tomar esa determinación.
  • lateBootReportEvent: identifica si se aprobó la verificación de integridad de la secuencia de inicio retardado, y proporciona detalles sobre los valores del PCR a partir del modelo de referencia y la secuencia de inicio más reciente que se compararon para tomar esa determinación.
  • setShieldedInstanceIntegrityPolicy: 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 sobre este evento es el valor bootCounter, que identifica cuántas veces se reinició esta instancia.
  • updateShieldedInstanceConfig: se registra cada vez que habilitas o inhabilitas una de las opciones de VM protegida.

La progresión de eventos típica que se muestra en los registros es startupEvent, earlyBootReportEvent, lateBootReportEvent, y, finalmenteshutdownEvent, todos con el mismo valor bootCounter para identificarlos como descriptores 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 de integridad prevista en una instancia de VM, verás eventos de earlyBootReportEvent y lateBootReportEvent adicionales que describen las medidas nuevas del modelo de referencia de la política de integridad. En el siguiente ejemplo, se muestra la secuencia esperada:

  • startupEvent
  • earlyBootReportEvent: compara el modelo de referencia original con la secuencia de inicio más reciente (aprobado)
  • lateBootReportEvent: compara el modelo de referencia original con la secuencia de inicio más reciente (no aprobado)
  • setShieldedInstanceIntegrityPolicy: cuando actualizas el modelo de referencia de la política de integridad, que establece el modelo de referencia para las medidas capturadas desde la secuencia de inicio más reciente.
  • earlyBootReportEvent: compara el modelo de referencia nuevo con la secuencia de inicio más reciente (aprobado)
  • lateBootReportEvent: compara el modelo de referencia nuevo con la secuencia de inicio más reciente (aprobado)

Windows

earlyBootReportEvent

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

  • actualMeasurements: contiene los valores de registro de configuración de la plataforma (PCR) para la secuencia de inicio más reciente. Los valores del PCR son los que identifican los componentes de inicio y el orden de carga de componentes usados en la secuencia de inicio más reciente. Estos se comparan con el modelo de referencia de integridad (cuyos valores se capturan en la sección policyMeasurements) a fin de determinar si hubo algún cambio en la secuencia de inicio de la instancia de VM. En la sección actualMeasurements, se mencionan 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 según 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 de inicio de UEFI y los intentos de inicio.
    • 2: contiene el valor del PCR5, que incluye información sobre la tabla particionada GUID del disco. No se usa en la validación de la última secuencia de inicio según 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 determinada de la secuencia de inicio aprobó la verificación según el modelo de referencia de la política de integridad.

  • policyMeasurements: contiene los valores del PCR para el modelo de referencia de la política de integridad. En la sección , se mencionan 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 según 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 de 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 de inicio, consulta Determina la causa de la falla en la validación de la integridad de inicio.

lateBootReportEvent

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

  • actualMeasurements: contiene los valores de registro de configuración de la plataforma (PCR) para la secuencia de inicio más reciente. Los valores del PCR son los que identifican los componentes de inicio y el orden de carga de componentes usados en la secuencia de inicio más reciente. Estos se comparan con el modelo de referencia de integridad (cuyos valores se capturan en la sección policyMeasurements) a fin de determinar si hubo algún cambio en la secuencia de inicio de la instancia de VM. En la sección actualMeasurements, se mencionan 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 según 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 de inicio de UEFI y los intentos de inicio.
    • 2: contiene el valor del PCR5, que incluye información sobre la tabla particionada GUID del disco. No se usa en la validación de la última secuencia de inicio según 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 de encriptación de la 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 según 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 determinada de la secuencia de inicio aprobó la verificación según el modelo de referencia de la política de integridad.

  • policyMeasurements: contiene los valores del PCR para el modelo de referencia de la política de integridad. En la sección , se mencionan 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 según 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 de 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 de encriptación de la 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 de inicio, consulta Determina la causa de la falla en la validación de la integridad de inicio.

Linux

earlyBootReportEvent

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

  • actualMeasurements: contiene los valores de registro de configuración de la plataforma (PCR) para la secuencia de inicio más reciente. Los valores del PCR son los que identifican los componentes de inicio y el orden de carga de componentes usados en la secuencia de inicio más reciente. Estos se comparan con el modelo de referencia de integridad (cuyos valores se capturan en la sección policyMeasurements) a fin de determinar si hubo algún cambio en la secuencia de inicio de la instancia de VM. En la sección actualMeasurements, se mencionan 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 según 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 particionada GUID del disco. No se usa en la validación de la última secuencia de inicio según 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 determinada de la secuencia de inicio aprobó la verificación según el modelo de referencia de la política de integridad.

  • policyMeasurements: contiene los valores del PCR para el modelo de referencia de la política de integridad. En la sección , se mencionan 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 según 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 de inicio, consulta Determina la causa de la falla en la validación de la integridad de inicio.

lateBootReportEvent

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

  • actualMeasurements: contiene los valores de registro de configuración de la plataforma (PCR) para la secuencia de inicio más reciente. Los valores del PCR son los que identifican los componentes de inicio y el orden de carga de componentes usados en la secuencia de inicio más reciente. Estos se comparan con el modelo de referencia de integridad (cuyos valores se capturan en la sección policyMeasurements) a fin de determinar si hubo algún cambio en la secuencia de inicio de la instancia de VM. En la sección actualMeasurements, se mencionan 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 según 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 particionada GUID del disco. No se usa en la validación de la última secuencia de inicio según 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 determinada de la secuencia de inicio aprobó la verificación según el modelo de referencia de la política de integridad.

  • policyMeasurements: contiene los valores del PCR para el modelo de referencia de la política de integridad. En la sección , se mencionan 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 según 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 de inicio, consulta Determina la causa de la falla en la validación de la integridad de 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.updateShieldedInstanceConfig: permite al usuario cambiar las opciones de VM protegida en una instancia de VM.
  • compute.instances.setShieldedInstanceIntegrityPolicy: permite al usuario actualizar el modelo de referencia de la política de integridad en una instancia de VM.
  • compute.instances.getShieldedInstanceIdentity: permite que el usuario recupere la información de la clave de aprobación del vTPM.

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.

Restricciones de la política de la organización para la VM protegida

Puedes configurar la restricción de la política de la organización constraints/compute.requireShieldedVm en True para que las instancias de VM de Compute Engine creadas en tu organización sean instancias de VM protegida.

Obtén información sobre cómo establecer la restricción constraints/compute.requireShieldedVm en Usa restricciones booleanas en la política de la organización. Debes ser un administrador de políticas de la organización para configurar una restricción.

Próximos pasos