Crittografare i dati utilizzando le chiavi di crittografia gestite dal cliente (CMEK)

Questa pagina descrive come criptare i dati archiviati nelle istanze di IA AML con chiavi di crittografia gestite dal cliente (CMEK).

Panoramica

Tutti i dati dei clienti in un'istanza di IA AML sono criptati at-rest utilizzando una chiave CMEK. Gestisci la chiave in Cloud Key Management Service (Cloud KMS) e controlli l'accesso alla chiave utilizzando Identity and Access Management. Se disattivi temporaneamente o distruggi definitivamente la chiave CMEK, non potrai accedere ai dati criptati con quella chiave.

L'AI AML supporta le chiavi CMEK solo utilizzando Cloud KMS. Non supporta la crittografia predefinita di Google.

CMEK ti offre il controllo su più aspetti del ciclo di vita e della gestione delle tue chiavi, ma comporta anche costi aggiuntivi per il servizio Cloud KMS.

Cloud KMS può essere eseguito nello stesso progetto Google Cloud dell'AI AML o in un progetto separato in cui gestisci centralmente le chiavi per più progetti.

La configurazione della crittografia viene configurata quando crei un'istanza. Una volta creata un'istanza, non puoi assegnare una chiave Cloud KMS diversa. Puoi comunque ruotare la chiave.

Per ulteriori informazioni su CMEK in generale, consulta la documentazione di Cloud KMS.

Livelli di protezione

Cloud KMS ti consente di scegliere tra una serie di diversi livelli di protezione, tra cui:

  • Chiavi software
  • Moduli di sicurezza hardware (HSM) che utilizzano Cloud HSM

Scopri come configurare CMEK nell'AI AML. Non tutti i livelli di protezione sono disponibili in tutte le regioni. Tieni presente che l'AI AML non supporta le chiavi di crittografia fornite dal cliente (CSEK) o il gestore chiavi esterno Cloud.

Dati del cliente

Tutti i dati dei clienti gestiti dall'IA AML sono criptati at-rest utilizzando la chiave CMEK specificata nella risorsa Instance corrispondente. Sono inclusi tutti i dati dei clienti associati alle risorse AML AI, come set di dati, configurazioni del motore, modelli e altro ancora. Tutto lo spazio di archiviazione temporaneo e permanente dei dati dei clienti, incluse le copie di input e output, le funzionalità di ML generate, gli iperparametri del modello, i pesi del modello e i risultati di previsione, vengono criptati utilizzando la chiave CMEK dell'istanza corrispondente.

Consulta i termini specifici del servizio per la definizione dei dati dei clienti, che potrebbero non includere identificatori delle risorse, attributi o altre etichette dei dati.

Crittografia dei dati di input e output

La configurazione della crittografia AML AI in un'istanza viene utilizzata solo per le risorse AML AI e i relativi dati. L'IA AML non gestisce la crittografia dei dati di input o output nel progetto Google Cloud. Se vuoi che questi dati vengano criptati utilizzando CMEK, devi configurare una chiave Cloud KMS corrispondente al livello di protezione della chiave scelto e configurato nel set di dati BigQuery. Puoi anche riutilizzare la stessa chiave utilizzata dall'AI AML.

Scopri di più sulla crittografia in BigQuery.

Rotazione chiave

La rotazione periodica e automatica delle chiavi è una pratica di sicurezza consigliata. Con CMEK, rotazione della chiave è sotto il tuo controllo. Quando ruoti una chiave, i dati criptati con le versioni precedenti della chiave non vengono criptati di nuovo automaticamente con la nuova versione della chiave.

Una singola risorsa di IA AML può essere archiviata internamente come più unità. Se, durante il ciclo di vita di una risorsa AI AML, la versione della chiave viene ruotata, non tutte le unità potrebbero essere criptate con la stessa versione della chiave.

Se ruoti una chiave, non c'è modo nell'AI AML di forzare una nuova crittografia o di determinare se è possibile eliminare le versioni precedenti della chiave.

Scopri di più sulla rotazione delle chiavi con Cloud KMS.

Creazione di una chiave e assegnazione delle autorizzazioni

