Avviare una VM in modo sicuro

L'avvio protetto contribuisce a garantire che il sistema esegua solo software autentici verificando la firma digitale di tutti i componenti di avvio e interrompendo il processo di avvio se la verifica della firma non riesce.

Google Distributed Cloud (GDC) air-gapped utilizza il firmware Unified Extensible Firmware Interface (UEFI) per gestire i certificati e le chiavi utilizzati per la firma del software.

Il firmware UEFI 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. Per visualizzare la documentazione UEFI, visita https://uefi.org/sites/default/files/resources/UEFI_Secure_Boot_in_Modern_Computer_Security_Solutions_2013.pdf.

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. Per abilitare l'avvio protetto, devi impostare il tipo bootloader della VM su uefi.

Un vTPM è un Trusted Platform Module virtualizzato. Per saperne di più sui vTPM, visita la pagina https://trustedcomputinggroup.org/trusted-platform-module-tpm-summary/. È un chip di computer specializzato che puoi utilizzare per proteggere oggetti, come chiavi e certificati, che utilizzi per autenticare l'accesso al tuo sistema. Puoi anche utilizzare il vTPM per proteggere i secret tramite schermatura o sigillatura. Per saperne di più sull'archiviazione sigillata, visita la pagina https://en.wikipedia.org/wiki/Trusted_Computing#SEALED-STORAGE. Vedi il progetto Go-TPM su GitHub - https://github.com/google/go-tpm - per gli esempi di linguaggio Go che illustrano come utilizzare un vTPM per questo scopo.

Prima di iniziare

Per utilizzare i comandi dell'interfaccia a riga di comando (CLI) gdcloud, assicurati di aver scaricato, installato e configurato la CLI gdcloud. Tutti i comandi per Distributed Cloud utilizzano la CLI gdcloud o kubectl e richiedono un ambiente del sistema operativo.

Recupera il percorso del file kubeconfig

Per eseguire comandi sul server API Management, assicurati di disporre delle seguenti risorse:

  1. Accedi e genera il file kubeconfig per il server API Management se non ne hai uno.

  2. Utilizza il percorso del file kubeconfig del server API Management per sostituire MANAGEMENT_API_SERVER in queste istruzioni.

Richiedere autorizzazioni e accesso

Per eseguire le attività elencate in questa pagina, devi disporre del ruolo Amministratore macchina virtuale progetto. Segui i passaggi per verificare di disporre del ruolo Amministratore VirtualMachine progetto (project-vm-admin) nello spazio dei nomi del progetto in cui si trova la VM.

Abilita avvio protetto

Abilita l'avvio protetto per una VM. Utilizza le seguenti istruzioni per una VM denominata VM_NAME nello spazio dei nomi del progetto (PROJECT_NAMESPACE).

  1. Aggiorna la risorsa personalizzata della VM per abilitare l'avvio protetto:

    kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $'
    spec:
     shieldConfig:
       bootType: uefi
       enableSecureBoot: true
    '
    
  2. Se la VM è in esecuzione, riavviala seguendo le istruzioni per riavviare una VM.

  3. Verifica di aver attivato l'avvio protetto. Stabilisci una connessione SSH alla tua VM ed esegui il seguente comando:

    mokutil --sb-state
    

    Se hai attivato l'avvio protetto, il comando restituisce SecureBoot enabled.

    Se lo strumento mokutil segnala che non hai attivato l'avvio protetto, segui i passaggi descritti nella sezione Risolvere i problemi di configurazione dell'avvio protetto.

Risolvere i problemi relativi alla configurazione dell'avvio protetto

  1. Apri la risorsa personalizzata VM in un editor:

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
    
  2. Cerca i campi o i valori mancanti come mostrato nel campo spec in "Esegui il seguente comando". Questi sono obbligatori.

  3. Se mancano informazioni o sono errate, modifica spec per aggiungere i campi mancanti e correggere i valori errati.

  4. Salva il file.

  5. Segui i passaggi descritti in Riavvia la VM.

Se i passaggi precedenti non risolvono il problema, consulta la documentazione corrispondente al sistema operativo della VM per verificare che la versione del sistema operativo supporti l'avvio protetto.

Attivare il Virtual Trusted Platform Module (vTPM)

Abilita vTPM per una VM. Utilizza le seguenti istruzioni per una VM denominata VM_NAME nello spazio dei nomi del progetto (PROJECT_NAMESPACE).

  1. Aggiorna la risorsa personalizzata VM per abilitare vTPM:

    kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $'
    spec:
       shieldConfig:
          enableVtpm: true
    '
    
  2. Se la VM è in esecuzione, riavviala seguendo le istruzioni per riavviare una VM.

  3. Verifica di aver abilitato vTPM. Stabilisci una connessione SSH alla tua VM ed esegui il seguente comando:

    dmesg | grep -i tpm
    

    Se hai abilitato correttamente vTPM, il comando restituisce il modulo TPM come parte delle tabelle ACPI. L'output è simile al seguente:

    [    7.620985] tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1, rev-id 1)
    

    Se in ACPI tables non viene visualizzato il modulo TPM, segui i passaggi descritti nella sezione Risolvere i problemi di configurazione di vTPM.

Risolvere i problemi relativi alla configurazione di vTPM

  1. Apri la risorsa personalizzata VM in un editor:

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
    
  2. Cerca i campi o i valori mancanti come mostrato nel campo spec in Esegui il seguente comando. Questi sono obbligatori.

  3. Se mancano informazioni o sono errate, modifica spec per aggiungere i campi mancanti e correggere i valori errati.

  4. Salva il file.

  5. Segui i passaggi descritti in Riavvia la VM.

Se i passaggi precedenti non risolvono il problema, consulta la documentazione corrispondente al sistema operativo della VM per verificare che la versione del sistema operativo supporti vTPM.