Questo documento spiega come criptare i dischi con chiavi di crittografia fornite dal cliente.
Per informazioni sulla crittografia del disco, vedi la relativa sezione.
Per informazioni sulla crittografia dei dischi con chiavi di crittografia gestite dal cliente (CMEK), vedi Proteggi le risorse utilizzando le chiavi Cloud KMS.
Se utilizzi le CSEK, fornisci le tue chiavi di crittografia, in modo che Compute Engine possa servirsene per proteggere le chiavi Google-owned and Google-managed encryption keys usate per criptare e decriptare i tuoi dati. Solo gli utenti che possono fornire la chiave corretta possono utilizzare le risorse protette da una chiave di crittografia fornita dal cliente (CSEK).
Google non archivia le tue chiavi sui suoi server e non può accedere ai tuoi dati protetti, a meno che tu non fornisca la chiave. Ciò significa anche che se dimentichi o perdi la chiave, Google non ha modo di recuperarla o di recuperare i dati criptati con la chiave persa.
Quando elimini un volume Persistent Disk, Google elimina a sua volta le chiavi di crittografia, rendendo i dati irrecuperabili. Questa operazione è irreversibile.
Prima di iniziare
- Scopri di più su dischi, immagini e snapshot dei dischi.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Seleziona la scheda relativa a come intendi utilizzare i campioni in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi Google Cloud e alle API, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
- Imposta una regione e una zona predefinite.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Se utilizzi una shell locale, crea credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Non è necessario eseguire questa operazione se utilizzi Cloud Shell.
Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.
Python
Per utilizzare gli esempi di Python in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.
Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI.
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Autenticati per usare REST nella documentazione sull'autenticazione di Google Cloud .
Ruoli e autorizzazioni richiesti
Per ottenere le autorizzazioni necessarie per creare snapshot, immagini e dischi criptati con chiavi di crittografia fornite dal cliente (CSEK), chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) -
Per connetterti a una VM con un account di servizio collegato:
Service Account User (v1) (
roles/iam.serviceAccountUser)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per creare snapshot, immagini e dischi criptati con chiavi di crittografia fornite dal cliente (CSEK). Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare snapshot, immagini e dischi criptati con chiavi di crittografia fornite dal cliente (CSEK) sono necessarie le seguenti autorizzazioni:
-
Per creare uno snapshot di un disco:
-
compute.snapshots.createsul progetto -
compute.disks.createSnapshotsul disco -
iam.serviceAccounts.actAssul account di servizio dell'istanza, se il disco è il disco di avvio di un'istanza a cui è collegato un account di servizio
-
-
Per creare un'immagine:
-
compute.images.createsul progetto -
compute.disks.useReadOnlysul disco -
iam.serviceAccounts.actAssul account di servizio dell'istanza, se il disco è il disco di avvio di un'istanza a cui è collegato un account di servizio
-
-
Per creare un disco da uno snapshot standard:
-
compute.disks.createnel progetto di destinazione per il nuovo disco -
compute.snapshots.useReadOnlysullo snapshot
-
-
Per creare un disco da un'immagine:
-
compute.disks.createnel progetto di destinazione per il nuovo disco -
compute.images.useReadOnlysull'immagine
-
-
Per creare un disco da uno snapshot istantaneo:
-
compute.disks.createnel progetto di destinazione per il nuovo disco -
compute.instantSnapshots.useReadOnlynello snapshot istantaneo di origine -
iam.serviceAccounts.actAssul account di servizio dell'istanza, se lo snapshot istantaneo è del disco di avvio di un'istanza a cui è collegato un account di servizio
-
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Limitazioni
Per le CSEK si applicano le seguenti limitazioni:
Limitazioni generali
La disponibilità delle chiavi di crittografia fornite dal cliente dipende dalla località del tuo account di fatturazione, non dalla località della risorsa.
Le chiavi di crittografia fornite dal cliente non sono disponibili per gli account di fatturazione situati nei seguenti paesi:
- Brasile
- India
Limitazioni tecniche
Puoi criptare solo nuovi dischi permanenti con la tua chiave. Non puoi criptare i dischi permanenti esistenti con la tua chiave.
Non puoi utilizzare le tue chiavi con i dischi SSD locali perché questi utilizzano Google-owned and Google-managed encryption keys. Le chiavi vengono eliminate quando la VM viene arrestata.
Compute Engine non archivia le chiavi di crittografia con i template di istanze, quindi devi archiviare le tue chiavi in KMS per criptare i dischi in un gruppo di istanze gestite.
Non puoi sospendere le istanze con dischi protetti da CSEK collegati.
Specifiche
Questa sezione descrive le specifiche di crittografia e il formato di CSEK.
Crittografia
Compute Engine utilizza la tua chiave di crittografia per proteggere le chiavi di crittografia di Google con crittografia AES-256.
Formato della chiave obbligatorio
È tua responsabilità generare e gestire la chiave. Devi fornire a Compute Engine una chiave che sia una stringa di 256 bit codificata in base64 standard RFC 4648.
Di seguito è riportato un esempio di chiave codificata in base64, generata con la stringa "Un saluto dalla piattaforma Google Cloud "
SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
Questa può essere generata utilizzando il seguente script:
read -sp "String:" ; \
[[ ${#REPLY} == 32 ]] && \
echo "$(echo -n "$REPLY" | base64)" || \
(>&2 echo -e "\nERROR:Wrong Size"; false)
Crittografia della chiave RSA
Oltre a codificare la chiave in base64, facoltativamente puoi eseguirne la crittografia utilizzando un certificato di chiave pubblica RSA fornito da Google, codificarla in base64 e dopodiché usarla nelle richieste.
La crittografia RSA è un processo in cui viene utilizzata una chiave pubblica per criptare i dati. Una volta criptati con la chiave pubblica, i dati possono essere decriptati solo dalla rispettiva chiave privata. In questo caso, la chiave privata è nota solo ai servizi Google Cloud . Se esegui la crittografia della chiave utilizzando il certificato RSA, garantisci che solo i servizi Google Cloud possano svolgerne la decrittografia e utilizzare la chiave per proteggere i tuoi dati.
Per ulteriori informazioni, vedi Crittografia RSA.
Per creare una chiave con crittografia RSA per Compute Engine, segui questi passaggi:
- Esegui la crittografia della chiave utilizzando la chiave pubblica fornita in un certificato gestito da Compute Engine. Assicurati di eseguire la crittografia della chiave utilizzando la spaziatura interna OAEP, non quella PKCS #1 v1.5.
- Codifica la chiave con crittografia RSA utilizzando la codifica base64 standard.
Scarica il certificato pubblico gestito da Compute Engine da:
https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
Esistono molti modi per generare e applicare la crittografia RSA alla chiave. Utilizza un metodo che ti è familiare. Di seguito sono riportati due esempi di crittografia RSA della chiave che puoi utilizzare.
Esempio 1
Per eseguire la crittografia RSA e la codifica di una chiave, le seguenti istruzioni utilizzano l'utilità a riga di comando openssl.
Facoltativo: genera una chiave casuale a 256 bit (32 byte). Se hai già una chiave che vuoi utilizzare, puoi saltare questo passaggio. Esistono molti modi per generare una chiave. Ad esempio:
$ head -c 32 /dev/urandom | LC_CTYPE=C tr '\n' = > mykey.txtScarica il certificato di chiave pubblica:
$ curl -s -O -L https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pemEstrai la chiave pubblica dal certificato:
$ openssl x509 -pubkey -noout -in google-cloud-csek-ingress.pem > pubkey.pemEsegui la crittografia RSA della chiave, assicurandoti di sostituire
mykey.txtcon il file di chiave.$ openssl rsautl -oaep -encrypt -pubin -inkey pubkey.pem -in mykey.txt -out rsawrappedkey.txtCodifica la chiave con crittografia RSA in base64.
$ openssl enc -base64 -in rsawrappedkey.txt | tr -d '\n' | sed -e '$a\' > rsawrapencodedkey.txt
Esempio 2
Di seguito è riportato uno script Python di esempio che genera una stringa casuale di 256 bit (32 byte) e crea una chiave con crittografia RSA codificata in base64 utilizzando la libreria di crittografia:
La chiave è ora pronta per l'uso.
Utilizza una chiave con crittografia RSA
Con Google Cloud CLI, puoi fornire una chiave normale e una con crittografia RSA nello stesso modo.
Nell'API, se vuoi utilizzare una chiave con crittografia RSA,
usa la proprietà
sha256 anziché rawKey.
Crittografia delle risorse con CSEK mediante lo strumento a riga di comando
Le chiavi di crittografia possono essere utilizzate tramite Google Cloud CLI.
File di chiave
Quando utilizzi lo strumento a riga di comando gcloud compute per impostare le chiavi,
fornisci le chiavi codificate tramite un file di chiave che le contiene
sotto forma di elenco JSON. Un file di chiave può contenere più chiavi, consentendoti di gestire molte
chiavi in un unico posto. In alternativa, puoi creare file di chiave singoli
per gestire ogni chiave separatamente. Un file di chiave è utilizzabile solo con gcloud CLI.
Quando utilizzi REST, devi fornire la chiave direttamente nella richiesta.
Ciascuna voce del file di chiave deve fornire:
- L'URI completo della risorsa protetta dalla chiave
- La chiave corrispondente
- Il tipo di chiave,
raworsa-encrypted
Quando utilizzi il file di chiave nelle richieste, lo strumento cerca le risorse corrispondenti e usa le rispettive chiavi. Se non vengono trovate risorse corrispondenti, la richiesta non va a buon fine.
Un file di chiave di esempio ha il seguente aspetto:
[
{
"uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/example-disk",
"key": "acXTX3rxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY+c=",
"key-type": "raw"
},
{
"uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/my-private-snapshot",
"key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==",
"key-type": "rsa-encrypted"
}
]
Best practice per la gestione del file di chiave
Se utilizzi un file di chiave, limita l'accesso solo a chi ne ha bisogno. Assicurati di impostare le autorizzazioni appropriate su questi file e prendi in considerazione la possibilità di criptarli utilizzando strumenti aggiuntivi:
- Su Windows, valuta la possibilità di utilizzare BitLocker o Encrypting File System (EFS).
- Su macOS, ti consigliamo di utilizzare FileVault 2.
- Su Linux, utilizza Linux Unified Key Setup (LUKS) o eCryptfs.
Crea un volume Persistent Disk vuoto criptato con CSEK
Puoi criptare un nuovo disco permanente fornendo una chiave durante la creazione della VM o del disco.
Console
Vai alla pagina Dischi.
Fai clic su Crea disco e inserisci le proprietà del nuovo disco.
In Crittografia, seleziona Chiave fornita dal cliente.
Specifica la chiave di crittografia del disco nel campo Chiave di crittografia disco di origine e seleziona Chiave con crittografia se la crittografia è stata eseguita con una chiave RSA pubblica.
gcloud
Nello strumento gcloud compute, cripta un disco utilizzando il flag --csek-key-file
durante la creazione della VM. Con una chiave con crittografia RSA, utilizza il
componente gcloud beta:
gcloud (beta) compute instances create example-instance --csek-key-file example-file.json
Per criptare un disco permanente autonomo:
gcloud (beta) compute disks create example-disk --csek-key-file example-file.json
REST
Puoi criptare un disco utilizzando la proprietà diskEncryptionKey e inviando
una richiesta all'API v1 per una chiave non protetta (senza crittografia RSA) o
all'API beta per una chiave con crittografia RSA. Nella richiesta
fornisci una delle seguenti proprietà:
rawKey: se la chiave è codificata in base64rsaEncryptedKey: se la chiave è con crittografia RSA e codificata in base64
Ad esempio, per criptare un nuovo disco durante la creazione di una VM con una chiave con crittografia RSA:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/instances
{
"machineType": "zones/us-central1-a/machineTypes/e2-standard-2",
"disks": [
{
"type": "PERSISTENT",
"diskEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
},
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-9-stretch-v20170619"
},
"boot": true
}
],
...
}
Analogamente, puoi anche utilizzare REST per creare un nuovo disco permanente autonomo e criptarlo con la tua chiave:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/
us-central1-a/disks?sourceImage=https%3A%2F%2Fwww.googleapis.com%2Fcompute%2F
alpha%2Fprojects%2Fdebian-cloud%2Fglobal%2Fimages%2Fdebian-9-stretch-v20170619
{
"name": "new-encrypted-disk-key",
"diskEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
},
"type": "zones/us-central1-a/diskTypes/pd-standard"
}
Crea uno snapshot da un disco criptato con CSEK
Se crei uno snapshot da un disco criptato con CSEK, devi fornire la chiave di crittografia utilizzata per criptare il disco e una chiave per criptare il nuovo snapshot. Devi anche criptare lo snapshot con una chiave CSEK.
Per convertire dischi o snapshot criptati con CSEK in modo che utilizzino Google-owned and Google-managed encryption keys, devi creare un nuovo disco o snapshot.
Gli snapshot dei dischi criptati con CSEK sono sempre snapshot completi. Si tratta di snapshot diversi da quelli dei dischi criptati con chiavi di crittografia gestite dal cliente (CMEK), che sono incrementali. Il prezzo degli snapshot si basa sulla dimensione totale dello stesso, pertanto uno snapshot completo potrebbe costare più di uno incrementale.
Prima di creare lo snapshot, consulta le best practice per gli snapshot dei dischi.
Console
Vai alla pagina Snapshot.
Fai clic su Crea snapshot.
In Disco di origine, seleziona il disco criptato di cui vuoi creare uno snapshot.
Specifica la chiave di crittografia del disco nel campo Chiave di crittografia disco di origine e seleziona Chiave con crittografia se la crittografia è stata eseguita con una chiave RSA pubblica.
Per criptare il nuovo snapshot, seleziona un metodo di crittografia fornendo una chiave di crittografia aggiuntiva nella sezione Crittografia.
REST
Per effettuare la richiesta, fornisci la proprietà sourceDiskEncryptionKey per accedere
al disco permanente di origine. Devi criptare il nuovo snapshot utilizzando la
proprietà snapshotEncryptionKey.
Invia una richiesta all'API v1 per una chiave non protetta (senza crittografia RSA) o all'API beta per una chiave con crittografia RSA.
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk/createSnapshot
{
"snapshotEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
},
"sourceDiskEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
},
"name": "snapshot-encrypted-disk"
}
La proprietà sourceDiskEncryptionKey deve corrispondere alla chiave utilizzata per criptare
il disco permanente. In caso contrario, la richiesta non va a buon fine.
snapshotEncryptionKey ti consente di fornire una chiave per criptare
lo snapshot in modo che, se questo viene utilizzato per creare nuovi dischi permanenti, debba essere fornita una chiave corrispondente. Questa chiave deve seguire il formato
della chiave precedente. Puoi anche scegliere di lasciare questa proprietà
non definita; in questo caso lo snapshot può essere utilizzato per creare nuovi dischi permanenti
senza che sia necessaria una chiave.
Crea una nuova immagine da un disco o un'immagine personalizzata criptata con CSEK
Puoi creare immagini personalizzate da dischi permanenti criptati o copiare immagini criptate. Non puoi utilizzare la console per copiare le immagini. Utilizza Google Cloud CLI o REST per copiare le immagini.
Console
Vai alla pagina Immagini.
Fai clic su Crea immagine.
In Disco di origine, seleziona il disco criptato di cui vuoi creare un'immagine.
In Crittografia, seleziona una soluzione di gestione delle chiavi di crittografia.
Se la chiave è stata sottoposta a crittografia con la chiave RSA pubblica, seleziona Chiave con crittografia.
gcloud
Segui le istruzioni per
creare un'immagine
e aggiungi il flag --csek-key-file con il percorso del file di chiave di crittografia
per l'oggetto di origine criptato. Utilizza il componente gcloud beta se
utilizzi una chiave con crittografia RSA:
gcloud (beta) compute images create .... --csek-key-file example-file.json
Se vuoi criptare la nuova immagine con la tua chiave, aggiungila al file di chiave:
[
{
"uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/source-disk",
"key": "acX3RqzxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY-c=",
"key-type": "raw"
},
{
"uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/the-new-image",
"key": "TF0t-cSfl7CT7xRF1LTbAgi7U6XXUNC4zU_dNgx0nQc=",
"key-type": "raw"
}
]
REST
La richiesta di creazione dell'API deve contenere la proprietà della chiave di crittografia per l'oggetto di origine. Ad esempio, a seconda del tipo di oggetti di origine, includi una delle seguenti proprietà:
- Disco permanente:
sourceDiskEncryptionKey - Immagine:
sourceImageEncryptionKey
A seconda del tipo di chiave,
includi anche le proprietà rawKey o rsaEncryptedKey. Invia una richiesta all'API v1 per una chiave non protetta (senza crittografia RSA) o
all'API beta per una chiave con crittografia RSA. L'esempio seguente converte
un disco permanente criptato e con crittografia RSA in un'immagine che utilizza
la stessa chiave di crittografia.
POST https://compute.googleapis.com/compute/beta/projects/myproject/global/images
{
"name": "image-encrypted-disk",
"sourceDiskEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
}
"imageEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
},
"sourceDisk": "projects/myproject/zones/us-central1-a/disks/source-disks"
}
La proprietà facoltativa imageEncryptionKey ti consente di fornire una chiave
per criptare l'immagine in modo che, quando l'immagine viene utilizzata per creare nuovi dischi permanenti, debba essere fornita una chiave corrispondente. Questa chiave deve seguire lo stesso formato della chiave
descritto in precedenza. Puoi anche scegliere di lasciare questa proprietà
non definita; in questo caso l'immagine può essere utilizzata per creare nuovi dischi permanenti
senza che sia necessaria una chiave.
Crittografa un'immagine importata con CSEK
Quando importi manualmente un'immagine personalizzata in Compute Engine, puoi criptare una nuova immagine. Prima di poter importare un'immagine, devi creare e comprimere un file immagine del disco e caricare il file compresso su Cloud Storage.
Importa l'immagine Compute Engine personalizzata che vuoi criptare. Specifica l'URI del file compresso e anche un percorso per il file di chiave di crittografia.
Console
Vai alla pagina Immagini.
Fai clic su Crea immagine.
In Origine, seleziona File Cloud Storage.
In File Cloud Storage, inserisci l'URI Cloud Storage.
In Crittografia, seleziona Chiave fornita dal cliente e fornisci la chiave di crittografia per criptare l'immagine nel campo Chiave di crittografia del disco di origine.
gcloud
Utilizza il comando compute images create per creare una nuova immagine e specifica
il flag --csek-key-file con un file di chiave di crittografia. Con una chiave con crittografia RSA,
utilizza il componente gcloud beta:
gcloud (beta) compute images create [IMAGE_NAME] \
--source-uri gs://[BUCKET_NAME]/[COMPRESSED_FILE] \
--csek-key-file [KEY_FILE]
Sostituisci quanto segue:
[IMAGE_NAME]: il nome della nuova immagine personalizzata[BUCKET_NAME]: il nome del bucket Cloud Storage che contiene il file immagine compresso[COMPRESSED_FILE]: il nome del file immagine compresso[KEY_FILE]: il percorso di un file di chiave di crittografia sulla tua workstation locale
REST
Per criptare una nuova immagine creata da un file RAW, aggiungi la nuova
proprietà imageEncryptionKey alla richiesta di creazione dell'immagine, seguita
da rawKey o rsaEncryptedKey. Invia una richiesta all'API v1 per una chiave non protetta (senza crittografia RSA) o
all'API beta per una chiave con crittografia RSA.
POST https://compute.googleapis.com/compute/beta/projects/myproject/global/images
{
"rawDisk": {
"source": "http://storage.googleapis.com/example-image/example-image.tar.gz"
},
"name": "new-encrypted-image",
"sourceType": "RAW",
"imageEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
}
}
Crea un Persistent Disk da una risorsa criptata con CSEK
Puoi creare un Persistent Disk dalle seguenti risorse criptate con CSEK:
- snapshot istantanei
- snapshot standard
- immagini
Crea un disco da uno snapshot criptato con CSEK
Console
Vai alla pagina Dischi.
Fai clic su Crea disco.
In Tipo di origine, seleziona Snapshot.
In Crittografia, seleziona una soluzione di gestione delle chiavi di crittografia.
Se la chiave è stata sottoposta a crittografia con la chiave RSA pubblica, seleziona Chiave con crittografia.
gcloud
Nello strumento gcloud compute, durante la creazione del disco,
fornisci la chiave di crittografia per lo snapshot utilizzando il flag --csek-key-file. Con una chiave con crittografia RSA, utilizza il
componente gcloud beta:
gcloud (beta) compute disks create ... --source-snapshot example-snapshot --csek-key-file example-file.json
REST
Per utilizzare uno snapshot criptato, fornisci sourceSnapshotEncryptionKey nella
richiesta, seguito da rawKey o rsaEncryptedKey. Invia una richiesta
all'API v1 per una chiave non protetta (senza crittografia RSA) o
all'API beta per una chiave con crittografia RSA. Ad esempio, in un nuovo disco permanente autonomo utilizzando uno
snapshot criptato:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks
{
"name": "disk-from-encrypted-snapshot",
"sourceSnapshot": "global/snapshots/encrypted-snapshot",
"sourceSnapshotEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
}
}
Crea un disco da un'immagine criptata con CSEK
Console
Vai alla pagina Dischi.
Fai clic su Crea disco.
In Tipo di origine, seleziona Immagine.
In Crittografia, seleziona una soluzione di gestione delle chiavi di crittografia.
Se la chiave è stata sottoposta a crittografia con la chiave RSA pubblica, seleziona Chiave con crittografia.
gcloud
Nello strumento gcloud compute, durante la creazione del disco,
fornisci la chiave di crittografia dell'immagine utilizzando il flag --csek-key-file. Con una chiave con crittografia RSA,
utilizza il componente gcloud beta:
gcloud (beta) compute disks create ... --image example-image --csek-key-file example-file.json
REST
Per utilizzare un'immagine criptata, fornisci sourceImageEncryptionKey, seguito
da rawKey o rsaEncryptedKey. Invia una richiesta
all'API v1 per una chiave non protetta (senza crittografia RSA) o
all'API beta per una chiave con crittografia RSA.
POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks
{
"name": "disk-from-encrypted-image",
"sourceImageEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
},
"sourceImage": "global/images/encrypted-image"
}
Collegamento di un disco criptato con CSEK a una nuova VM
Console
Vai alla pagina Crea un'istanza.
Nella sezione Disco di avvio, fai clic su Cambia e segui questi passaggi:
- Nella pagina Disco di avvio, fai clic sulla scheda Dischi esistenti.
- Dall'elenco Disco, seleziona un disco criptato esistente da collegare alla VM.
Inserisci la chiave di crittografia nel campo Chiave di decrittografia del disco di origine. Se la chiave è stata sottoposta a wrapping con la chiave RSA pubblica, seleziona Chiave con wrapping.
Fai clic su Seleziona.
Continua con la procedura di creazione della VM.
gcloud
Per creare una VM e collegare un disco criptato, genera un
file di chiave e fornisci la chiave utilizzando il flag --csek-key-file
durante la creazione della VM. Con una chiave con crittografia RSA, utilizza il
componente gcloud beta:
gcloud (beta) compute instances create example-instance \
--disk name=example-disk,boot=yes \
--csek-key-file example-file.json
REST
Crea una VM
utilizzando l'API Compute Engine e fornisci rawKey o
rsaEncryptedKey con la specifica del disco. Invia una richiesta
all'API v1 per una chiave non protetta (senza crittografia RSA) o
all'API beta per una chiave con crittografia RSA.
Ecco uno snippet di una specifica del disco di esempio:
"disks": [
{
"deviceName": "encrypted-disk",
"source": "projects/myproject/zones/us-central1-f/disks/encrypted-disk",
"diskEncryptionKey": {
"rawKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0="
}
}
]
Avvio o riavvio di VM con dischi criptati con CSEK
Per informazioni dettagliate su come arrestare o avviare una VM con dischi criptati, leggi Riavvio di una VM con un disco criptato.
Utilizzo della riga di comando per creare risorse miste
Se vuoi creare una combinazione di risorse con crittografia standard e crittografia gestita dal cliente
in una singola richiesta con Google Cloud CLI, puoi utilizzare
il flag --csek-key-file con un file di chiave e il
flag --no-require-csek-key-create nella richiesta. Fornendo entrambi i flag,
gcloud CLI crea sia le risorse criptate dal cliente esplicitamente
definite nel file di chiave e sia le risorse standard specificate.
Ad esempio, supponiamo che un file di chiave contenga quanto segue:
[
{
"uri": "https://www.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk",
"key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==",
"key-type": "rsa-encrypted"
}
]
Se vuoi creare una VM con un disco criptato dal cliente utilizzando il file di chiave e contemporaneamente una VM con un disco criptato standard nella stessa richiesta, puoi procedere nel seguente modo:
gcloud beta compute instances create example-disk example-disk-2 \
--csek-key-file mykeyfile.json --no-require-csek-key-create
Normalmente, non sarebbe possibile creare example-disk-2 se hai specificato il flag --csek-key-file perché il disco non è definito esplicitamente nel file di chiave. Se aggiungi --no-require-csek-key-create, vengono creati entrambi i dischi,
uno criptato utilizzando il file di chiave e l'altro criptato utilizzando
Google-owned and managed keys.
Rimuovi le CSEK da un Persistent Disk
Puoi decriptare i contenuti di un disco criptato dal cliente e creare un nuovo disco che utilizzi invece Google-owned and managed keys .
- Crea un'immagine del disco criptato e specifica la crittografia automatica per la nuova immagine.
- Utilizza la nuova immagine per creare un nuovo disco permanente.
Dopo aver creato il nuovo disco permanente, Compute Engine utilizza Google-owned and managed keys per proteggere i contenuti del disco. Anche gli snapshot creati da questo disco devono utilizzare Google-owned and managed keys