VM schermata

La VM schermata offre un'integrità verificabile delle istanze VM di Compute Engine, quindi puoi avere la certezza che le tue istanze non siano state compromesse da malware o rootkit a livello di avvio o kernel. L'integrità verificabile della VM schermata è ottenuta mediante l'utilizzo dell'avvio protetto, dell'avvio con misurazioni abilitato Virtual Trusted Platform Module (vTPM) e del monitoraggio dell'integrità.

La VM schermata è la prima offerta dell'iniziativa Shielded Cloud. L'iniziativa Shielded Cloud è pensata per offrire una base ancora più sicura per tutti i servizi Google Cloud Platform (GCP), fornendo integrità verificabile e funzionalità di offerta, come la schermatura o la sigillatura di vTPM, che aiutano a prevenire l'esfiltrazione di dati.

Avvio protetto

L'avvio protetto garantisce che il sistema esegua solo software autentici verificando la firma digitale di tutti i componenti di avvio e interrompendo il processo di avvio in caso di mancata verifica della firma.

Le istanze VM schermate eseguono il firmware che è firmato e verificato utilizzando l'Autorità di certificazione di Google, assicurando che il firmware dell'istanza non sia modificato e stabilendo la radice di attendibilità per l'avvio protetto. Il firmware Unified Extensible Firmware Interface (UEFI) 2.3.1 gestisce in modo sicuro i certificati che contengono le chiavi utilizzate dai produttori di software per firmare il firmware di sistema, il bootloader di sistema e tutti i programmi binari caricati. Le istanze VM schermate utilizzano il firmware UEFI.

Ad ogni avvio, il firmware UEFI verifica la firma digitale di ogni componente di avvio rispetto all'archivio sicuro delle chiavi approvate. Non è consentito eseguire alcun componente di avvio non firmato correttamente o non firmato per nulla.

Se ciò si verifica, l'istanza VM mostrerà uno stato di errore nella console GCP e il log della console seriale dell'istanza VM avrà una voce contenente le stringhe UEFI: Impossibile caricare l'immagine e lo Stato: Violazione di sicurezza, insieme a una descrizione dell'opzione di avvio non riuscita. Per risolvere l'errore, disabilita Avvio protetto utilizzando le istruzioni in Modifica delle opzioni delle VM schermate, in modo da poter avviare l'istanza VM, diagnosticare e risolvere il problema, quindi riattivare l'avvio protetto.

Virtual Trusted Platform Module (vTPM)

Un vTPM è un modulo per una piattaforma fidata virtualizzato, ossia un chip di computer specializzato che puoi utilizzare per proteggere oggetti, come chiavi e certificati, che utilizzi per autenticare l'accesso al tuo sistema. Il vTPM della VM schermata è completamente compatibile con la specifica della libreria TPM (Trusted Computing Group) 2.0 e utilizza BoringSSL, convalidato FIPS 140-2 L1.

Il vTPM della VM schermata consente l'avvio con misurazioni eseguendo le misurazioni necessarie per creare una baseline di avvio nota, denominata baseline dei criteri di integrità. La baseline dei criteri di integrità è utilizzata per il confronto con misurazioni da avvii VM successivi per stabilire se qualcosa è cambiato.

Puoi inoltre utilizzare il vTPM per proteggere i secret tramite schermatura o sigillatura. Vedi il progetto Go-TPM su GitHub per gli esempi di linguaggio Go che illustrano come utilizzare un vTPM per questo scopo.

Avvio con misurazioni

Durante l'avvio con misurazioni, un hash di ciascun componente (ad esempio, il firmware, il bootloader o il kernel) viene creato mentre il componente viene caricato e quell'hash viene quindi concatenato e riproposto con gli hash di tutti i componenti che sono già stati caricati, come illustrato di seguito:

Processo di avvio con misurazioni.

Questa informazione identifica sia i componenti che sono stati caricati, sia il loro ordine di caricamento.

