In diesem Thema wird beschrieben, wie Sie Daten lokal verschlüsseln und mit Tink und dem Cloud Key Management Service (Cloud KMS) in Cloud Storage hochladen. Tink ist ein Open-Source-Kryptografie-Bibliothek von Kryptografen und Sicherheitsexperten Engineering bei Google.
Übersicht
Die clientseitige Verschlüsselung ist eine Verschlüsselung, die vor dem Senden Ihrer Daten an die Cloud durchgeführt wird. Wenn Sie die clientseitige Verschlüsselung verwenden, sind Sie dafür verantwortlich, und Ihre Verschlüsselungsschlüssel verwalten und Ihre Daten verschlüsseln, bevor Sie sie an in der Cloud.
In diesem Thema implementieren Sie die clientseitige Umschlagverschlüsselung mit Tink mithilfe eines Verschlüsselungsschlüssel in Cloud KMS.
Eine Terraform-basierte Blueprint-Version dieser Anleitung finden Sie in der kms-solutions GitHub-Repository
Hinweise
- Erstellen Sie einen symmetrischen Cloud KMS-Verschlüsselungsschlüssel für die Verschlüsselung. Nehmen den URI des Schlüssels notiert. Sie benötigen ihn später.
- Installieren Sie Tink zur Verwendung mit Cloud KMS.
- Erstellen Sie einen Bucket in Cloud Storage, um Ihre verschlüsselten Daten hochzuladen.
Erforderliche Rollen
Damit Ihr Dienstkonto die erforderlichen Berechtigungen zum Verwenden von Cloud KMS-Schlüsseln mit Tink hat, bitten Sie Ihren Administrator, Ihrem Dienstkonto die IAM-Rolle Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler (roles/cloudkms.cryptoKeyEncrypterDecrypter
) für Ihren Schlüssel zu gewähren.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Ihr Administrator kann Ihnen möglicherweise auch Zugriff auf Ihr Dienstkonto geben die erforderlichen Berechtigungen durch benutzerdefinierte Rollen oder andere vordefinierte Rollen
Umschlagverschlüsselung mit Tink
Bei der Umschlagverschlüsselung fungiert der Cloud KMS-Schlüssel als Schlüsselverschlüsselungsschlüssel (KEK, Key Encryption Key). Das heißt, er wird zum Verschlüsseln von Datenverschlüsselungsschlüsseln (DEKs, Data Encryption Keys) verwendet, die wiederum zum Verschlüsseln tatsächlicher Daten verwendet werden.
Nach dem Erstellen eines KEK in Cloud KMS müssen Sie zum Verschlüsseln jeder Nachricht Folgendes tun:
- Generieren Sie lokal einen Datenverschlüsselungsschlüssel (Data Encryption Key, DEK).
- Verwenden Sie den DEK lokal zum Verschlüsseln der Nachricht.
- Nutzen Sie Cloud KMS, um den DEK mit dem KEK zu verschlüsseln (zu verpacken).
- Speichern Sie die verschlüsselten Daten und den zusammengefassten DEK.
Sie müssen diesen Umschlagverschlüsselungsprozess nicht von Grund auf implementieren, wenn mit Tink.
Um Tink für die Umschlagverschlüsselung zu verwenden, stellen Sie Tink einen Schlüssel-URI und Anmeldedaten. Der Schlüssel-URI verweist auf Ihren KEK in Cloud KMS und der kann Tink den KEK verwenden. Tink generiert den DEK, verschlüsselt die Daten, verpackt den DEK und gibt einen einzelnen Geheimtext mit den verschlüsselten Daten und dem verpackten DEK zurück.
Tink unterstützt die Umschlagverschlüsselung in Python, Java, C++ und Go mit der einfachen AEAD-Verschlüsselung (Authenticated Encryption with Associated Data).
Tink und Cloud KMS verbinden
So verschlüsseln Sie die von Tink generierten DEKs mit Ihrem KEK in Cloud KMS: müssen Sie den URI Ihres KEK abrufen. In Cloud KMS hat der KEK-URI folgendes Format:
gcp-kms://projects/<PROJECT>/locations/<LOCATION>/keyRings/
<KEY RING>/cryptoKeys/<KEY NAME>/cryptoKeyVersions/<VERSION>
Weitere Informationen zum Abrufen des Pfads zu Ihrem Schlüssel finden Sie unter Cloud KMS-Ressourcen-ID abrufen.
Tink initialisieren und Daten verschlüsseln
Tink nutzt Primitive – kryptografische Bausteine zur Verwaltung von Details ihrer zugrunde liegenden Algorithmen, damit Sie Aufgaben sicher ausführen können. Jedes primitive Element bietet eine API, die eine bestimmte Aufgabe verarbeitet. Hier verwenden wir AEAD, verwenden wir das Tink-AEAD-Primitive.
Python
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud KMS finden Sie unter Cloud KMS-Clientbibliotheken
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud KMS zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Java
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud KMS finden Sie unter Cloud KMS-Clientbibliotheken
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Cloud KMS zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Weitere Informationen zu den von Tink unterstützten Primitiven und Schnittstellen finden Sie auf der Startseite für Tink.
Nächste Schritte
- Weitere Informationen zu Tink.
- Clientseitige Verschlüsselung mit Cloud SQL verwenden.