Utilizzo delle chiavi di crittografia gestite dal cliente (CMEK)

Per impostazione predefinita, Google Cloud cripta automaticamente i dati quando sono at-rest utilizzando chiavi di crittografia gestite da Google. Se hai requisiti normativi o di conformità specifici relativi alle chiavi che proteggono i dati, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per i job di addestramento.

Per saperne di più sui vantaggi specifici dell'utilizzo di CMEK con AI Platform Training, consulta la sezione seguente di questa guida. Per ulteriori informazioni su CMEK in generale, inclusi quando e perché abilitarla, consulta la documentazione di Cloud Key Management Service.

Questa guida descrive alcuni vantaggi dell'uso di CMEK per l'AI Platform Training e illustra come configurare un job di addestramento per utilizzare CMEK.

Informazioni su CMEK per AI Platform Training

Le seguenti sezioni descrivono informazioni di base su CMEK per AI Platform Training che devi comprendere prima di configurare CMEK per i job di addestramento.

Vantaggi di CMEK

In generale, CMEK è più utile se hai bisogno del controllo completo sulle chiavi utilizzate per criptare i tuoi dati. Con CMEK, puoi gestire le tue chiavi in Cloud KMS. Ad esempio, puoi ruotare o disabilitare una chiave oppure configurare una pianificazione di rotazione utilizzando l'API Cloud KMS. Per ulteriori informazioni su CMEK in generale, ad esempio quando e perché abilitarla, consulta la documentazione di Cloud KMS.

Quando esegui un job di addestramento, il codice viene eseguito su una o più istanze di macchine virtuali (VM) gestite da AI Platform Training. Quando abiliti CMEK per AI Platform Training, viene utilizzata la chiave designata, anziché una chiave gestita da Google, per criptare i dati sui dischi di avvio di queste VM. La chiave CMEK cripta i seguenti tipi di dati:

  • La copia del tuo codice di addestramento sulle VM.
  • Tutti i dati che vengono caricati dal tuo codice di addestramento.
  • Eventuali dati temporanei salvati sul disco locale dal tuo codice di addestramento.

La chiave CMEK non cripta i metadati associati al job di addestramento, come il nome e la regione del job. I metadati associati ai job di addestramento vengono sempre criptati utilizzando il meccanismo di crittografia predefinito di Google.

Utilizzo di CMEK con altri prodotti Google Cloud

La configurazione di CMEK per AI Platform Training non configura automaticamente CMEK per altri prodotti Google Cloud che utilizzi insieme ad AI Platform Training. Per utilizzare CMEK per criptare i dati in altri prodotti Google Cloud, è necessaria una configurazione aggiuntiva. Ad esempio:

Limitazioni

Non puoi utilizzare CMEK con AI Platform Training nelle seguenti situazioni:

  • Non puoi utilizzare CMEK con job di addestramento che utilizzano TPU.
  • Se hai iniziato a utilizzare l'API AI Platform Training and Prediction nel 2017 o in precedenza e invii un job di addestramento con CMEK, potresti riscontrare un errore nella descrizione di un meccanismo di autenticazione legacy incompatibile. In questo caso, crea un nuovo progetto Google Cloud o seleziona un progetto diverso per eseguire il job di AI Platform Training.

Configurazione di CMEK per il job di addestramento

Le seguenti sezioni descrivono come creare un keyring e una chiave in Cloud Key Management Service, concedere le autorizzazioni di crittografia e decriptazione ad AI Platform Training per la chiave e creare un job di addestramento che utilizza CMEK.

Prima di iniziare

Questa guida presuppone che utilizzi due progetti Google Cloud separati per configurare CMEK per l'addestramento:

  • Un progetto per la gestione della chiave di crittografia (detto "progetto Cloud KMS").
  • Un progetto per accedere ad AI Platform Training, gestire i dati di addestramento o l'output in Cloud Storage e interagire con qualsiasi altro prodotto Google Cloud di cui hai bisogno per il tuo caso d'uso (definito "progetto AI Platform").

Questa configurazione consigliata supporta una separazione dei compiti.

In alternativa, puoi utilizzare un singolo progetto Google Cloud per l'intera guida. Per farlo, utilizza lo stesso progetto per tutte le seguenti attività che fanno riferimento al progetto Cloud KMS e alle attività che fanno riferimento al progetto AI Platform.

Configurazione del progetto Cloud KMS

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Attiva l'API Cloud KMS.

    Abilita l'API

  5. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  7. Attiva l'API Cloud KMS.

    Abilita l'API

Configurazione del progetto AI Platform

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Attiva l'API AI Platform Training & Prediction.

    Abilita l'API

  5. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  7. Attiva l'API AI Platform Training & Prediction.

    Abilita l'API

Configurazione di Google Cloud CLI

gcloud CLI è obbligatoria per alcuni passaggi di questa guida e facoltativa per altri.

Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

gcloud init

Creazione di un keyring e di una chiave

Segui la guida di Cloud KMS per la creazione di chiavi simmetriche per creare un keyring e una chiave. Quando crei il keyring, specifica una regione che supporti AI Platform Training come località del keyring. AI Platform Training supporta CMEK solo quando il job di addestramento e la chiave utilizzano la stessa regione. Non è necessario specificare una località con due o più regioni o globale per il keyring.

Assicurati di creare il keyring e la chiave nel progetto Cloud KMS.

Concedere le autorizzazioni per AI Platform Training