La prima volta che si avvia un'istanza VM, l'avvio con misurazioni crea la baseline dei criteri di integrità per il primo insieme di queste misurazioni e archivia in modo sicuro questi dati. Ogni volta che viene avviata l'istanza VM, queste misurazioni vengono riprese di nuovo e archiviate nella memoria sicura fino al successivo riavvio. Disporre di questi due insiemi di misurazioni consente il monitoraggio dell'integrità, che puoi utilizzare per determinare se sono state apportate modifiche alla sequenza di avvio di un'istanza VM.

Monitoraggio dell'integrità

Il monitoraggio dell'integrità consente di comprendere e prendere decisioni sullo stato delle istanze VM.

Il monitoraggio dell'integrità fa affidamento sulle misurazioni create da Avvio con misurazioni, che utilizza i registri di configurazione della piattaforma (PCR) per archiviare informazioni sui componenti e sull'ordine di caricamento dei componenti sia della baseline dei criteri di integrità (una sequenza di avvio nota), sia della sequenza di avvio più recente.

Il monitoraggio dell'integrità confronta le misurazioni di avvio più recenti con la baseline dei criteri di integrità e restituisce una coppia di risultati Superato/Non superato a seconda che corrispondano o meno, uno per la sequenza fase iniziale di avvio e uno per la sequenza fase finale di avvio. La fase iniziale di avvio è la sequenza di avvio dall'inizio del firmware UEFI fino a quando non passa il controllo al bootloader. La fase finale di avvio è la sequenza di avvio dal bootloader finché non passa il controllo al kernel del sistema operativo. Se una delle parti della sequenza di avvio più recente non corrisponde alla baseline, ottieni un errore di convalida dell'integrità.

Se l'errore è previsto, ad esempio se è stato applicato un aggiornamento di sistema su tale istanza VM, devi aggiornare la baseline dei criteri di integrità. L'aggiornamento della baseline dei criteri di integrità imposta la baseline sulle misurazioni acquisite dalla sequenza di avvio più recente. Se non è previsto, devi interrompere l'istanza VM e indagare sul motivo dell'errore.

Puoi visualizzare i rapporti di integrità in Stackdriver Monitoring e impostare avvisi sugli errori di integrità. Puoi esaminare i dettagli dei risultati del monitoraggio dell'integrità in Stackdriver Logging. Per ulteriori informazioni, consulta Monitoraggio dell'integrità su istanze VM schermate.

Eventi di monitoraggio dell'integrità

La VM schermata consente di creare voci di log per i seguenti tipi di eventi:

  • clearTPMEvent: riconosce se il vTPM è stato cancellato, il che cancella qualsiasi secret memorizzato in esso. Ciò non influisce su alcun aspetto della VM schermata, quindi ti interesserà solo se utilizzi il vTPM per proteggere i dati sensibili come descritto in Virtual Trusted Platform Module (vTPM).
  • earlyBootReportEvent: riconosce se è stato superato il controllo dell'integrità della sequenza fase iniziale di avvio e fornisce dettagli sui valori della PCR dalla baseline e la sequenza di avvio più recente confrontata per effettuare tale determinazione.
  • lateBootReportEvent: riconosce se è stato superato il controllo dell'integrità della sequenza fase finale di avvio e fornisce dettagli sui valori della PCR dalla baseline e la sequenza di avvio più recente confrontata per effettuare tale determinazione.
  • setShieldedInstanceIntegrityPolicy: registrato ogni volta che si aggiorna la baseline dei criteri di integrità.
  • shutdownEvent: registrato ogni volta che l'istanza VM viene arrestata.
  • startupEvent: registrato ogni volta che viene avviata l'istanza VM. L'informazione interessante in questo evento è il valore bootCounter, che identifica quante volte questa istanza è stata riavviata.
  • updateShieldedInstanceConfig: registrato ogni volta che si abilita o disabilita una delle opzioni della VM schermata.

