Questo argomento tratta contenuti che descrivono come preparare il disco, generare certificati di sicurezza e abilitare le funzionalità del sistema operativo (OS) necessarie per creare un'immagine schermata personalizzata.
Per impostazione predefinita, la Shielded VM supporta Container-Optimized OS, varie distribuzioni di Linux e più versioni di Windows Server. Tuttavia, questo tipo di macchina virtuale può essere utile anche in caso avessi bisogno di un'immagine personalizzata per la tua applicazione.
Preparazione del disco
Per supportare funzionalità come l'avvio protetto, la Shielded VM si affida a un firmware conforme a Unified Extensible Firmware Interface (UEFI). La Shielded VM richiede uno schema di tabella di partizione GUID (GPT); il record di avvio principale (MBR) non è supportato.
Il disco deve avere almeno due partizioni:
- Partizione di sistema EFI (ESP): 100 megabyte (MB) sono sufficienti per questa partizione. Si tratta comunque solo di un suggerimento. Se necessario, puoi creare una partizione più grande. L'unico requisito per l'ESP è che questa partizione deve essere formattata con un file system FAT (File Allocation Table).
- Partizione del sistema operativo: il resto del disco. Questa partizione contiene il sistema operativo di avvio (Linux o Windows). Non sono previste limitazioni per le dimensioni di questa partizione.
Se necessario, puoi creare altre partizioni di dati.
Copia del sistema operativo nella corrispondente partizione
Una volta formattato e partizionato correttamente il disco, copia i file del sistema operativo nella
corrispondente partizione. Il sistema operativo ha un bootloader che deve trovarsi in un percorso valido
sull'ESP, come indicato nella specifica UEFI:
\EFI\Boot\bootx64.efi
. Tieni presente che potrebbe essere necessario copiare il bootloader
del sistema operativo nella posizione specificata.
Per Windows, esiste un comando chiamato bcdboot
che può essere utilizzato per copiare il bootloader
del sistema operativo nella posizione corretta, oltre che per altre azioni richieste da Windows
(come la copia del datastore BCD). Per ulteriori informazioni, vedi Opzioni
di riga di comando
BCDBoot in Microsoft Hardware Dev Center.
Quando utilizzi le immagini della Shielded VM, puoi inoltre usufruire di altre due funzionalità di sicurezza: il Virtual Trusted Platform Module (vTPM) e il monitoraggio dell'integrità. Le sezioni seguenti illustrano i vantaggi di queste funzionalità e i requisiti del sistema operativo.
Virtual Trusted Platform Module (vTPM)
Un Trusted Platform Module è un dispositivo specializzato per proteggere oggetti, come chiavi e certificati, che utilizzi per autenticare l'accesso al tuo sistema. Nelle immagini della Shielded VM, vengono utilizzate versioni virtualizzate dei dispositivi TPM per attivare l'avvio con misurazioni. In breve, l'avvio con misurazioni garantisce l'integrità del percorso di caricamento critico dei driver di avvio e del kernel. Il dispositivo vTPM e l'avvio con misurazioni sono trattati più nel dettaglio nella documentazione relativa alla Shielded VM.
Per utilizzare il vTPM e l'avvio con misurazioni, è necessario un driver. Le versioni minime del sistema operativo con supporto TPM 2.0 sono:
- Windows Server 2012
- Versione per Linux 3.20
- Red Hat Enterprise Linux 7.3
Monitoraggio dell'integrità
Il monitoraggio dell'integrità consente di comprendere e assumere decisioni sullo stato delle istanze VM. Il monitoraggio utilizza i dati generati dall'avvio con misurazioni per generare report sull'istanza VM. La documentazione della Shielded VM contiene ulteriori informazioni sul monitoraggio dell'integrità e sull'automazione delle risposte a errori di convalida dell'integrità.
Per supportare la funzionalità di monitoraggio dell'integrità della Shielded VM, l'immagine deve generare indicatori di integrità:
- Windows genera indicatori di integrità per impostazione predefinita.
- Su Linux deve essere installato e abilitato
il modulo Integrity Measurement Architecture (IMA). Questo modulo deve avere
CONFIG_IMA_MEASURE_PCR_IDX
impostato su 10. Questo è il valore predefinito per il modulo IMA.
Importazione dell'immagine del disco in Compute Engine
Una volta preparata l'immagine, devi caricarla in Compute Engine. Per i passaggi necessari per caricare l'immagine su Google Cloud, vedi Importazione delle immagini del disco di avvio su Compute Engine.
Configurazione dei certificati per l'avvio protetto
Quando aggiungi un'immagine della Shielded VM, un insieme di database e certificati pubblici di avvio protetto viene trasmesso a Compute Engine. Questi file vengono memorizzati nelle variabili UEFI corrispondenti e utilizzati per stabilire relazioni di trust tra la piattaforma, il firmware e il sistema operativo. I certificati devono essere certificati X.509 con codifica Distinguished Encoding Rules (DER). I database possono essere un certificato o un file binario non elaborato. Esistono quattro valori in totale:
- Platform key (
pk
): una chiave utilizzata per stabilire la relazione di trust tra il proprietario della piattaforma e il firmware. Puoi specificare una sola platform key e questa deve essere un certificato X.509 valido. - Key Exchange Key (
kek
): una chiave utilizzata per stabilire una relazione di trust tra il firmware e il sistema operativo. Per questo valore puoi specificare più chiavi. - Forbidden Key Database (
dbx
): un database di certificati revocati che causano l'interruzione dell'avvio del sistema se un file di avvio è firmato con uno di questi. Per questo valore puoi specificare uno o più valori. - Key Database (
db
): un database di certificati attendibili che possono essere utilizzati per firmare i file di avvio. Per questo valore puoi specificare uno o più valori.
La specifica UEFI contiene ulteriori informazioni su questi valori e sul loro relativo funzionamento.
Nell'esempio seguente, OpenSSL viene utilizzato per creare le chiavi e i certificati di avvio protetto.
Genera una coppia di chiavi RSA a 2048 bit
openssl genrsa -out secure-boot-key.rsa 2048
Genera un certificato X.509 autofirmato dalla chiave in formato DER
openssl req -new -x509 -sha256 \ -subj '/CN=secure-boot' \ -key secure-boot-key.rsa \ -outform DER \ -out secure-boot-cert.pem
Aggiunta dell'immagine protetta a Google Cloud
Ora puoi aggiungere l'immagine a Compute Engine utilizzando l'immagine e i certificati caricati. L'immagine può essere aggiunta utilizzando Google Cloud CLI o l'API Compute Engine.
gcloud
Aggiungi l'immagine personalizzata a Compute Engine:
gcloud compute images create [IMAGE_NAME] \ --source-disk [SOURCE_DISK] \ --source-disk-zone [ZONE] \ --platform-key-file=\ --key-exchange-key-file= \ --signature-database-file= , \ --forbidden-database-file= \ --guest-os-features="UEFI_COMPATIBLE[,WINDOWS]"
dove:
[IMAGE_NAME]
è il nome della nuova immagine.[SOURCE_DISK]
è il disco da cui vuoi creare la nuova immagine.[ZONE]
è la zona in cui si trova il disco.
L'opzione WINDOWS
per guest-os-features
è obbligatoria solo se utilizzi un'immagine
Windows. Per ulteriori informazioni sulla creazione di un'immagine, vedi
il riferimento gcloud create
.
API
Segui le istruzioni per
creare un'immagine da un disco permanente,
ma specifica initial_state_config
nel corpo della richiesta.
...
"sourceDisk": "/zones/[ZONE]/disks/[SOURCE_DISK]",
"initial_state_config": {
"pk": {
"content": [KEY],
"fileType": [BIN,X509]
},
"keks": [
{
"content": [KEY],
"fileType": [BIN,X509]
},
...
],
"dbxs": [
{
"content": [KEY],
"fileType": [BIN,X509]
},
...
],
"dbs": [
{
"content": [KEY],
"fileType": [BIN,X509]
},
...
]
}
Certificati predefiniti
Tieni presente che pk
, keks
, dbxs
e dbs
sono campi facoltativi. Se fornisci una
configurazione dello stato iniziale, alcuni o tutti questi campi potrebbero non essere impostati. Quando viene creata una
nuova istanza dall'immagine, Google Cloud fornisce un valore predefinito
per PK
, KEK
, db
e dbx
, a meno che non sia stato inserito
un valore personalizzato su un campo non impostato. Se non fornisci una configurazione dello stato iniziale (ovvero la configurazione
è mancante, non solo vuota), l'immagine sarà configurata a partire dallo stato
iniziale dell'immagine di origine.
I valori predefiniti di questi campi sono:
PK
: il certificato associato alla chiave privata predefinita creata da GoogleKEK
: il certificato KEK Microsoft predefinito. Scarica da Microsoft:MicCorKEKCA2011_2011-06-24.crt
.dbx
: l'elenco revoche DBX di Microsoft predefinito. Scarica dal forum Unified Extensible Firmware Interface: file elenco revoche UEFIdb
: i seguenti due certificati:- Microsoft Windows Production PCA 2011 con un hash del certificato SHA-1 di
58 0a 6f 4c c4 e4 b6 69 b9 eb dc 1b 2b 3e 08 7b 80 d0 67 8d
. Scarica da Microsoft:MicWinProPCA2011_2011-10-19.crt
. - Microsoft Corporation UEFI CA 2011 con un hash del certificato SHA-1 di
46 de f6 3b 5c e6 1c f8 ba 0d e2 e6 63 9c 10 19 d0 ed 14 f3
. Scarica da Microsoft:MicCorUEFCA2011_2011-06-27.crt
.
- Microsoft Windows Production PCA 2011 con un hash del certificato SHA-1 di
Presta attenzione poiché i certificati che aggiungi sovrascrivono quelli predefiniti, che quindi non si uniscono a quelli che fornisci.