Abilitare le chiavi di crittografia gestite dal cliente (CMEK) per i set di dati dell'API Cloud Healthcare

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 Healthcare
  • KMS_PROJECT_ID: l'ID progetto in cui viene eseguito Cloud KMS, che potrebbe essere uguale a PROJECT_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:

  1. 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.

  2. 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 e datasets.delete al set di dati dell'API Cloud Healthcare. Le altre richieste non riescono con un errore 400 FAILED_PRECONDITION.

  3. 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 regione us e un set di dati dell'API Cloud Healthcare nella regione eu deve essere protetto con un mazzo di chiavi della regione europe.

  • 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 regione asia-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:

  1. Crea un keyring.
  2. Crea una chiave.

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

  1. Nella console Google Cloud, vai alla pagina Browser.

    Vai al browser

  2. Fai clic su Crea set di dati. Viene visualizzata la pagina Crea set di dati.

  3. 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.

  4. 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.

  5. 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).

  6. 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:

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

  1. Crea il set di dati utilizzando il metodo datasets.create.

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    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 Content

    Explorer 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.

    L'output è il seguente. La risposta contiene un identificatore per un'operazione a lunga esecuzione (LRO). Le operazioni che richiedono molto tempo vengono restituite quando le chiamate ai metodi potrebbero richiedere ulteriore tempo per essere completate. Prendi nota del valore di OPERATION_ID. Questo valore ti servirà nel passaggio successivo.

  2. 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 Cloud
    • LOCATION: la posizione del set di dati
    • DATASET_ID: l'ID set di dati
    • OPERATION_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 Content

    Explorer 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.

    L'output è il seguente. Quando la risposta contiene "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

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