Questa pagina descrive come criptare i dati archiviati nelle istanze 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 utilizzando una chiave CMEK. Crei e 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 è possibile accedere ai dati criptati con questa chiave.
AML AI supporta solo CMEK utilizzando Cloud KMS. Non supporta la crittografia predefinita di Google.
Le chiavi CMEK ti consentono di controllare le chiavi, inclusi il livello di protezione, la località, la pianificazione della rotazione, le autorizzazioni di utilizzo e di accesso e i limiti crittografici. L'utilizzo di Cloud KMS consente anche di visualizzare gli audit log e controllare i cicli di vita delle chiavi, ma comporta anche costi aggiuntivi per il servizio Cloud KMS.
Cloud KMS può essere eseguito nello stesso progetto di AML AI o in un progetto separato in cui gestisci centralmente le chiavi per più progetti. Google Cloud
La configurazione della crittografia viene impostata quando crei un'istanza. Una volta creata un'istanza, non puoi assegnare una chiave Cloud KMS diversa. Puoi comunque ruotare la chiave.
Per saperne di più su CMEK in generale, consulta la documentazione di Cloud KMS.
Livelli di protezione
Cloud KMS ti consente di scegliere tra una serie di livelli di protezione diversi, tra cui:
- Chiavi software
- Moduli di sicurezza hardware (HSM) utilizzando Cloud HSM
Scopri come configurare CMEK in AML AI. 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 dei clienti
Tutti i dati dei clienti gestiti da AML AI sono criptati at-rest utilizzando la chiave CMEK specificata nella risorsa istanza principale 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à ML generate, gli iperparametri del modello, i pesi del modello e i risultati della previsione, viene criptato utilizzando la chiave CMEK dell'istanza corrispondente.
Consulta i termini specifici del servizio per la definizione di dati del cliente, che potrebbero non includere identificatori di risorse, attributi o altre etichette di 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. AML AI non gestisce la crittografia dei dati di input o output nel tuo progetto Google Cloud. Se vuoi che questi dati vengano criptati utilizzando CMEK, devi configurare una chiave Cloud KMS in modo che corrisponda al livello di protezione delle chiavi 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, rotazione della chiave è controllata da te. Quando ruoti una chiave, i dati criptati con le versioni precedenti della chiave non vengono criptati nuovamente in modo automatico con la nuova versione della chiave.
Una singola risorsa AI AML può essere archiviata internamente come più unità. Se, durante il ciclo di vita di una risorsa AML AI, la versione della chiave viene ruotata, non tutte le unità potrebbero essere criptate con la stessa versione della chiave.
Se ruoti una chiave, non esiste modo in AML AI di forzare una ricrittografia o di determinare se le versioni precedenti della chiave possono essere eliminate in sicurezza.
Scopri di più sulla rotazione delle chiavi con Cloud KMS.
Creazione di una chiave e concessione 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.
Nel progetto Google Cloud in cui vuoi gestire le chiavi:
Crea una chiave automatizzata 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 sostituzioni seguenti:
KMS_PROJECT_ID: l'ID progetto Google Cloud del progetto contenente il portachiaviLOCATION: la posizione del portachiavi; utilizza una delle regioni supportateMostra localitàus-central1us-east1asia-south1europe-west1europe-west2europe-west4northamerica-northeast1southamerica-east1australia-southeast1
KEY_RING_ID: un identificatore definito dall'utente per le chiavi automatizzate
Per inviare la richiesta, scegli una di queste 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 ContentDovresti 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 portachiaviLOCATION: la posizione del portachiavi; utilizza una delle regioni supportateMostra localitàus-central1us-east1asia-south1europe-west1europe-west2europe-west4northamerica-northeast1southamerica-east1australia-southeast1
KEY_RING_ID: un identificatore definito dall'utente per le chiavi automatizzate
Esegui questo 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
Dovresti ricevere una risposta vuota:Windows (cmd.exe)
gcloud kms keyrings create KEY_RING_ID ^ --project KMS_PROJECT_ID --location LOCATION
$
Crea una chiave utilizzando il metodo
projects.locations.keyRings.cryptoKeys.REST
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
KMS_PROJECT_ID: l'ID progetto Google Cloud del progetto contenente il portachiaviLOCATION: la posizione del portachiavi; utilizza una delle regioni supportateMostra localitàus-central1us-east1asia-south1europe-west1europe-west2europe-west4northamerica-northeast1southamerica-east1australia-southeast1
KEY_RING_ID: l'identificatore definito dall'utente per il portachiaviKEY_ID: un identificatore definito dall'utente per la chiave
Corpo JSON della richiesta:
{ "purpose": "ENCRYPT_DECRYPT" }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' { "purpose": "ENCRYPT_DECRYPT" } EOFQuindi 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 utf8Quindi 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 ContentDovresti 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 portachiaviLOCATION: la posizione del portachiavi; utilizza una delle regioni supportateMostra localitàus-central1us-east1asia-south1europe-west1europe-west2europe-west4northamerica-northeast1southamerica-east1australia-southeast1
KEY_RING_ID: l'identificatore definito dall'utente per il portachiaviKEY_ID: un identificatore definito dall'utente per la chiave
Esegui questo 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"
Dovresti ricevere una risposta vuota:Windows (cmd.exe)
gcloud kms keys create KEY_ID ^ --keyring KEY_RING_ID ^ --project KMS_PROJECT_ID ^ --location LOCATION ^ --purpose "encryption"
$
Se non hai creato un'istanza AML AI nel progetto AML AI, il service account 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 per il progetto in cui è in esecuzione AML AI
Esegui questo 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
Concedi il ruolo IAM Autore crittografia/decrittografia CryptoKey (
roles/cloudkms.cryptoKeyEncrypterDecrypter) aaccount di serviziont AML AI. Concedi questa autorizzazione per la 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 per il progetto in cui è in esecuzione AML AIKEY_ID: l'identificatore definito dall'utente per la chiaveLOCATION: la posizione del portachiavi; utilizza una delle regioni supportateMostra localitàus-central1us-east1asia-south1europe-west1europe-west2europe-west4northamerica-northeast1southamerica-east1australia-southeast1
KEY_RING_ID: un identificatore definito dall'utente per le chiavi automatizzatePROJECT_NUMBER: il Google Cloud numero di progetto per il progetto in cui è in esecuzione AML AI
Esegui questo 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 saperne di più 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 criptata con CMEK:
- Revoca il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS dall'account di servizio AML AI utilizzando la consoleGoogle Cloud o l'interfaccia a riga di comando gcloud.
- Disattivare temporaneamente la chiave CMEK
- Elimina definitivamente la chiave CMEK
Ti consigliamo di revocare le autorizzazioni dall'account di servizio AML AI prima di disattivare o eliminare una chiave. Le modifiche alle autorizzazioni vengono propagate in pochi secondi, in modo da poter osservare gli effetti della disattivazione o dell'eliminazione di una chiave.
Quando disattivi o distruggi la chiave di crittografia per 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 del motore, risultati dei backtest e risultati delle previsioni. Gli utenti con qualsiasi ruolo di visualizzatore AML AI possono comunque visualizzare campi come il nome dell'istanza o gli altri campi delle risorse restituiti dal recupero delle risorse AML AI.
Qualsiasi operazione che utilizzi o esporti dati dei clienti, ad esempio l'esportazione dei metadati di backtestResults, non andrà a buon fine.
Gli utenti con il ruolo di amministratore AML AI o di proprietario possono eliminare l'istanza.
Policy dell'organizzazione CMEK
AML AI non supporta le policy dell'organizzazione CMEK. Tuttavia,
l'AI AML richiede sempre l'utilizzo di CMEK, indipendentemente dal
criterio dell'organizzazione constraints/gcp.restrictNonCmekServices.
Interazione con VPC-SC
Se hai configurato AML AI all'interno di un perimetro VPC-SC, la chiave CMEK deve comunque essere 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
- Utilizzare il peering perimetrale VPC
Passaggi successivi
- Crea un'istanza
- Scopri di più su CMEK