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 vengono criptati tramite una chiave CMEK quando sono archiviati at-rest. Puoi gestire la chiave in Cloud Key Management Service e controllare l'accesso alla chiave utilizzando Identity and Access Management. Se disabiliti temporaneamente o distruggi definitivamente la chiave CMEK, non sarà possibile accedere ai dati criptati con quella chiave.
La tecnologia 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 di AML AI o in un progetto separato in cui gestisci centralmente le chiavi di più progetti.
Puoi assegnare una chiave CMEK quando crei un'istanza. Tutte le istanze devono essere configurate utilizzando CMEK e non possono essere modificate per utilizzare la crittografia predefinita di Google.
Per ulteriori informazioni sulla CMEK in generale, inclusi quando e perché abilitarla, consulta la documentazione di Cloud KMS.
Dati del cliente
Tutti i dati dei clienti gestiti da AML AI vengono criptati at-rest utilizzando la chiave CMEK specificata nella risorsa Istanza padre corrispondente. Ciò include tutti i dati dei clienti associati alle risorse AML AI, come set di dati, configurazioni motore, modelli e altro ancora. L'archiviazione temporanea e permanente dei dati dei clienti, comprese le copie di input e output, le funzionalità ML generate, i log, gli iperparametri del modello, le ponderazioni del modello e i risultati delle previsioni, vengono criptate tramite la chiave CMEK dell'istanza corrispondente.
AML AI non gestisce la crittografia dei dati di input o di output nel tuo progetto Google Cloud. Se vuoi che questi dati siano criptati, devi configurare una chiave CMEK separata nel tuo progetto Google Cloud. La chiave KMS specificata in un'istanza viene utilizzata per le risorse AML AI e i relativi dati.
Creazione di una chiave e concessione delle autorizzazioni
Le istruzioni seguenti 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 gestita esternamente che rendi disponibile con Cloud External Key Manager.
Nel progetto Google Cloud in cui vuoi gestire le chiavi:
Crea un keyring utilizzando il metodo
projects.locations.keyRings.create
. La località del keyring di Cloud KMS deve corrispondere alla località dell'istanza criptata.REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
KMS_PROJECT_ID
: l'ID progetto Google Cloud del progetto contenente il keyringLOCATION
: la posizione del keyring; utilizza una delle regioni supportate: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
Per inviare la richiesta, scegli una delle seguenti opzioni:
arricciatura
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": CREATE_TIME }
gcloud
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
LOCATION
: la posizione del keyring; utilizza una delle regioni supportate: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 questo comando:
Linux, macOS o Cloud Shell
gcloud kms keyrings create KEY_RING_ID \ --location LOCATION
Windows (PowerShell)
gcloud kms keyrings create KEY_RING_ID ` --location LOCATION
Windows (cmd.exe)
gcloud kms keyrings create KEY_RING_ID ^ --location LOCATION
$
Crea una chiave utilizzando il metodo
projects.locations.keyRings.cryptoKeys
.REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
KMS_PROJECT_ID
: l'ID progetto Google Cloud del progetto contenente il keyringLOCATION
: la posizione del keyring; utilizza una delle regioni supportate: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 keyringKEY_ID
: un identificatore della chiave definito dall'utente.
Corpo JSON della richiesta:
{ "purpose": "ENCRYPT_DECRYPT" }
Per inviare la richiesta, scegli una delle seguenti opzioni:
arricciatura
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale: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 attuale:@' { "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 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": CREATE_TIME, "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION", "generateTime": GENERATE_TIME }, "purpose": "ENCRYPT_DECRYPT", "createTime": CREATE_TIME, "versionTemplate": { "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION" }, "destroyScheduledDuration": "86400s" }
gcloud
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
LOCATION
: la posizione del keyring; utilizza una delle regioni supportate: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 keyringKEY_ID
: un identificatore della chiave definito dall'utente.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud kms keys create KEY_ID \ --keyring KEY_RING_ID \ --location LOCATION \ --purpose "encryption"
Windows (PowerShell)
gcloud kms keys create KEY_ID ` --keyring KEY_RING_ID ` --location LOCATION ` --purpose "encryption"
Windows (cmd.exe)
gcloud kms keys create KEY_ID ^ --keyring KEY_RING_ID ^ --location LOCATION ^ --purpose "encryption"
$
Se non hai creato un'istanza AML AI nel progetto AML AI, l'account di servizio AML AI non esiste ancora. Creare l'account di servizio:
Prima di utilizzare uno qualsiasi dei dati di comando 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
) all'account di servizio AML AI. Concedi questa autorizzazione per la chiave che hai creato.Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID progetto Google Cloud per il progetto in cui è in esecuzione AML AIKEY_ID
: identificatore definito dall'utente per la chiaveLOCATION
: la posizione del keyring; utilizza una delle regioni supportate: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 keyringPROJECT_NUMBER
: il numero di progetto di Google Cloud 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 ulteriori informazioni su questo comando, consulta la documentazione su 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 a un'istanza criptata con CMEK:
- Revoca il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS dall'account di servizio AML AI utilizzando la console Google Cloud o gcloud CLI
- Disabilita temporaneamente la chiave CMEK
- Elimina definitivamente la chiave CMEK
Ti consigliamo di revocare le autorizzazioni dall'account di servizio AML AI prima di disabilitare 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.
Se disabiliti o elimini la chiave di crittografia per un'istanza, perdi la possibilità di visualizzare o recuperare i dati dell'istanza. Tutti i dati archiviati nell'istanza diventano inaccessibili, comprese le risorse API come set di dati, modelli, configurazioni motore, risultati dei backtest e delle previsioni. Gli utenti con il ruolo visualizzatore AML AI possono comunque visualizzare i metadati dell'istanza, come il nome dell'istanza.
Gli utenti con il ruolo Amministratore AML AI o Proprietario possono eliminare l'istanza.
Criteri dell'organizzazione CMEK
AML AI non supporta i criteri dell'organizzazione CMEK. Tuttavia, AML AI richiede sempre l'utilizzo di CMEK, indipendentemente dal criterio dell'organizzazione constraints/gcp.restrictNonCmekServices
.
Che cosa succede dopo?
- Crea un'istanza
- Scopri di più su CMEK
- Scopri di più sulla crittografia predefinita di Google