La progressione evento tipica che si vede nei log è startupEvent , earlyBootReportEvent , lateBootReportEvent e infine shutdownEvent, il tutto con lo stesso valore bootCounter per identificarli come descrizione della stessa sequenza di avvio dell'istanza VM.

Se aggiorni la baseline dei criteri di integrità in risposta a un errore di integrità previsto su un'istanza VM, verranno visualizzati eventi earlyBootReportEvent e lateBootReportEvent aggiuntivi che descrivono le nuove misurazioni della baseline dei criteri di integrità. L'esempio seguente mostra la sequenza prevista:

  • startupEvent
  • earlyBootReportEvent che confronta la baseline originale con la sequenza di avvio più recente (riuscito)
  • lateBootReportEvent che confronta la baseline originale con la sequenza di avvio più recente (non riuscito)
  • setShieldedInstanceIntegrityPolicy quando aggiorni la baseline dei criteri di integrità, che imposta la baseline sulle misurazioni acquisite dall'ultima sequenza di avvio
  • earlyBootReportEvent che confronta la nuova baseline con la sequenza di avvio più recente (riuscito)
  • lateBootReportEvent che confronta la nuova baseline con la sequenza di avvio più recente (riuscito)

Windows

earlyBootReportEvent

Le informazioni importanti in earlyBootReportEvent si trovano nella sezione earlyBootReportEvent, che contiene i seguenti elementi e sezioni:

  • actualMeasurements: contiene i valori PCR (platform configuration register) per la sequenza di avvio più recente. I valori PCR sono ciò che identifica i componenti di avvio e l'ordine di caricamento dei componenti utilizzati dalla sequenza di avvio più recente e sono quelli confrontati con la baseline dei criteri di integrità (i cui valori sono acquisiti nella sezione policyMeasurements) per determinare se ci sono state modifiche nella sequenza di avvio dell'istanza VM. La sezione actualMeasurements contiene i seguenti elementi:

    • 0: contiene il valore per PCR0, che contiene informazioni sui componenti del firmware. Questo PCR non è implementato e contiene invece un valore statico. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 1: contiene il valore per PCR4, che contiene informazioni sul codice boot manager UEFI e sui tentativi di avvio.
    • 2: contiene il valore per PCR5, che contiene informazioni sulla tabella delle partizioni GUID del disco. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 3: contiene il valore per PCR7, che contiene informazioni sul criterio di avvio protetto dell'istanza.
  • policyEvaluationPassed: identifica se la sezione specificata della sequenza di avvio ha superato la verifica rispetto alla baseline dei criteri di integrità.

  • policyMeasurements: contiene i valori PCR per la baseline dei criteri di integrità. La sezione policyMeasurements contiene i seguenti elementi:

    • 0: contiene il valore per PCR0, che contiene informazioni sui componenti del firmware. Questo PCR non è implementato e contiene invece un valore statico. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 1: contiene il valore per PCR4, che contiene informazioni sul codice boot manager UEFI e sui tentativi di avvio.
    • 2: contiene il valore per PCR7, che contiene informazioni sul criterio di avvio protetto dell'istanza.

Per informazioni su come utilizzare i valori PCR earlyBootReportEvent per diagnosticare un errore di convalida dell'integrità di avvio, consulta Determinazione della causa dell'errore di convalida dell'integrità di avvio.

lateBootReportEvent

