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

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

Panoramica

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

AML AI supporta solo CMEK utilizzando Cloud KMS. Non supporta la crittografia predefinita di Google.

CMEK ti consente di controllare più aspetti del ciclo di vita e di gestire chiavi, ma comporta anche costi aggiuntivi per servizio Cloud KMS.

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

La configurazione della crittografia viene impostata quando crei un'istanza. Dopo aver creato un'istanza, non puoi e assegnare una chiave Cloud KMS diversa. Puoi comunque ruotare la chiave.

Per ulteriori informazioni su CMEK in generale, vedi le 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 AML AI non supporta le chiavi di crittografia fornite dal cliente (CSEK) o Cloud External Key Manager.

Dati del cliente

Tutti i Dati dei clienti trattati da AML AI viene criptato at-rest utilizzando la chiave CMEK specificata nella Istanza padre corrispondente risorsa. Sono inclusi tutti i dati dei clienti associati alle risorse AML AI, come set di dati, configurazioni del motore, modelli e altro ancora. Tutti i contenuti temporanei l'archiviazione permanente dei Dati dei clienti, incluse copie di input e output, caratteristiche ML generate, iperparametri del modello, pesi del modello e previsione vengono criptati usando 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 di IA AML e i relativi dati. IA AML non gestisce la crittografia dei dati di input o di output in Google Cloud progetto. Se vuoi che questi dati vengano criptati utilizzando CMEK, devi configurare una chiave Cloud KMS in modo che corrisponda al livello di protezione della chiave scelto 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, sei tu a controllare rotazione della chiave. 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 AML AI può essere archiviata internamente unità. Se, durante la durata di una risorsa AML AI, la chiave ruotata, non tutte le unità possono essere criptate con la stessa versione della chiave.

Se ruoti una chiave, AML AI non ha modo di forzare o per determinare se è possibile eliminare in sicurezza le versioni precedenti della chiave.

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

Creazione di una chiave e concessione delle autorizzazioni

Le seguenti istruzioni spiegano come creare una chiave per un'istanza e concedere autorizzazioni per criptare e decriptare i dati dell'istanza con la chiave. Puoi usare una chiave vengono create direttamente in Cloud KMS o in una chiave gestita esternamente, rendi 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 projects.locations.keyRings.create . La posizione della raccolta di chiavi 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: il progetto Google Cloud ID per il progetto contenente il keyring
      • LOCATION: la posizione del keyring; usa uno dei regioni supportate
        Mostra località
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • KEY_RING_ID: un identificatore definito dall'utente per il parametro key ring

      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: il progetto Google Cloud ID per il progetto contenente il keyring
      • LOCATION: la posizione del keyring; usa uno dei regioni supportate
        Mostra località
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • KEY_RING_ID: un identificatore definito dall'utente per il keyring

      Esegui la persone che seguo :

      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: il progetto Google Cloud ID per il progetto contenente il keyring
      • LOCATION: la posizione del keyring; usa uno dei regioni supportate
        Mostra località
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • KEY_RING_ID: l'identificatore definito dall'utente per il keyring
      • 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 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://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 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://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: il progetto Google Cloud ID per il progetto contenente il keyring
      • LOCATION: la posizione del keyring; usa uno dei regioni supportate
        Mostra località
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • KEY_RING_ID: l'identificatore definito dall'utente per il keyring
      • KEY_ID: un identificatore definito dall'utente per la chiave

      Esegui la persone che seguo :

      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 in progetto AML AI, poi il servizio AML AI L'account non esiste ancora. Crea il service account.

    Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

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

    Esegui la persone che seguo :

    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 Ruolo IAM Autore crittografia/decrittografia CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) ad AML AI l'account di servizio. Concedi questa autorizzazione alla chiave che hai creato.

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

    • PROJECT_ID: il progetto Google Cloud ID per il progetto in cui è in esecuzione AML AI
    • KEY_ID: l'identificatore definito dall'utente per la chiave
    • LOCATION: la posizione del keyring; usa uno dei regioni supportate
      Sedi dei negozi
      • us-central1
      • us-east1
      • asia-south1
      • europe-west1
      • europe-west2
      • europe-west4
      • northamerica-northeast1
      • southamerica-east1
    • KEY_RING_ID: un identificatore definito dall'utente per il parametro key ring
    • PROJECT_NUMBER: Google Cloud numero progetto del progetto in cui viene eseguito AML AI

    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 gcloud kms keys add-iam-policy-binding documentazione.

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 criptata con CMEK:

Ti consigliamo di revocare le autorizzazioni dall'account di servizio AML AI prima di disattivare o distruggere una chiave. Le modifiche alle autorizzazioni sono vengono propagate in pochi secondi, per permetterti di osservare l'impatto della disattivazione l'eliminazione di una chiave.

Quando disabiliti o elimini la chiave di crittografia per un'istanza, perderai il valore 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.

Criteri dell'organizzazione CMEK

L'AI AML non supporta i criteri 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 AML AI all'interno di un perimetro VPC-SC, La chiave CMEK deve essere ancora accessibile all'account di servizio. Se la chiave non è all'interno dello stesso perimetro VPC-SC, esistono vari modi per farlo, tra cui:

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

Passaggi successivi