Questo argomento descrive come criptare i dati in locale e caricarli in Cloud Storage con Tink e Cloud Key Management Service (Cloud KMS). Tink è una libreria di crittografia open source scritta da crittografi e ingegneri della sicurezza di Google.
Panoramica
Per crittografia lato client si intende qualsiasi crittografia eseguita prima di inviare i dati al cloud. Quando utilizzi la crittografia lato client, sei responsabile della creazione e della gestione delle chiavi di crittografia e della crittografia dei dati prima dell'invio al cloud.
In questo argomento implementerai la crittografia envelope lato client con Tink utilizzando una chiave di crittografia in Cloud KMS.
Prima di iniziare
- Crea una chiave di crittografia simmetrica di Cloud KMS per la crittografia. Prendi nota l'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, chiedi all'amministratore di concedere al tuo account di servizio il ruolo IAM Autore crittografia/decrittografia CryptoKey Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter
) per la tua chiave.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
L'amministratore potrebbe anche essere in grado di concedere al tuo account di servizio le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Crittografia busta con Tink
Nella crittografia envelope, la chiave Cloud KMS funge da chiave di crittografia della chiave (KEK). Vale a dire che vengono utilizzate per criptare le chiavi di crittografia dei dati (DEK) che a loro volta vengono utilizzate per criptare i dati effettivi.
Dopo aver creato una KEK in Cloud KMS, per criptare ogni messaggio devi:
- Genera una chiave di crittografia dei dati (DEK) localmente.
- Utilizza la DEK localmente per criptare il messaggio.
- Usa Cloud KMS per criptare (avvolgere) 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 utilizzi Tink.
Per utilizzare Tink per la crittografia envelope, devi fornire a Tink l'URI della chiave e le credenziali. L'URI della chiave punta alla KEK in Cloud KMS e le credenziali consentono a Tink di utilizzare la KEK. Tink genera la DEK, cripta i dati, esegue il wrapping della DEK e restituisce quindi un singolo testo crittografato con i dati criptati e la DEK con wrapping.
Tink supporta la crittografia envelope in Python, Java, C++ e Go utilizzando la primitiva AEAD (Authenticated Encryption with Associated Data).
Connetti Tink e Cloud KMS
Per criptare le DEK generate da Tink con la tua KEK in Cloud KMS, devi ottenere l'URI della tua KEK. In Cloud KMS, l'URI KEK ha il formato:
gcp-kms://projects/<PROJECT>/locations/<LOCATION>/keyRings/
<KEY RING>/cryptoKeys/<KEY NAME>/cryptoKeyVersions/<VERSION>
Per maggiori dettagli su come ottenere il percorso della chiave, consulta Ottenere un ID risorsa di Cloud KMS.
Inizializza Tink e cripta i dati
Tink utilizza le primitive, ovvero componenti di base crittografici che gestiscono i dettagli degli algoritmi sottostanti, per consentirti di eseguire le attività in sicurezza. Ogni primitiva 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, consulta Librerie client di Cloud KMS.
Per eseguire l'autenticazione in Cloud KMS, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per scoprire come installare e utilizzare la libreria client per Cloud KMS, consulta Librerie client di Cloud KMS.
Per eseguire l'autenticazione in Cloud KMS, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Per maggiori informazioni sulle primitive e sulle interfacce supportate da Tink, consulta la pagina Inizia per Tink.
Che cosa succede dopo?
- Scopri di più su Tink.
- Scopri come utilizzare la crittografia lato client con Cloud SQL.