Per utilizzare CMEK per il job di addestramento, devi concedere l'autorizzazione ad AI Platform Training per criptare e decriptare i dati utilizzando la tua chiave. AI Platform Training utilizza un account di servizio gestito da Google per eseguire i job di addestramento. Questo account di servizio è identificato da un indirizzo email con il seguente formato:

service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

Per trovare l'account di servizio appropriato per il tuo progetto AI Platform, vai alla pagina IAM nella console Google Cloud e trova il membro che corrisponde al formato di questo indirizzo email, con il numero di progetto del tuo progetto AI Platform che sostituisce la variabile AI_PLATFORM_PROJECT_NUMBER. L'account di servizio ha anche il nome Google Cloud ML Engine Service Agent.

Vai alla pagina IAM

Prendi nota dell'indirizzo email di questo account di servizio e utilizzalo nei passaggi seguenti per concedergli l'autorizzazione a criptare e decriptare i dati usando la tua chiave. Puoi concedere l'autorizzazione utilizzando la console Google Cloud o Google Cloud CLI:

Console Google Cloud

  1. Nella console Google Cloud, vai alla pagina Chiavi crittografiche e seleziona il tuo progetto Cloud KMS.

    Vai alla pagina Chiavi di crittografia

  2. Fai clic sul nome del keyring creato in una sezione precedente di questa guida per andare alla pagina Dettagli del keyring.

  3. Seleziona la casella di controllo per la chiave che hai creato in una sezione precedente di questa guida. Se non è già aperto un riquadro informazioni con il nome della chiave, fai clic su Mostra riquadro informazioni.

  4. Nel riquadro informazioni, fai clic su Aggiungi membro per aprire la finestra di dialogo Aggiungi membri a "KEY_NAME". In questa finestra di dialogo, procedi nel seguente modo:

    1. Nella casella Nuovi membri, inserisci l'indirizzo email dell'account di servizio di cui hai preso nota nella sezione precedente: service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com
    2. Nell'elenco a discesa Seleziona un ruolo, fai clic su Cloud KMS e seleziona il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS.

    3. Fai clic su Salva.

gcloud

Esegui questo comando:

gcloud kms keys add-iam-policy-binding KEY_NAME \
  --keyring=KEY_RING_NAME \
  --location=REGION \
  --project=KMS_PROJECT_ID \
  --member=serviceAccount:service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com \
  --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

In questo comando, sostituisci i seguenti segnaposto:

  • KEY_NAME: il nome della chiave creata in una sezione precedente di questa guida.
  • KEY_RING_NAME: il keyring creato in una sezione precedente di questa guida.
  • REGION: la regione in cui hai creato il keyring.
  • KMS_PROJECT_ID: l'ID del progetto Cloud KMS.
  • AI_PLATFORM_PROJECT_NUMBER: il numero del tuo progetto AI Platform, che hai annotato nella sezione precedente come parte dell'indirizzo email di un account di servizio.

Creazione di un job di addestramento con CMEK

Ora che hai concesso ad AI Platform Training l'autorizzazione per criptare e decriptare i dati utilizzando la tua chiave, puoi creare un job di addestramento che cripta i dati temporanei utilizzando questa chiave. Quando crei un job di addestramento, specifica il campo encryptionConfig nel campo trainingInput del job.

L'esempio seguente mostra come eseguire questa operazione utilizzando gcloud CLI. Al momento non puoi creare un job di addestramento con CMEK nella console Google Cloud.

L'esempio presuppone che tu abbia un'applicazione di addestramento sul file system locale in una directory denominata trainer con un modulo denominato task.

  1. Crea un file di configurazione config.yaml contenente quanto segue:

    trainingInput:
      encryptionConfig:
        kmsKeyName: projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

    Nel file di configurazione, sostituisci i seguenti segnaposto:

    • KMS_PROJECT_ID: l'ID del progetto Cloud KMS.
    • KEY_RING_NAME: il nome del tuo keyring.
    • KEY_NAME: il nome della chiave.
  2. Per creare il job di addestramento, esegui questo comando:

    gcloud ai-platform jobs submit training JOB_ID \
      --config=config.yaml \
      --job-dir=JOB_DIR \
      --module-name=trainer.task \
      --package-path=trainer \
      --python-version=3.7 \
      --region=REGION \
      --runtime-version=2.11 \
      --scale-tier=basic
    

    In questo comando, sostituisci i seguenti segnaposto:

    • JOB_ID: un nome che scegli per il lavoro.
    • JOB_DIR: un percorso di una directory Cloud Storage in cui caricare l'applicazione di addestramento. Il job di addestramento può usare questa directory anche durante l'addestramento, ad esempio per salvare l'output. Per praticità, scegli una directory in un bucket Cloud Storage nel tuo progetto AI Platform.

    • REGION: la regione in cui hai creato il keyring e dove prevedi di creare il job di addestramento.

    In caso di esito positivo, il comando produce il seguente output:

    Job [JOB_ID] submitted successfully.
    Your job is still active. You may view the status of your job with the command
    
      $ gcloud ai-platform jobs describe JOB_ID
    
    or continue streaming the logs with the command
    
      $ gcloud ai-platform jobs stream-logs JOB_ID
    jobId: JOB_ID
    state: QUEUED
    

    Ora puoi monitorare il job di addestramento.

Oltre ai campi region e encryptionConfig, puoi personalizzare la configurazione del job di addestramento in base alle tue esigenze. Puoi anche utilizzare un container personalizzato per l'addestramento.

Passaggi successivi