Anwendungsdaten verschlüsseln

Auf dieser Seite wird gezeigt, wie Sie mit dem Cloud Key Management Service Anwendungsdaten auf einem Client direkt verschlüsseln können, bevor sie über ein Netzwerk übertragen werden.

In diesem Beispiel werden die verschlüsselten Daten an Google Cloud übertragen und in einem Cloud Storage-Bucket gespeichert. Cloud Storage unterstützt auch die automatische serverseitige Verschlüsselung mit vom Kunden verwalteten Verschlüsselungsschlüsseln, wodurch der gesamte Prozess automatisiert wird. Zum Schutz von Anwendungsdaten vor der Übertragung anGoogle Cloudempfehlen wir die Verwendung der Tink-Bibliothek.

Die Tink-Bibliothek ist eine mehrsprachige, plattformübergreifende Bibliothek, die APIs für gängige kryptografische Aufgaben bereitstellt. Damit können Daten verschlüsselt werden, bevor sie in Google Cloud -Datenspeicher gelangen. Außerdem werden Java, Python, C++, Go, Objective-C und andere Sprachen sowie Objektspeicher- und relationale Datenbankdienste unterstützt.

In dieser Anleitung verschlüsseln Sie eine Datei mit Cloud KMS, bevor Sie sie in einen Bucket hochladen. Als Nächstes laden Sie die gleichen Daten herunter und entschlüsseln sie, sodass Sie sie auf dem Client lesen können.

Wenn Sie dieser Anleitung folgen, bleiben Ihre Schlüssel und alle kryptografischen Vorgänge in Google Cloud und Sie müssen Cloud KMS für die Entschlüsselung verwenden. Mit der Raw Symmetric Encryption können Sie Daten lokal verschlüsseln oder entschlüsseln oder verschlüsselte Daten zwischen verschiedenen Bibliotheken und Dienstanbietern verschieben, ohne sie zuerst entschlüsseln zu müssen.

Hinweise

Innerhalb Ihrer Google Cloud -Organisation benötigen Sie Berechtigungen zum Erstellen neuer Projekte, zum Aktivieren der Abrechnung, zum Erstellen von Nutzern und zum Verwalten der Berechtigungen in diesen Projekten. Mit der Rolle roles/resourcemanager.organizationAdmin erhalten Sie diese Berechtigungen.

Einrichtung

Wir empfehlen die Verwendung von zwei Projekten und zwei Nutzern, um die Aufgabentrennung sicherzustellen. Wenn Sie die Schritte in dieser Anleitung befolgen, unterscheiden sich die Nutzer und Dienste, die Verschlüsselungsschlüssel verwalten, von den Nutzern und Diensten, die sie verwenden. Ein Projekt enthält und verwaltet die Schlüssel, während das andere Projekt die verschlüsselten Daten in einem Cloud Storage-Bucket speichert und bei Bedarf entschlüsselt.

Projekte erstellen

Sie erstellen Projekte in der Google Cloud Console. Eine detaillierte Anleitung finden Sie unter Kurzanleitung zur Verwendung der Cloud Console.

Erstellen Sie in Ihrer Organisation die folgenden Projekte:

  1. Erstellen Sie ein Google Cloud -Projekt, das den Cloud Storage-Bucket enthält, der zum Speichern der Secrets verwendet wird. Die Secrets werden im Bucket als Objekte gespeichert. Dieses Projekt heißt STORAGE_PROJECT_ID.

  2. Erstellen Sie ein zweites Google Cloud Projekt, um die Cloud KMS-Schlüssel zu verwalten, die zum Verschlüsseln und Entschlüsseln des Secrets verwendet werden. Dieses Projekt heißt KEY_PROJECT_ID.

  3. Aktivieren Sie für jedes Projekt die Cloud KMS API und die Abrechnung anhand der Schritte im Abschnitt Vorbereitung der Cloud KMS-Kurzanleitung.

Nutzer erstellen

Sie erstellen Nutzer und weisen ihnen Rollen in der Google Cloud Console zu. Eine detaillierte Anleitung finden Sie unter Kurzanleitung zur Verwendung der Cloud Console.

Hier werden zwei Nutzer erstellt. Der Schlüsseladministrator verwaltet die Verschlüsselungsschlüssel und der Schlüsselnutzer kann Daten mit den Schlüsseln verschlüsseln und entschlüsseln.

Führen Sie diesen Vorgang im Projekt KEY_PROJECT_ID aus.

  1. Erstellen Sie das Hauptadministratorkonto.

  2. Weisen Sie dem Hauptadministrator die Rolle roles/cloudkms.admin für die Identitäts- und Zugriffsverwaltung zu. Mit dieser Rolle kann der Schlüsseladministrator Schlüssel erstellen und verwalten.

  3. Erstellen Sie das Hauptnutzerkonto.

  4. Weisen Sie dem Hauptnutzer die IAM-Rolle roles/cloudkms.cryptoKeyEncrypterDecrypter zu. Mit dieser Rolle kann der Nutzer Daten verschlüsseln und entschlüsseln.

Storage-Bucket erstellen

Führen Sie diesen Vorgang im Projekt STORAGE_PROJECT_ID aus.

  1. Erstellen Sie einen Storage-Bucket namens STORAGE_BUCKET.
  2. Weisen Sie dem Nutzerkonto mit dem Schlüssel die Rolle roles/storage.objectAdmin für den Storage-Bucket STORAGE_BUCKET zu.

Verschlüsselungsschlüssel erstellen

Führen Sie diesen Vorgang als Hauptadministrator im Projekt KEY_PROJECT_ID aus.

  1. Schlüsselbund erstellen Der Name eines Schlüsselbunds darf innerhalb des Projekts nur einmal verwendet werden. Ein Schlüsselbund kann nicht umbenannt oder gelöscht werden. Erstellen Sie mit der Google Cloud CLI einen Schlüsselbund.

    gcloud kms keyrings create KEY_RING \
      --location LOCATION
    

    Ersetzen Sie Folgendes:

    • KEY_RING: der Name, der für den Speicherschlüsselbund verwendet werden soll, z. B. storage.
    • LOCATION ist der Ort, an dem Sie den Schlüsselbund erstellen möchten. Dieser sollte sich in der Nähe des Speicherorts befinden, an dem Sie den Cloud Storage-Bucket erstellen möchten.
  2. Erstellen Sie einen Verschlüsselungsschlüssel im Schlüsselbund. Der Name des Schlüssels darf innerhalb des Schlüsselbunds nur einmal verwendet werden. Schlüssel können nicht umbenannt oder gelöscht werden, es können jedoch ihre Schlüsselversionen gelöscht werden. Erstellen Sie den Schlüssel mit der Google Cloud CLI. Es wird automatisch eine anfängliche Schlüsselversion erstellt, die dann zur Hauptversion wird.

    gcloud kms keys create KEY_NAME \
      --location LOCATION \
      --keyring KEY_RING \
      --purpose encryption
    

    Ersetzen Sie Folgendes:

    • LOCATION: der Speicherort, an dem Sie den Schlüsselbund erstellt haben.
    • KEY_NAME: Der Name, der für den Speicherschlüssel verwendet werden soll, z. B. storage.