Crittografa i parametri del modello utilizzando Cloud KMS

Questa pagina spiega come criptare i dati sensibili nei parametri del modello fornito da Google utilizzando le chiavi di crittografia con Cloud KMS.

Panoramica

Alcuni modelli forniti da Google ti consentono di criptare i dati sensibili nei parametri del modello, ad esempio nomi utente, password, stringhe di connessione JDBC e chiavi API. Se supportati, questi modelli includono un parametro per specificare la chiave di crittografia Cloud KMS, ad esempio:

  • KMSEncryptionKey
  • tokenKMSEncryptionKey
  • apiKeyKMSEncryptionKey

Per utilizzare le chiavi di crittografia Cloud KMS con questi modelli, svolgi i seguenti passaggi:

  1. Concedi all'account di servizio worker di Dataflow il ruolo Cloud KMS CryptoKey Decrypter.
  2. Crea una chiave di crittografia.
  3. Utilizza la chiave per criptare i dati.
  4. Codifica i dati criptati in Base64.
  5. Quando esegui il modello, specifica la chiave di crittografia e utilizza i valori dei parametri criptati.

Se specifichi una chiave di crittografia, devi criptare tutti i parametri che supportano la crittografia. Per sapere quali parametri possono essere criptati, consulta la documentazione del modello specifico.

Esempio

L'esempio seguente utilizza il modello da MySQL a BigQuery.

  1. Crea un keyring.

    gcloud kms keyrings create "KEY_RING_NAME" \
     --location "global"
    
  2. Crea una chiave di crittografia.

    gcloud kms keys create "KEY_NAME" \
     --location "global" \
     --keyring "KEY_RING_NAME" \
     --purpose "encryption"
    
  3. Crittografa e codifica in base64 il nome utente, la password e la stringa di connessione JDBC.

    export USER_NAME=`echo -n "USER_NAME" \
     | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \
     | base64 -w 0`
    export PASSWORD=`echo -n "PASSWORD" \
     | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \
     | base64 -w 0`
    export CONNECTION_STRING=`echo -n "CONNECTION_STRING" \
     | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \
     | base64 -w 0`
    
  4. Esegui il modello.

    gcloud dataflow flex-template run mysql-job \
     --project=PROJECT_ID \
     --region=us-central1 \
     --template-file-gcs-location=gs://dataflow-templates-us-central1/latest/flex/MySQL_to_BigQuery \
     --parameters \
    connectionURL="$CONNECTION_STRING",\
    query="SOURCE_SQL_QUERY",\
    outputTable=PROJECT_ID:DATASET.TABLE_NAME,\
    bigQueryLoadingTemporaryDirectory=CLOUD_STORAGE_PATH,\
    username="$USER_NAME",\
    password="$PASSWORD",\
    KMSEncryptionKey=projects/PROJECT_ID/locations/global/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

Risoluzione dei problemi

Questa sezione contiene informazioni sulla risoluzione dei problemi relativi alla crittografia dei parametri del modello.

Autorizzazione negata

Quando esegui il job, viene visualizzato un errore PERMISSION_DENIED nei log del job, simile al seguente:

PERMISSION_DENIED: Permission cloudkms.cryptoKeyVersions.useToDecrypt denied on
resource RESOURCE_PATH (or it may not exist)

Per decriptare i dati, l'account di servizio del worker di Dataflow deve disporre dell'autorizzazione cloudkms.cryptoKeyVersions.useToDecrypt per la chiave di crittografia. Assicurati che all'account di servizio del worker sia assegnato il ruolo Cloud KMS CryptoKey Decrypter. Per ulteriori informazioni, consulta Autorizzazioni e sicurezza di Dataflow.

Passaggi successivi