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

Per impostazione predefinita, Google Cloud cripta i dati quando sono at-rest mediante chiavi di crittografia gestiti 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. Invece di lasciare che sia Google a possedere e gestire le chiavi di crittografia che proteggono i tuoi i set di dati dell'API Cloud Healthcare sono criptati utilizzando una chiave che puoi controllare e gestire Cloud Key Management Service (Cloud KMS).

Per ulteriori informazioni su CMEK in generale, per sapere quando e perché attivarle, vedi 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.

Ai fini della documentazione, vengono usate le seguenti convenzioni:

  • PROJECT_ID: l'ID progetto dell'API Cloud Healthcare
  • KMS_PROJECT_ID: l'ID progetto in cui Cloud KMS che potrebbe essere uguale a PROJECT_ID

Per informazioni sugli ID e sui numeri di progetto di Google Cloud, consulta Identificazione dei progetti.

Limitazioni

  • Puoi utilizzare le chiavi Cloud KMS solo quando crei un dataset dell'API Cloud Healthcare. Non puoi abilitare, modificare o disabilitare le chiavi Cloud KMS su un'API Cloud Healthcare esistente del set di dati.
  • 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 le 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 eliminati, nonché per attività operative come la fatturazione o la verifica della disponibilità della chiave.

Considerazioni chiave esterne

Per informazioni sull'utilizzo delle chiavi gestite all'interno di un sistema esterno di gestione delle chiavi supportato da un partner per proteggere i dati al loro interno Google Cloud, consulta Cloud External Key Manager.

Se perdi le chiavi che gestisci al di fuori di Google Cloud, Google non potrà recuperare i dati.

Indisponibilità della chiave e perdita di dati

Se un set di dati è criptato da una chiave e questa chiave non è più disponibile e rimane non disponibile, l'API Cloud Healthcare disabilita ed elimina il set di dati. A volte, una chiave non è più disponibile se viene disabilitata o eliminata oppure se è inaccessibile a causa di autorizzazioni revocate, ma questo comportamento si verifica se non è disponibile per qualsiasi motivo. Il livello di protezione della chiave o se si tratta di una chiave esterna non influisce su questo comportamento. Anche le chiavi esterne potrebbero non essere più disponibili in modo imprevedibile. Ad esempio, potrebbero sorgere problemi di connettività le risorse Google Cloud e il tuo EKM.

La procedura seguente descrive come viene verificata la disponibilità delle chiavi e come è possibile disabilitare ed eliminare un set di dati:

  1. Dopo la creazione di un set di dati dell'API Cloud Healthcare criptato con CMEK, L'API Cloud Healthcare controlla lo stato della chiave ogni cinque minuti per assicurarti che la chiave 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 Cloud KMS, il set di dati dell'API Cloud Healthcare è disabilitato come protezione misurare. Per riattivare il set di dati dell'API Cloud Healthcare, contatta il tuo rappresentante dell'assistenza.

    Quando l'opzione è disattivata, puoi inviare solo datasets.get e datasets.delete richieste al set di dati dell'API Cloud Healthcare. Altre richieste non vanno a buon fine 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. Qualsiasi datastore DICOM, FHIR e HL7v2 nel set di dati e dati associati vengono eliminati. Se vengono eliminati, questi dati non possono essere recuperati.

Creazione di chiavi

Le sezioni seguenti descrivono come creare un keyring di Cloud KMS e chiave. Sono supportate solo le chiavi di crittografia simmetriche di Cloud KMS.

Località supportate

Le chiavi Cloud KMS sono disponibili nelle località dell'API Cloud Healthcare. Crea il keyring in un località corrispondente a una o più regioni del tuo set di dati dell'API Cloud Healthcare.

  • Qualsiasi set di dati dell'API Cloud Healthcare in più regioni deve utilizzare un keyring multiregionale di una località corrispondente. Ad esempio, un set di dati dell'API Cloud Healthcare nella regione us deve essere protetto con un keyring della regione us e un set di dati dell'API Cloud Healthcare nella regione eu deve essere protetta con un keyring 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 una chiave squilla dalla regione asia-northeast1.

  • Non puoi utilizzare la regione global durante la configurazione di CMEK per set di dati dell'API Cloud Healthcare.

Per ulteriori informazioni, consulta Località dell'API Cloud Healthcare e le località Cloud KMS.

