Per impostazione predefinita, Google Cloud cripta automaticamente i dati inattivi utilizzando chiavi di crittografia gestite da Google. Se hai requisiti di conformità o normativi specifici relativi alle chiavi che proteggono i tuoi dati, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per i tuoi set di dati dell'API Cloud Healthcare. I set di dati dell'API Cloud Healthcare non sono di proprietà di Google e non sono gestiti da Google, ma sono criptati utilizzando una chiave che puoi controllare e gestire in Cloud Key Management Service (Cloud KMS).
Per ulteriori informazioni sulle chiavi CMEK in generale, incluso quando e perché attivarle, consulta Chiavi di crittografia gestite dal cliente (CMEK).
Prima di iniziare
Decidi se il set di dati dell'API Cloud Healthcare e Cloud KMS si troveranno nello stesso progetto Google Cloud o in progetti diversi. Per indicazioni, consulta Separazione dei compiti.
A scopo di documentazione, vengono utilizzate le seguenti convenzioni:
PROJECT_ID
: l'ID progetto dell'API Cloud HealthcareKMS_PROJECT_ID
: l'ID progetto in cui viene eseguito Cloud KMS, che potrebbe essere uguale aPROJECT_ID
Per informazioni sugli ID progetto e sui numeri di progetto Google Cloud, consulta Identificazione dei progetti.
Limitazioni
- Puoi utilizzare le chiavi Cloud KMS solo quando crei un set di dati dell'API Cloud Healthcare. Non puoi attivare, modificare o disattivare le chiavi Cloud KMS in un set di dati dell'API Cloud Healthcare esistente.
- Nei set di dati con crittografia CMEK sono supportati solo gli archivi FHIR, DICOM e HL7v2. La protezione CMEK si applica agli archivi DICOM, FHIR e HL7v2 nel set di dati e alle relative risorse.
- Non puoi anonimizzare le risorse con crittografia CMEK.
Operazioni CMEK
Le chiavi Cloud KMS vengono utilizzate quando una risorsa con crittografia CMEK viene creata, letta, aggiornata o eliminata e per attività operative come la fatturazione o l'assicurazione della disponibilità della chiave.
Considerazioni sulle chiavi esterne
Per informazioni sull'utilizzo delle chiavi gestite in un sistema di partner di gestione delle chiavi esterne supportato per proteggere i dati in Google Cloud, consulta Cloud External Key Manager.
Se perdi le chiavi gestite al di fuori di Google Cloud, Google non potrà recuperare i tuoi dati.
Mancata disponibilità delle chiavi e perdita di dati
Se un set di dati è criptato da una chiave e questa chiave diventa non disponibile e rimane così, l'API Cloud Healthcare disattiva e alla fine elimina il set di dati. A volte una chiave diventa non disponibile se viene disattivata o eliminata oppure se non è accessibile a causa di autorizzazioni revocate, ma questo comportamento si verifica se la chiave non è disponibile per qualsiasi motivo. Il livello di protezione della chiave o se si tratta di una chiave esterna non influisce su questo comportamento. Inoltre, le chiavi esterne possono diventare disponibili in modo imprevedibile. Ad esempio, potrebbero verificarsi problemi di connettività tra le risorse Google Cloud e l'EKM.
La procedura seguente descrive come viene controllata la disponibilità delle chiavi e come un set di dati può essere disattivato ed eliminato:
Dopo aver creato un set di dati dell'API Cloud Healthcare con crittografia CMEK, l'API Cloud Healthcare controlla lo stato della chiave ogni cinque minuti per assicurarsi che sia disponibile. Se la chiave non è disponibile, l'API Cloud Healthcare continua a supportare le richieste al set di dati per un massimo di un'ora.
Dopo un'ora, se l'API Cloud Healthcare non è ancora in grado di connettersi a Cloud KMS, il set di dati dell'API Cloud Healthcare viene disattivato come misura di protezione. Per riattivare il set di dati dell'API Cloud Healthcare, contatta il tuo rappresentante dell'assistenza.
Se questa opzione è disattivata, puoi inviare solo richieste
datasets.get
edatasets.delete
al set di dati dell'API Cloud Healthcare. Le altre richieste non riescono con un errore400 FAILED_PRECONDITION
.Se il set di dati dell'API Cloud Healthcare rimane non disponibile per più di 30 giorni, viene eliminato definitivamente. Vengono eliminati anche tutti gli archivi DICOM, FHIR e HL7v2 nel set di dati e i relativi dati associati. I dati eliminati non possono essere recuperati.
Creazione di chiavi
Le sezioni seguenti descrivono come creare un keyring e una chiave Cloud KMS. Sono supportate solo le chiavi di crittografia simmetrica Cloud KMS.
Località supportate
Le chiavi Cloud KMS sono disponibili nelle località dell'API Cloud Healthcare. Crea il portachiavi in una località corrispondente alla regione o alla regione multipla del set di dati dell'API Cloud Healthcare.
Qualsiasi set di dati dell'API Cloud Healthcare multiregionale deve utilizzare un portachiavi multiregionale da una località corrispondente. Ad esempio, un set di dati dell'API Cloud Healthcare nella regione
us
deve essere protetto con un mazzo di chiavi della regioneus
e un set di dati dell'API Cloud Healthcare nella regioneeu
deve essere protetto con un mazzo di chiavi della regioneeurope
.I set di dati dell'API Cloud Healthcare regionale devono utilizzare chiavi regionali corrispondenti. Ad esempio, un set di dati dell'API Cloud Healthcare nella regione
asia-northeast1
deve essere protetto con un anello di chiavi della regioneasia-northeast1
.Non puoi utilizzare la regione
global
quando configuri CMEK per un set di dati dell'API Cloud Healthcare.
Per ulteriori informazioni, consulta le località dell'API Cloud Healthcare e le località di Cloud KMS.
Creare una chiave automatizzata e una chiave
Completa i seguenti passaggi nel progetto Google Cloud che esegue Cloud KMS:
Concedi autorizzazioni di crittografia e decrittografia
Per proteggere i dati dell'API Cloud Healthcare con una chiave Cloud KMS, concedi all'account di servizio Agente di servizio Cloud Healthcare il ruolo Autore crittografia/decrittografia CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter
) per la chiave. Per le istruzioni, consulta
Autorizzazioni CMEK dei set di dati.
Dopo aver concesso il ruolo all'account di servizio, l'API Cloud Healthcare può criptare e decriptare le risorse con crittografia CMEK. Le applicazioni non devono specificare le chiavi durante la lettura o la scrittura dei dati. L'API Cloud Healthcare gestisce la crittografia.
Quando un richiedente legge o scrive un oggetto criptato con una chiave Cloud KMS, accede all'oggetto normalmente. Durante la richiesta, l'agente di servizio cripta o decripta automaticamente l'oggetto richiesto, a condizione che siano soddisfatte entrambe le seguenti condizioni:
- L'agente di servizio dispone ancora delle autorizzazioni richieste.
- La chiave è disponibile e attivata.
Creare un set di dati dell'API Cloud Healthcare criptato con CMEK
Gli esempi riportati di seguito mostrano come creare un set di dati con crittografia CMEK.
Devi specificare un ID risorsa della chiave Cloud KMS durante la creazione del set di dati. Questa chiave è sensibile alle maiuscole e ha il seguente formato:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Per visualizzare gli ID risorsa delle chiavi Cloud KMS, consulta Ottenere un ID risorsa Cloud KMS.
Console
Nella console Google Cloud, vai alla pagina Browser.
Fai clic su add_box Crea set di dati. Viene visualizzata la pagina Crea set di dati.
Nel campo Nome, inserisci un identificatore per il set di dati, rispettando i requisiti relativi alle dimensioni e ai caratteri consentiti per i set di dati.
Seleziona uno dei seguenti tipi di località:
Regione. Il set di dati risiede in modo permanente in un'area geografica Google Cloud. Dopo aver selezionato questa opzione, digita o seleziona una località nel campo Regione.
Più regioni. Il set di dati risiede in modo permanente in una posizione che si estende su più regioni Google Cloud. Dopo aver selezionato questa opzione, digita o seleziona una località multiregionale nel campo Più regioni.
Nella sezione Crittografia, seleziona uno dei seguenti tipi di crittografia:
Chiave di crittografia gestita da Google: il metodo di crittografia predefinito. Utilizza questo metodo se vuoi che sia Google a gestire le chiavi di crittografia che proteggono i tuoi dati in questo set di dati dell'API Cloud Healthcare.
Chiave Cloud KMS: utilizza una chiave di crittografia gestita dal cliente (CMEK).
Fai clic su Crea. Viene visualizzata la pagina Browser. Il nuovo set di dati viene visualizzato nell'elenco dei set di dati.
gcloud
Crea il set di dati utilizzando il comando gcloud healthcare datasets create
.
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
DATASET_ID
: un identificatore soggetto ai requisiti relativi alle dimensioni e ai caratteri consentiti del set di datiLOCATION
: una posizione supportata per il set di datiKEY_RESOURCE_ID
: l'ID risorsa di una chiave Cloud KMS, nel formatoprojects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Esegui il seguente comando:
Linux, macOS o Cloud Shell
gcloud healthcare datasets create DATASET_ID \ --location=LOCATION \ --encryption-key=KEY_RESOURCE_ID
Windows (PowerShell)
gcloud healthcare datasets create DATASET_ID ` --location=LOCATION ` --encryption-key=KEY_RESOURCE_ID
Windows (cmd.exe)
gcloud healthcare datasets create DATASET_ID ^ --location=LOCATION ^ --encryption-key=KEY_RESOURCE_ID
Dovresti ricevere una risposta simile alla seguente:
Create request issued for: [DATASET_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete... Created dataset [DATASET_ID].
REST
Crea il set di dati utilizzando il metodo
datasets.create
.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google CloudDATASET_ID
: un identificatore soggetto ai requisiti relativi alle dimensioni e ai caratteri consentiti del set di datiLOCATION
: una posizione supportata per il set di datiKEY_RESOURCE_ID
: l'ID risorsa di una chiave Cloud KMS, nel formatoprojects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Corpo JSON della richiesta:
{ "encryptionSpec": { "kmsKeyName": "KEY_RESOURCE_ID" } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:cat > request.json << 'EOF' { "encryptionSpec": { "kmsKeyName": "KEY_RESOURCE_ID" } } EOF
Quindi, esegui il seguente comando per inviare la richiesta REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:@' { "encryptionSpec": { "kmsKeyName": "KEY_RESOURCE_ID" } } '@ | Out-File -FilePath request.json -Encoding utf8
Quindi, esegui il seguente comando per inviare la richiesta REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID" | Select-Object -Expand ContentExplorer API
Copia il corpo della richiesta e apri la pagina di riferimento del metodo. Il riquadro Esplora API si apre sul lato destro della pagina. Puoi interagire con questo strumento per inviare richieste. Incolla il corpo della richiesta in questo strumento, compila gli altri campi obbligatori e fai clic su Esegui.
OPERATION_ID
. Questo valore ti servirà nel passaggio successivo.Recupera lo stato dell'operazione a lunga esecuzione utilizzando il metodo
projects.locations.datasets.operations.get
.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google CloudLOCATION
: la posizione del set di datiDATASET_ID
: l'ID set di datiOPERATION_ID
: l'ID restituito dall'operazione a lunga esecuzione
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentExplorer API
Apri la pagina di riferimento del metodo. Il riquadro Esplora API si apre sul lato destro della pagina. Puoi interagire con questo strumento per inviare richieste. Compila i campi obbligatori e fai clic su Esegui.
"done": true
, l'operazione a lunga esecuzione è terminata.
Determinare se un set di dati è protetto da Cloud KMS
Per ogni chiave che hai creato o che protegge i set di dati dell'API Cloud Healthcare, puoi vedere quali risorse protegge la chiave con il monitoraggio dell'utilizzo delle chiavi. Per ulteriori informazioni, vedi Visualizzare l'utilizzo delle chiavi.
Rotazione chiave
Cloud KMS supporta la rotazione delle chiavi sia automatica che manuale a una nuova versione.
La rotazione di una chiave comporta quanto segue:
- I set di dati dell'API Cloud Healthcare creati dopo la rotazione utilizzano la nuova versione della chiave per la crittografia e per tutte le operazioni.
- Le risorse di un set di dati esistente criptate con la chiave non vengono ricriptate automaticamente con la nuova versione della chiave primaria.
Affinché la crittografia funzioni, tutte le versioni della chiave devono essere disponibili. In caso contrario, il set di dati dell'API Cloud Healthcare viene disattivato e tutte le richieste al set di dati non vanno a buon fine. Per ulteriori informazioni, consulta Considerazioni sulle chiavi esterne e Set di dati disattivati ed eliminazione definitiva dei set di dati.
Rimuovi l'accesso dell'API Cloud Healthcare alla chiave Cloud KMS
Hai il controllo sulle tue chiavi e puoi disattivare, distruggere o revocare le autorizzazioni sulla chiave in modo che l'API Cloud Healthcare non possa accedere ai dati criptati con CMEK. Dopo aver distrutto una chiave o una versione della chiave associata a un set di dati dell'API Cloud Healthcare, tutti i dati criptati con la chiave o la versione della chiave vengono persi definitivamente.
Esiste un ritardo tra il momento in cui disabiliti una chiave o una versione della chiave e il momento in cui non può più essere utilizzata. Inoltre, esiste un ritardo tra il momento in cui ritiri le autorizzazioni dell'account di servizio dell'agente di servizio Cloud Healthcare sulla chiave e il momento in cui non è più possibile accedere. Per ulteriori informazioni, consulta la pagina relativa alla coerenza delle risorse Cloud KMS.
Esportare e importare dati in un'istanza con CMEK abilitato
Per mantenere i dati criptati con una chiave gestita dal cliente durante un'operazione di esportazione, devi impostare una chiave CMEK sulla destinazione di archiviazione prima di iniziare l'esportazione. Non sono previsti requisiti o limitazioni speciali per l'importazione di dati in un set di dati con crittografia CMEK durante l'importazione da archiviazione non CMEK o con crittografia CMEK.
Limitazioni
- Key Access Justifications con Cloud External Key Manager non è supportato.
- È previsto un limite di 10 set di dati CMEK per progetto in un periodo di 30 giorni. Questa quota viene applicata dalla metrica quota
cmek_datasets
. - Controlli di servizio VPC con CMEK non è supportato.
- I criteri dell'organizzazione CMEK non sono supportati.
Prezzi
I set di dati vengono fatturati allo stesso modo, indipendentemente dal fatto che siano criptati con CMEK. Per ulteriori informazioni, consulta Prezzi dell'API Cloud Healthcare.
Cloud KMS ti addebita sia il costo della chiave sia eventuali operazioni di crittografia sulla chiave. Queste operazioni si verificano quando l'API Cloud Healthcare utilizza la chiave per la crittografia o la decrittografia. Questi costi dovrebbero essere minimi, in base al numero previsto di operazioni di crittografia generate dall' API Cloud Healthcare. Per ulteriori informazioni, consulta la pagina Prezzi di Cloud KMS.
Quote di Cloud KMS e API Cloud Healthcare
Quando utilizzi le chiavi CMEK nell'API Cloud Healthcare, i tuoi progetti possono consumare le quote per le richieste crittografiche di Cloud KMS. I set di dati dell'API Cloud Healthcare con crittografia CMEK e i relativi archivi DICOM, FHIR e HL7v2 consumano queste quote per tutte le operazioni tranne datasets.get
. Le operazioni di crittografia e decrittografia che utilizzano le chiavi CMEK influiscono sulle quote di Cloud KMS solo se utilizzi chiavi hardware (Cloud HSM) o esterne (Cloud EKM).
Per ulteriori informazioni, consulta
Quote di Cloud KMS.
Passaggi successivi
- Per ulteriori informazioni sulle chiavi CMEK in generale, incluso quando e perché attivarle, consulta Chiavi di crittografia gestite dal cliente (CMEK).