Le istruzioni riportate di seguito spiegano come creare una chiave per un'istanza e concedere le autorizzazioni per criptare e decriptare i dati dell'istanza con la chiave. Puoi utilizzare una chiave creata direttamente in Cloud KMS o una chiave con gestione esterna che hai reso disponibile con Cloud External Key Manager.

  1. Nel progetto Google Cloud in cui vuoi gestire le chiavi:

    1. Abilita l'API Cloud KMS.

    2. Crea un keyring utilizzando il metodo projects.locations.keyRings.create. La posizione del portachiavi Cloud KMS deve corrispondere alla posizione dell'istanza che cripti.

      REST

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

      • KMS_PROJECT_ID: l'ID progetto Google Cloud del progetto contenente il portachiavi
      • LOCATION: la posizione del portachiavi. Utilizza una delle regioni supportate.
        Mostra sedi
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
        • australia-southeast1
      • KEY_RING_ID: un identificatore definito dall'utente per il keyring

      Per inviare la richiesta, scegli una delle seguenti opzioni:

      curl

      Esegui questo comando:

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d "" \
      "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID"

      PowerShell

      Esegui questo comando:

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID" | Select-Object -Expand Content

      Dovresti ricevere una risposta JSON simile alla seguente:

      {
        "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID",
        "createTime": "2023-03-14T15:52:55.358979323Z"
      }
      

      gcloud

      Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

      • KMS_PROJECT_ID: l'ID progetto Google Cloud del progetto contenente il portachiavi
      • LOCATION: la posizione del portachiavi. Utilizza una delle regioni supportate.
        Mostra sedi
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
        • australia-southeast1
      • KEY_RING_ID: un identificatore definito dall'utente per il keyring

      Esegui il seguente comando:

      Linux, macOS o Cloud Shell

      gcloud kms keyrings create KEY_RING_ID \
        --project KMS_PROJECT_ID --location LOCATION

      Windows (PowerShell)

      gcloud kms keyrings create KEY_RING_ID `
        --project KMS_PROJECT_ID --location LOCATION

      Windows (cmd.exe)

      gcloud kms keyrings create KEY_RING_ID ^
        --project KMS_PROJECT_ID --location LOCATION
      Dovresti ricevere una risposta vuota:
      $

    3. Crea una chiave utilizzando il metodo projects.locations.keyRings.cryptoKeys.

      REST

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

      • KMS_PROJECT_ID: l'ID progetto Google Cloud del progetto contenente il portachiavi
      • LOCATION: la posizione del portachiavi. Utilizza una delle regioni supportate.
        Mostra sedi
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
        • australia-southeast1
      • KEY_RING_ID: l'identificatore definito dall'utente per il portachiavi
      • KEY_ID: un identificatore definito dall'utente per la chiave

      Corpo JSON della richiesta:

      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      

      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'
      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      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://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_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:

      @'
      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      '@  | 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://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID" | Select-Object -Expand Content

      Dovresti ricevere una risposta JSON simile alla seguente:

      {
        "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID",
        "primary": {
          "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID/cryptoKeyVersions/1",
          "state": "ENABLED",
          "createTime": "2023-03-14T15:52:55.358979323Z",
          "protectionLevel": "SOFTWARE",
          "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION",
          "generateTime": "2023-03-14T15:52:55.358979323Z"
        },
        "purpose": "ENCRYPT_DECRYPT",
        "createTime": "2023-03-14T15:52:55.358979323Z",
        "versionTemplate": {
          "protectionLevel": "SOFTWARE",
          "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
        },
        "destroyScheduledDuration": "86400s"
      }
      

      gcloud

      Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

      • KMS_PROJECT_ID: l'ID progetto Google Cloud del progetto contenente il portachiavi
      • LOCATION: la posizione del portachiavi. Utilizza una delle regioni supportate.
        Mostra sedi
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
        • australia-southeast1
      • KEY_RING_ID: l'identificatore definito dall'utente per il portachiavi
      • KEY_ID: un identificatore definito dall'utente per la chiave

      Esegui il seguente comando:

      Linux, macOS o Cloud Shell

      gcloud kms keys create KEY_ID \
        --keyring KEY_RING_ID \
        --project KMS_PROJECT_ID \
        --location LOCATION \
        --purpose "encryption"

      Windows (PowerShell)

      gcloud kms keys create KEY_ID `
        --keyring KEY_RING_ID `
        --project KMS_PROJECT_ID `
        --location LOCATION `
        --purpose "encryption"

      Windows (cmd.exe)

      gcloud kms keys create KEY_ID ^
        --keyring KEY_RING_ID ^
        --project KMS_PROJECT_ID ^
        --location LOCATION ^
        --purpose "encryption"
      Dovresti ricevere una risposta vuota:
      $

  2. Se non hai creato un'istanza AML AI nel progetto AML AI, l'account di servizio AML AI non esiste ancora. Crea il service account.

    Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

    • PROJECT_ID: l'ID progetto Google Cloud del progetto in cui è in esecuzione l'AI AML

    Esegui il seguente comando:

    Linux, macOS o Cloud Shell

    gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID

    Windows (PowerShell)

    gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID

    Windows (cmd.exe)

    gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID

    Dovresti ricevere una risposta simile alla seguente:

    Service identity created: service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com

  3. Concedi il ruolo IAM Autore crittografia/decrittografia CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) all'account di servizio AI AML. Concedi questa autorizzazione alla chiave che hai creato.

    Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

    • PROJECT_ID: l'ID progetto Google Cloud del progetto in cui è in esecuzione l'AI AML
    • KEY_ID: l'identificatore definito dall'utente per la chiave
    • LOCATION: la posizione del portachiavi. Utilizza una delle regioni supportate.
      Mostra sedi
      • us-central1
      • us-east1
      • asia-south1
      • europe-west1
      • europe-west2
      • europe-west4
      • northamerica-northeast1
      • southamerica-east1
      • australia-southeast1
    • KEY_RING_ID: un identificatore definito dall'utente per il keyring
    • PROJECT_NUMBER: il numero del progetto Google Cloud per il progetto in cui è in esecuzione l'AI AML

    Esegui il seguente comando:

    Linux, macOS o Cloud Shell

    gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID \
      --location LOCATION --keyring=KEY_RING_ID \
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter

    Windows (PowerShell)

    gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID `
      --location LOCATION --keyring=KEY_RING_ID `
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com `
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter

    Windows (cmd.exe)

    gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ^
      --location LOCATION --keyring=KEY_RING_ID ^
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ^
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter

    Dovresti ricevere una risposta simile alla seguente:

    Updated IAM policy for key KEY_ID.
    bindings:
    - members:
      - serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com
      role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    etag: BwYCq0Sq4Ho=
    version: 1
    

    Per ulteriori informazioni su questo comando, consulta la documentazione di gcloud kms keys add-iam-policy-binding.

