Questo argomento descrive come preparare il disco, generare certificati di sicurezza e attivare le funzionalità del sistema operativo (OS) necessarie per creare un'immagine protetta personalizzata.
Per impostazione predefinita, la VM protetta supporta Container-Optimized OS, varie distribuzioni di Linux e più versioni di Windows Server. Tuttavia, se hai bisogno di immagini personalizzate per la tua applicazione, puoi comunque sfruttare la VM protetta.
Preparazione del disco
La VM protetta si basa su un firmware conforme a Unified Extensible Firmware Interface (UEFI) per supportare funzionalità come l'avvio protetto. La VM protetta richiede un schema GUID Partition Table (GPT); il master boot record (MBR) non è supportato.
Il disco deve avere almeno due partizioni:
- Partizione di sistema EFI (ESP): 100 megabyte (MB) sono sufficienti per questa partizione e sono solo un suggerimento. Se necessario, puoi creare una partizione più grande. L'unico requisito per l'ESP è che debba essere formattato 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 partizione del sistema operativo
Una volta formattato e partizionato correttamente il disco, copia i file del sistema operativo nella corrispondente partizione. Il sistema operativo ha un boot loader che deve trovarsi in un percorso valido
sull'ESP, come specificato nella specifica UEFI:
\EFI\Boot\bootx64.efi
. Tieni presente che potrebbe essere necessario copiare il bootloader
dell'OS 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 ad altre azioni richieste da Windows (ad esempio la copia del database BCD). Per ulteriori informazioni, consulta BCDBoot
Opzioni di riga di comando nel Microsoft Hardware Dev Center.
Quando utilizzi le immagini delle VM schermate, puoi anche usufruire di altre due funzionalità di sicurezza: il Trusted Platform Module virtuale (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 modulo per una piattaforma fidata è un dispositivo specializzato per proteggere oggetti, come chiavi e certificati, che utilizzi per autenticare l'accesso al tuo sistema. Nelle immagini VM schermate, 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. vTPM e l'avvio con misurazioni sono trattati in modo più dettagliato nella documentazione di Shielded VM.
Per utilizzare 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 Linux 3.20
- Red Hat Enterprise Linux 7.3
Monitoraggio dell'integrità
Il monitoraggio dell'integrità consente di comprendere e prendere decisioni sullo stato delle istanze VM. Il monitoraggio utilizza i dati generati da Measured Boot per generare report sull'istanza VM. La documentazione delle VM schermate contiene ulteriori informazioni sul monitoraggio dell'integrità e sull'automazione delle risposte ai fallimenti della convalida dell'integrità.
Per supportare la funzionalità di monitoraggio dell'integrità delle VM schermate, l'immagine deve produrre indicatori di integrità:
- Windows genera indicatori di integrità per impostazione predefinita.
- Su Linux deve essere installato e abilitato il modulo IMA (Integrity Measurement Architecture). Il 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, consulta Importazione delle immagini del disco di avvio su Compute Engine.
Configurazione dei certificati per l'avvio protetto
Quando aggiungi un'immagine di VM protetta, un insieme di database e certificati pubblici di Avvio protetto viene passato a Compute Engine. Questi file vengono memorizzati nelle variabili UEFI corrispondenti e utilizzati per stabilire relazioni di attendibilità 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:
- Chiave della piattaforma (
pk
): una chiave utilizzata per stabilire il rapporto di attendibilità tra il proprietario della piattaforma e il firmware. Puoi specificare una sola chiave della piattaforma e deve essere un certificato X.509 valido. - Chiave di scambio (
kek
): una chiave utilizzata per stabilire un rapporto di attendibilità tra il firmware e il sistema operativo. Puoi specificare più chiavi per questo valore. - Database delle chiavi vietate (
dbx
): un database di certificati che sono stati revocati e che causeranno l'interruzione dell'avvio del sistema se un file di avvio è firmato con uno di questi. Puoi specificare uno o più valori per questo valore. - Key Database (
db
): un database di certificati attendibili che possono essere utilizzati per firmare i file di avvio. Puoi specificare uno o più valori per questo valore.
La specifica UEFI contiene ulteriori informazioni su questi valori e sul loro funzionamento.
Nell'esempio seguente, OpenSSL viene utilizzato per creare le chiavi e i certificati di Secure Boot.
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, consulta la pagina di 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 impostato 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 avrà la configurazione dello stato iniziale dell'immagine di origine.
I valori predefiniti di questi campi sono:
PK
: il certificato associato alla chiave privata predefinita creata da Google.KEK
: il certificato KEK Microsoft predefinito. Scarica da Microsoft:MicCorKEKCA2011_2011-06-24.crt
.dbx
: l'elenco di revoca DBX di Microsoft predefinito. Scarica dal forum Unified Extensible Firmware Interface: file elenco di revoca UEFIdb
: i seguenti due certificati:- Il PCA di produzione Microsoft Windows 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
. - L'autorità di certificazione UEFI di Microsoft Corporation 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
.
- Il PCA di produzione Microsoft Windows 2011 con un hash del certificato SHA-1 di
Fai attenzione, perché l'aggiunta dei tuoi certificati sovrascriverà quelli predefiniti anziché unirli a quelli che fornisci.