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 quando sono 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 dataset dell'API Cloud Healthcare. Anziché essere di proprietà di Google e gestite da Google, le chiavi di crittografia che proteggono i tuoi dati, i tuoi set di dati dell'API Cloud Healthcare vengono criptati utilizzando una chiave che controlli e gestisci in Cloud Key Management Service (Cloud KMS).

Per ulteriori informazioni su CMEK in generale, incluso quando e perché abilitarla, 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, vedi Separazione dei compiti.

Ai fini della 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 lo stesso di 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 abilitare, modificare o disabilitare le chiavi Cloud KMS in un set di dati API Cloud Healthcare esistente.
  • Nei set di dati criptati con 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 criptate con CMEK.

Operazioni CMEK

Le chiavi Cloud KMS vengono utilizzate quando una risorsa criptata con CMEK viene creata, letta, aggiornata o eliminata e per attività operative come la fatturazione o per garantire la disponibilità della chiave.

Considerazioni sulle chiavi esterne

Per informazioni sull'utilizzo delle chiavi gestite in un sistema di gestione delle chiavi esterne supportato per proteggere i dati inGoogle 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 viene criptato con una chiave e questa chiave diventa non disponibile e rimane non disponibile, l'API Cloud Healthcare disabilita ed elimina il set di dati. A volte, una chiave non è disponibile se è 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 il fatto che si tratti di una chiave esterna non influisce su questo comportamento. Le chiavi esterne possono anche diventare non disponibili in modo imprevedibile. Ad esempio, potrebbero verificarsi problemi di connettività tra le tue risorseGoogle Cloud e il tuo EKM.

La seguente procedura descrive come viene verificata 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 criptato con 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 riesce ancora a connettersi a Cloud KMS, il set di dati dell'API Cloud Healthcare viene disattivato come misura protettiva. Per riattivare il set di dati dell'API Cloud Healthcare, contatta il tuo rappresentante dell'assistenza.

    Se disattivata, puoi inviare solo richieste datasets.get e datasets.delete al set di dati dell'API Cloud Healthcare. Altre richieste non vanno a buon fine e restituiscono 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 della chiave

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 posizione che corrisponda alla regione o alla multiregione del tuo set di dati dell'API Cloud Healthcare.

  • Qualsiasi set di dati multiregionale dell'API Cloud Healthcare deve utilizzare un portachiavi multiregionale proveniente da una posizione corrispondente. Ad esempio, un set di dati dell'API Cloud Healthcare nella regione us deve essere protetto con un portachiavi della regione us e un set di dati dell'API Cloud Healthcare nella regione eu deve essere protetto con un portachiavi della regione europe.

  • I set di dati dell'API Cloud Healthcare regionali devono utilizzare chiavi regionali corrispondenti. Ad esempio, un set di dati dell'API Cloud Healthcare nella regione asia-northeast1 deve essere protetto con un portachiavi 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.

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

Concedere 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 quella chiave. Per istruzioni, vedi Autorizzazioni CMEK per i set di dati.

Dopo aver concesso il ruolo all'account di servizio, l'API Cloud Healthcare può criptare e decriptare le risorse criptate con CMEK. Le tue 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.

Crea un set di dati dell'API Cloud Healthcare criptato con CMEK

Gli esempi riportati di seguito mostrano come creare un set di dati criptato con CMEK.

Devi specificare un ID risorsa della chiave Cloud KMS quando crei il set di dati. Questa chiave distingue tra maiuscole e minuscole e ha il seguente formato:

projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

Per visualizzare gli ID risorsa della chiave Cloud KMS, consulta la sezione Recupero di un ID risorsa di Cloud KMS.

Console

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

    Vai a 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 soggetto ai requisiti di dimensioni e caratteri consentiti per il set di dati.

  4. Seleziona uno dei seguenti tipi di località:

    • Regione. Il set di dati risiede in modo permanente in una Google Cloud regione. 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 località 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:

    • Google-managed encryption key: il metodo di crittografia predefinito. Utilizza questo metodo se vuoi che Google gestisca 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 questo 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 di queste 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 questo 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 questo 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. Sul lato destro della pagina si apre il riquadro Explorer API. 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 a lunga esecuzione vengono restituite quando le chiamate ai metodi potrebbero richiedere più tempo per essere completate. Prendi nota del valore di OPERATION_ID. 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 Google Cloud progetto
    • 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 di queste 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. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa 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 tuoi set di dati dell'API Cloud Healthcare, puoi vedere quali risorse protegge 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 automatica e 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 tutte le operazioni.
  • Le risorse di un set di dati esistente criptate con la chiave non vengono criptate nuovamente in modo automatico 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 saperne di più, consulta Considerazioni sulle chiavi esterne e Dataset disattivati ed eliminazione definitiva dei dataset.

Rimuovere l'accesso dell'API Cloud Healthcare alla chiave Cloud KMS

Hai il controllo delle 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 eliminato una chiave o una versione della chiave associata a un set di dati dell'API Cloud Healthcare, tutti i dati criptati con quella chiave o 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, c'è un ritardo tra il momento in cui revochi le autorizzazioni account di servizio dell'agente di servizio Cloud Healthcare sulla chiave e il momento in cui non è più possibile accedervi. Per ulteriori informazioni, consulta Coerenza delle risorse Cloud KMS.

Esporta e importa i dati in un'istanza abilitata per CMEK

Per mantenere i tuoi dati criptati con una chiave gestita dal cliente durante un'operazione di esportazione, devi impostare una chiave CMEK nella destinazione di archiviazione prima di iniziare l'esportazione. Non esistono requisiti o limitazioni speciali per l'importazione di dati in un set di dati criptato con CMEK quando l'importazione viene eseguita da un archivio non criptato con CMEK o criptato con 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 le operazioni di crittografia eseguite su quella chiave. Queste operazioni si verificano quando l'API Cloud Healthcare utilizza la chiave per la crittografia o la decriptazione. Questi costi dovrebbero essere minimi, in base al numero previsto di operazioni crittografiche generate dall'API Cloud Healthcare. Per maggiori informazioni, consulta la pagina Prezzi di Cloud KMS.

Quote di Cloud KMS e API Cloud Healthcare

Quando utilizzi 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 criptati con CMEK e i relativi archivi DICOM, FHIR e HL7v2 utilizzano queste quote per tutte le operazioni, ad eccezione di 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