Ora puoi creare un'istanza e specificare la chiave da utilizzare per la crittografia.

Rimozione dell'accesso in corso…

Esistono diversi modi per rimuovere l'accesso alla chiave dall'istanza con crittografia CMEK:

Ti consigliamo di revocare le autorizzazioni dall'account di servizio AML AI prima di disattivare o distruggere una chiave. Le modifiche alle autorizzazioni vengono propagate entro pochi secondi, in modo da poter osservare gli impatti della disattivazione o della distruzione di una chiave.

Se disattivi o distruggi la chiave di crittografia di un'istanza, perdi la possibilità di utilizzare o recuperare i dati dei clienti associati all'istanza. Tutti i dati dei clienti archiviati nell'istanza diventano inaccessibili, inclusi modelli, configurazioni dell'engine, risultati del backtest e risultati di previsione. Gli utenti con qualsiasi ruolo di visualizzatore dell'IA AML possono comunque visualizzare campi come il nome dell'istanza o gli altri campi delle risorse restituiti dalla retrieving risorse di IA AML.

Eventuali operazioni che utilizzano o esportano i dati dei clienti, ad esempio l'esportazione backtestResults dei metadati, non andranno a buon fine.

Gli utenti con il ruolo di amministratore dell'IA AML o il ruolo Proprietario possono eliminare l'istanza.

Norme dell'organizzazione CMEK

L'AI AML non supporta le policy dell'organizzazione CMEK. Tuttavia, l'AI AML richiede sempre l'utilizzo di CMEK, indipendentemente dal constraints/gcp.restrictNonCmekServices criterio dell'organizzazione.

Interazione con VPC-SC

Se hai configurato l'AI AML all'interno di un perimetro VPC-SC, la chiave CMEK deve essere ancora accessibile al account di servizio. Se la chiave non si trova all'interno dello stesso perimetro VPC-SC, esistono diversi modi per farlo, tra cui:

  • Utilizza una regola in uscita per inserire la risorsa nella lista consentita
  • Utilizza il peering del perimetro VPC

Passaggi successivi