Questo argomento descrive come criptare i dati localmente e caricarli su 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
La crittografia lato client è qualsiasi crittografia eseguita prima di inviare i dati al cloud. Quando utilizzi la crittografia lato client, sei responsabile della creazione e della gestione delle tue chiavi di crittografia e della crittografia dei tuoi dati prima che vengano inviati al cloud.
In questo argomento, implementi la crittografia della busta lato client con Tink utilizzando una chiave di crittografia in Cloud KMS.
Prima di iniziare
- Crea una chiave di crittografia simmetrica Cloud KMS per la crittografia. Prendi nota 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, chiedi all'amministratore di concedere al tuo account di servizio il ruolo IAM Autore crittografia/decriptazione CryptoKey Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter
) sulla chiave.
Per ulteriori informazioni sulla concessione dei ruoli, consulta
Gestire l'accesso.
Busta criptata con Tink
Nella crittografia busta, la chiave Cloud KMS si comporta come una chiave di crittografia delle chiavi (KEK). In altre parole, 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) in locale.
- Utilizza la DEK a livello locale per criptare il messaggio.
- Utilizza Cloud KMS per criptare (avvolgere) la DEK con la KEK.
- Archivia i dati criptati e la DEK aggregata.
Non è necessario implementare questo processo di crittografia della busta da zero quando si utilizza Tink.
Per utilizzare Tink per la crittografia della busta, devi fornire a Tink un URI della chiave e le credenziali. L'URI della chiave rimanda alla tua KEK in Cloud KMS, mentre le credenziali permettono a Tink di utilizzarla. Tink genera la DEK, cripta i dati, esegue il wrapping della DEK e restituisce un singolo testo di crittografia con i dati criptati e la DEK aggregata.
Tink supporta la crittografia delle buste in Python, Java, C++ e Go utilizzando la privata Autenticazione autenticata con dati associati (AEAD).
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 della KEK ha il 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 dati
Tink utilizza i primitivi, ovvero componenti di base crittografici che gestiscono i dettagli dei relativi algoritmi sottostanti, in modo che tu possa eseguire le attività in tutta sicurezza. Ogni Primitive offre un'API che gestisce un'attività specifica. Qui usiamo AEAD, quindi utilizziamo la primitiva AEAD di Tink.
Python
Python
Per scoprire come installare e utilizzare la libreria client per Cloud KMS, consulta Librerie client di Cloud KMS.
Java
Java
Per scoprire come installare e utilizzare la libreria client per Cloud KMS, consulta Librerie client di Cloud KMS.
Per ulteriori informazioni sulle primitive e le interfacce supportate da Tink, consulta la pagina Inizia per Tink.
Quali sono i passaggi successivi?
- Scopri di più su Tink.
- Scopri come utilizzare la crittografia lato client con Cloud SQL.