Le informazioni importanti in lateBootReportEvent si trovano nella sezione lateBootReportEvent, che contiene i seguenti elementi e sezioni:

  • actualMeasurements: contiene i valori PCR (platform configuration register) per la sequenza di avvio più recente. I valori PCR sono ciò che identifica i componenti di avvio e l'ordine di caricamento dei componenti utilizzati dalla sequenza di avvio più recente e sono quelli confrontati con la baseline dei criteri di integrità (i cui valori sono acquisiti nella sezione policyMeasurements) per determinare se ci sono state modifiche nella sequenza di avvio dell'istanza VM. La sezione actualMeasurements contiene i seguenti elementi:

    • 0: contiene il valore per PCR0, che contiene informazioni sui componenti del firmware. Questo PCR non è implementato e contiene invece un valore statico. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 1: contiene il valore per PCR4, che contiene informazioni sul codice boot manager UEFI e sui tentativi di avvio.
    • 2: contiene il valore per PCR5, che contiene informazioni sulla tabella delle partizioni GUID del disco. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 3: contiene il valore per PCR7, che contiene informazioni sul criterio di avvio protetto dell'istanza.
    • 4: contiene il valore per PCR11, che contiene informazioni sul controllo di accesso di BitLocker Drive Encryption.
    • 5: contiene il valore per PCR12, che contiene informazioni sugli eventi dati. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 6: contiene il valore per PCR13, che contiene informazioni sul kernel di Windows e i driver di avvio.
    • 7: contiene il valore per PCR14, che contiene informazioni sulle autorità di avvio di Windows.
  • policyEvaluationPassed: identifica se la sezione specificata della sequenza di avvio ha superato la verifica rispetto alla baseline dei criteri di integrità.

  • policyMeasurements: contiene i valori PCR per la baseline dei criteri di integrità. La sezione policyMeasurements contiene i seguenti elementi:

    • 0: contiene il valore per PCR0, che contiene informazioni sui componenti del firmware. Questo PCR non è implementato e contiene invece un valore statico. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 1: contiene il valore per PCR4, che contiene informazioni sul codice boot manager UEFI e sui tentativi di avvio.
    • 2: contiene il valore per PCR7, che contiene informazioni sul criterio di avvio protetto dell'istanza.
    • 3: contiene il valore per PCR11, che contiene informazioni sul controllo di accesso di BitLocker Drive Encryption.
    • 4: contiene il valore per PCR13, che contiene informazioni sul kernel di Windows e i driver di avvio.
    • 5: contiene il valore per PCR14, che contiene informazioni sulle autorità di avvio di Windows.

Per informazioni su come utilizzare i valori PCR lateBootReportEvent per diagnosticare un errore di convalida dell'integrità di avvio, consulta Determinazione della causa dell'errore di convalida dell'integrità di avvio.

Linux

earlyBootReportEvent

Le informazioni importanti in earlyBootReportEvent si trovano nella sezione earlyBootReportEvent, che contiene i seguenti elementi e sezioni:

  • actualMeasurements: contiene i valori PCR (platform configuration register) per la sequenza di avvio più recente. I valori PCR sono ciò che identifica i componenti di avvio e l'ordine di caricamento dei componenti utilizzati dalla sequenza di avvio più recente e sono quelli confrontati con la baseline dei criteri di integrità (i cui valori sono acquisiti nella sezione policyMeasurements) per determinare se ci sono state modifiche nella sequenza di avvio dell'istanza VM. La sezione actualMeasurements contiene i seguenti elementi:

    • 0: contiene il valore per PCR0, che contiene informazioni sui componenti del firmware. Questo PCR non è implementato e contiene invece un valore statico. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 1: contiene il valore per PCR4, che contiene informazioni sullo shim del sistema operativo.
    • 2: contiene il valore per PCR5, che contiene informazioni sulla tabella delle partizioni GUID del disco. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 3: contiene il valore per PCR7, che contiene informazioni sul criterio di avvio protetto dell'istanza.
  • policyEvaluationPassed: identifica se la sezione specificata della sequenza di avvio ha superato la verifica rispetto alla baseline dei criteri di integrità.

  • policyMeasurements: contiene i valori PCR per la baseline dei criteri di integrità. La sezione policyMeasurements contiene i seguenti elementi:

    • 0: contiene il valore per PCR0, che contiene informazioni sui componenti del firmware. Questo PCR non è implementato e contiene invece un valore statico. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 1: contiene il valore per PCR4, che contiene informazioni sullo shim del sistema operativo.
    • 2: contiene il valore per PCR7, che contiene informazioni sul criterio di avvio protetto dell'istanza.