Crea un keyring 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 quella chiave. Per istruzioni, vedi Autorizzazioni CMEK 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. Non è necessario che le tue applicazioni e specificare 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 automaticamente o decripta l'oggetto richiesto, a condizione che siano soddisfatte entrambe le seguenti condizioni:

  • L'agente di servizio dispone ancora delle autorizzazioni necessarie.
  • La chiave è disponibile e abilitata.

Creare un set di dati dell'API Cloud Healthcare con crittografia 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 il set di dati. Questa chiave è sensibile alle maiuscole e nel seguente formato:

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

Per visualizzare gli ID risorsa della chiave Cloud KMS, consulta Recupero di un ID risorsa di 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 soggetto alla caratteri consentiti per i set di dati e requisiti relativi alle dimensioni.

  4. Seleziona uno dei seguenti tipi di località:

    • Regione. Il set di dati risiede definitivamente all'interno di una regione Google Cloud. Dopo aver selezionato questa opzione, digita o seleziona una località nel campo Regione.

    • Più regioni. Il set di dati risiede definitivamente all'interno di una località in 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 Google gestisca le chiavi di crittografia che e proteggere i tuoi dati nel 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 uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

Esegui la persone che seguo :

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 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 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 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 un'operazione a lunga esecuzione (LRO). Le operazioni a lunga esecuzione vengono restituite quando il completamento delle chiamate ai metodi può richiedere più tempo. Prendi nota del valore di OPERATION_ID. Questo valore ti servirà nel passaggio successivo.

  2. Visualizza 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 del 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 l'app pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Compila tutti i campi obbligatori e fai clic su Esegui.

    L'output è il seguente. Quando la risposta contiene "done": true, l'operazione a lunga esecuzione.

Determina se un set di dati è protetto da Cloud KMS

Per ognuna delle chiavi che hai creato o che proteggono la tua API Cloud Healthcare puoi vedere quali risorse protegge la chiave con il monitoraggio dell'utilizzo delle chiavi. Per ulteriori informazioni, consulta Visualizzare l'utilizzo delle chiavi.

Rotazione chiave

Cloud KMS supporta la rotazione della chiave sia automatica che manuale verso una nuova versione.

La rotazione di una chiave genera 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 criptate con la chiave in un set di dati esistente non lo sono automaticamente ricriptata con la nuova versione della chiave primaria.

Affinché la crittografia funzioni, devono essere disponibili tutte le versioni della chiave. Altrimenti, il set di dati dell'API Cloud Healthcare viene disabilitato e tutte le richieste set di dati non riuscito. Per saperne di più, consulta Considerazioni chiave esterne e Set di dati disabilitati ed eliminazione permanente dei set di dati.

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

Sei tu ad avere il controllo delle tue chiavi e puoi disabilitare, eliminare o revocare autorizzazioni sulla chiave, in modo che l'API Cloud Healthcare per 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.

Si verifica un ritardo tra il momento in cui disabiliti una chiave o la sua versione e il momento in cui non possono più essere utilizzati. C'è anche un ritardo tra il momento in cui revocare le autorizzazioni dell'account di servizio dell'agente di servizio Cloud Healthcare sulla chiave e quando può. non è più possibile accedervi. Per ulteriori informazioni, consulta la pagina relativa alla coerenza delle risorse Cloud KMS.

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

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 i prezzi dell'API Cloud Healthcare.

Cloud KMS addebita i costi sia della chiave sia di eventuali token operazioni su quella chiave. Queste operazioni si verificano quando l'API Cloud Healthcare utilizza la chiave la crittografia o la decrittografia. Questi costi dovrebbero essere minimi, in base al il numero previsto di operazioni crittografiche generate API Cloud Healthcare. Per ulteriori informazioni, vedi Prezzi di Cloud KMS.

Quote di Cloud KMS e API Cloud Healthcare

Quando usi CMEK nell'API Cloud Healthcare, i tuoi progetti possono consumare richieste di crittografia di Cloud KMS quote. 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 tranne datasets.get. Le operazioni di crittografia e decriptazione utilizzando Le chiavi CMEK influiscono sulle quote di Cloud KMS solo se utilizzi hardware (Cloud HSM) o chiavi esterne (Cloud EKM). Per ulteriori informazioni, consulta Quote di Cloud KMS.

Passaggi successivi