Cet article explique comment chiffrer des données localement et les importer dans Cloud Storage avec Tink et Cloud Key Management Service (Cloud KMS). Tink est une bibliothèque de cryptographie Open Source écrite par des cryptographes et des ingénieurs en sécurité de Google.
Présentation
Le chiffrement côté client est un chiffrement effectué avant l'envoi de vos données au cloud. Lorsque vous utilisez le chiffrement côté client, vous êtes responsable de la création et de la gestion de vos clés de chiffrement, ainsi que du chiffrement de vos données avant de les envoyer dans le cloud.
Dans cette rubrique, vous allez mettre en œuvre le chiffrement encapsulé côté client avec Tink à l'aide d'une clé de chiffrement dans Cloud KMS.
Avant de commencer
- Créez une clé de chiffrement Cloud KMS symétrique pour le chiffrement. Notez l'URI de la clé. Vous en aurez besoin ultérieurement.
- Installez Tink pour l'utiliser avec Cloud KMS.
- Créez un bucket dans Cloud Storage pour importer vos données chiffrées.
Rôles requis
Pour vous assurer que votre compte de service dispose des autorisations nécessaires pour utiliser des clés Cloud KMS avec Tink, demandez à votre administrateur d'attribuer à votre compte de service le rôle IAM Chiffreur/Déchiffreur de CryptoKeys Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter
) sur votre clé.
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Votre administrateur peut également accorder les autorisations requises à votre compte de service via des rôles personnalisés ou d'autres rôles prédéfinis.
Chiffrement encapsulé avec Tink
Dans le chiffrement encapsulé, la clé Cloud KMS agit comme une clé de chiffrement de clé (KEK, Key Encryption Key). Autrement dit, il sert à chiffrer les clés de chiffrement de données (DEK), qui à leur tour sont utilisées pour chiffrer les données réelles.
Après avoir créé une clé KEK dans Cloud KMS, vous devez effectuer les opérations suivantes pour chiffrer chaque message:
- Générez une clé de chiffrement de données (DEK) en local.
- Utilisez cette DEK localement pour chiffrer le message.
- Appelez Cloud KMS pour chiffrer (encapsuler) la DEK avec la KEK.
- Stockez les données chiffrées et la DEK encapsulée.
Lorsque vous utilisez Tink, vous n'avez pas besoin d'implémenter entièrement ce processus de chiffrement encapsulé.
Pour utiliser Tink pour le chiffrement encapsulé, vous devez fournir à Tink un URI de clé et des identifiants. L'URI de la clé pointe vers votre KEK dans Cloud KMS, et les identifiants permettent à Tink d'utiliser la KEK. Tink génère la DEK, chiffre les données, encapsule la DEK, puis renvoie un seul texte chiffré avec les données chiffrées et la DEK encapsulée.
Tink accepte le chiffrement encapsulé en Python, Java, C++ et Go à l'aide du primitif de chiffrement authentifié avec données associées (AEAD, Authenticated Encryption with Associated Data).
Associer Tink et Cloud KMS
Pour chiffrer les DEK générées par Tink avec votre KEK dans Cloud KMS, vous devez obtenir l'URI de votre KEK. Dans Cloud KMS, l'URI de la clé KEK a le format suivant :
gcp-kms://projects/<PROJECT>/locations/<LOCATION>/keyRings/
<KEY RING>/cryptoKeys/<KEY NAME>/cryptoKeyVersions/<VERSION>
Pour savoir comment obtenir le chemin d'accès à votre clé, consultez la page Obtenir un ID de ressource Cloud KMS.
Initialiser Tink et chiffrer les données
Tink utilise des primitives (éléments de base cryptographiques qui gèrent les détails de leurs algorithmes sous-jacents) pour vous permettre d'effectuer des tâches de manière sécurisée. Chaque primitive propose une API qui gère une tâche spécifique. Ici, nous utilisons AEAD, donc nous utilisons la primitive Tink AEAD.
Python
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud KMS, consultez la page Bibliothèques clientes Cloud KMS.
Pour vous authentifier auprès de Cloud KMS, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud KMS, consultez la page Bibliothèques clientes Cloud KMS.
Pour vous authentifier auprès de Cloud KMS, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Pour en savoir plus sur les primitives et les interfaces compatibles avec Tink, consultez la page Premiers pas de Tink.
Étape suivante
- En savoir plus sur Tink.
- Découvrez comment utiliser le chiffrement côté client avec Cloud SQL.