Per informazioni su come utilizzare i valori PCR earlyBootReportEvent per diagnosticare un errore di convalida dell'integrità di avvio, consulta Determinazione della causa dell'errore di convalida dell'integrità di avvio.

lateBootReportEvent

Le informazioni importanti in lateBootReportEvent si trovano nella sezione lateBootReportEvent, che contiene i seguenti elementi e sezioni:

  • actualMeasurements: contiene i valori PCR (platform configuration register) per la sequenza di avvio più recente. I valori PCR sono ciò che identifica i componenti di avvio e l'ordine di caricamento dei componenti utilizzati dalla sequenza di avvio più recente e sono quelli confrontati con la baseline dei criteri di integrità (i cui valori sono acquisiti nella sezione policyMeasurements) per determinare se ci sono state modifiche nella sequenza di avvio dell'istanza VM. La sezione actualMeasurements contiene i seguenti elementi:

    • 0: contiene il valore per PCR0, che contiene informazioni sui componenti del firmware. Questo PCR non è implementato e contiene invece un valore statico. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 1: contiene il valore per PCR4, che contiene informazioni sul bootloader di seconda fase e sul kernel.
    • 2: contiene il valore per PCR5, che contiene informazioni sulla tabella delle partizioni GUID del disco. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 3: contiene il valore per PCR7, che contiene informazioni sul criterio di avvio protetto dell'istanza.
  • policyEvaluationPassed: identifica se la sezione specificata della sequenza di avvio ha superato la verifica rispetto alla baseline dei criteri di integrità.

  • policyMeasurements: contiene i valori PCR per la baseline dei criteri di integrità. La sezione policyMeasurements contiene i seguenti elementi:

    • 0: contiene il valore per PCR0, che contiene informazioni sui componenti del firmware. Questo PCR non è implementato e contiene invece un valore statico. Non viene utilizzato durante la convalida della sequenza di avvio più recente rispetto alla baseline dei criteri di integrità.
    • 1: contiene il valore per PCR4, che contiene informazioni sul bootloader di seconda fase e sul kernel.
    • 2: contiene il valore per PCR7, che contiene informazioni sul criterio di avvio protetto dell'istanza.

Per informazioni su come utilizzare i valori PCR lateBootReportEvent per diagnosticare un errore di convalida dell'integrità di avvio, consulta Determinazione della causa dell'errore di convalida dell'integrità di avvio.

Autorizzazione Cloud Identity and Access Management

La VM schermata utilizza Cloud IAM per l'autorizzazione.

Le operazioni delle VM schermate utilizzano le seguenti autorizzazioni di Compute Engine:

  • compute.instances.updateShieldedInstanceConfig: consente all'utente di modificare le opzioni della VM schermata su un'istanza VM.
  • compute.instances.setShieldedInstanceIntegrityPolicy: consente all'utente di aggiornare la baseline dei criteri di integrità su un'istanza VM.
  • compute.instances.getShieldedInstanceIdentity: consente all'utente di recuperare le informazioni della chiave di verifica dal vTPM.

Le autorizzazioni delle VM schermate utilizzano le seguenti autorizzazioni di Compute Engine:

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

Puoi inoltre concedere autorizzazioni di VM schermate a ruoli personalizzati.

Vincoli dei criteri dell'organizzazione per la VM schermata

Puoi impostare il vincolo dei criteri dell'organizzazione constraints/compute.requireShieldedVm su True per richiedere che le istanze VM di Compute Engine create nell'organizzazione siano istanze VM schermate.

Scopri come impostare il vincolo constraints/compute.requireShieldedVm in Utilizzo dei vincoli booleani nei criteri dell'organizzazione. Devi essere un amministratore dei criteri dell'organizzazione per impostare un vincolo.

Passaggi successivi

Hai trovato utile questa pagina? Facci sapere cosa ne pensi:

Invia feedback per...