Questo argomento descrive come criptare i dati localmente e caricarli su Cloud Storage con Tink e Cloud Key Management Service (Cloud KMS). Tink è un libreria di crittografia open source scritta da crittografi e sistemi di sicurezza ingegneri di Google.
Panoramica
La crittografia lato client è qualsiasi crittografia eseguita prima dell'invio dei dati al cloud. Quando utilizzi la crittografia lato client, sei responsabile della creazione e la gestione delle chiavi di crittografia, nonché la crittografia dei dati prima di inviarli a nel cloud.
In questo argomento, implementerai la crittografia envelope lato client con Tink utilizzando un chiave di crittografia in Cloud KMS.
Puoi trovare una versione del progetto basata su Terraform di questo tutorial nel Repository GitHub di kms-solutions.
Prima di iniziare
- Crea una chiave di crittografia simmetrica di Cloud KMS per la crittografia. Prendi dell'URI della chiave. Ti servirà in un secondo momento.
- Installa Tink per utilizzarlo con Cloud KMS.
- Crea un bucket in Cloud Storage per caricare i dati criptati.
Ruoli obbligatori
Per assicurarti che il tuo account di servizio disponga delle autorizzazioni necessarie per utilizzare le chiavi Cloud KMS con Tink, invita l'amministratore ad assegnare al tuo account di servizio il ruolo IAM Autore crittografia/decrittografia CryptoKey Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter
) per la chiave.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
L'amministratore potrebbe anche essere in grado di assegnare all'account di servizio le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.
Crittografia delle buste con Tink
Nella crittografia della busta, la chiave Cloud KMS funge da crittografia della chiave chiave (KEK). Vale a dire che viene utilizzato per criptare le chiavi di crittografia dei dati (DEK, Data Encryption Key), che vengono utilizzati per criptare i dati effettivi.
Dopo aver creato una KEK in Cloud KMS, per criptare ciascun messaggio devi:
- Genera una chiave di crittografia dei dati (DEK) localmente.
- Utilizza la DEK in locale per criptare il messaggio.
- Utilizza Cloud KMS per criptare (wrapping) la DEK con la KEK.
- Archivia i dati criptati e la DEK con wrapping.
Non è necessario implementare questa procedura di crittografia envelope da zero quando usi Tink.
Per utilizzare Tink per la crittografia dell'involucro, fornisci a Tink un URI chiave e le credenziali. L'URI della chiave punta alla KEK in Cloud KMS e le credenziali consentono a Tink di utilizzarla. Tink genera la DEK, cripta i dati, racchiude la DEK, quindi restituisce un singolo testo crittografato con i dati criptati e DEK con wrapping.
Tink supporta la crittografia envelope in Python, Java, C++ e Go utilizzando Crittografia autenticata con i dati associati (AEAD) primitive.
Collegare Tink e Cloud KMS
Per criptare le DEK generate da Tink con la tua KEK in Cloud KMS, devi recuperare l'URI della KEK. In Cloud KMS, l'URI KEK contiene formato:
gcp-kms://projects/<PROJECT>/locations/<LOCATION>/keyRings/
<KEY RING>/cryptoKeys/<KEY NAME>/cryptoKeyVersions/<VERSION>
Consulta Ottenere un ID risorsa di Cloud KMS per i dettagli su come ottenere il percorso della chiave.
Inizializza Tink e cripta i dati
Tink utilizza primitive, ovvero elementi costitutivi criptici che gestiscono i dettagli degli algoritmi sottostanti, per consentirti di eseguire le attività in sicurezza. Ogni primitivo offre un'API che gestisce un'attività specifica. Qui utilizziamo AEAD, quindi utilizziamo la primitiva Tink AEAD.
Python
Python
Per scoprire come installare e utilizzare la libreria client per Cloud KMS, vedi Librerie client di Cloud KMS.
Per eseguire l'autenticazione su Cloud KMS, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per scoprire come installare e utilizzare la libreria client per Cloud KMS, vedi Librerie client di Cloud KMS.
Per eseguire l'autenticazione su Cloud KMS, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Per ulteriori informazioni sulle primitive e sulle interfacce supportate da Tink, vedi la pagina Inizia relativa a Tink.
Passaggi successivi
- Scopri di più su Tink.
- Scopri come utilizzare la crittografia lato client con Cloud SQL.