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 rohen symmetrischen Verschlüsselung 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 zum Verschlüsseln und Entschlüsseln des Secrets zu verwalten. 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 Identity and Access Management 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. Verwenden Sie die Google Cloud CLI, um einen Schlüsselring zu erstellen.

    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.
    • KEY_RING: der Name, den Sie für den Speicherschlüsselbund verwendet haben, z. B. storage.

    Hinweis: Wenn Sie Schlüssel für die rohe symmetrische Verschlüsselung verwenden möchten, legen Sie das Feld „Zweck“ auf raw-encryption fest.

Weitere Informationen erhalten Sie unter Schlüsselbunde und Schlüssel erstellen.

Datei mit dem Secret verschlüsseln

Führen Sie diesen Vorgang als Hauptnutzerkonto aus und arbeiten Sie dabei in beiden Projekten.

  1. Speichern Sie das Secret auf Ihrem lokalen Computer.

    echo "SECRET_TEXT" > PATH_TO_SECRET
    

    Ersetzen Sie Folgendes:

    • SECRET_TEXT: das Secret, das Sie schützen möchten, in Klartext, z. B. this is a secret.
    • PATH_TO_SECRET: Der Pfad, unter dem Sie das Geheimnis erstellen möchten, z. B. secret.txt.
  2. Verschlüsseln Sie das Secret mit Cloud KMS und dem Verschlüsselungsschlüssel.

    gcloud kms encrypt \
      --location LOCATION \
      --keyring KEY_RING \
      --key KEY_NAME \
      --plaintext-file PATH_TO_SECRET \
      --ciphertext-file PATH_TO_ENCRYPTED_SECRET
    

    Ersetzen Sie Folgendes:

    • LOCATION: der Speicherort, an dem Sie den Schlüsselbund erstellt haben.
    • KEY_RING: Der Name des Schlüsselbunds.
    • KEY_NAME: Name des Verschlüsselungsschlüssels.
    • PATH_TO_SECRET: der Pfad, unter dem Sie das Geheimnis erstellt haben.
    • PATH_TO_ENCRYPTED_SECRET: Der Pfad, unter dem Sie das verschlüsselte Secret speichern möchten, z. B. secret.txt.encrypted.

    Weitere Informationen zum Verschlüsseln von Daten finden Sie im Abschnitt Daten verschlüsseln der Cloud KMS-Kurzanleitung.

    Verwenden Sie stattdessen raw-encrypt für die rohe symmetrische Verschlüsselung.

  3. Laden Sie die verschlüsselte Secret-Datei in den Storage-Bucket hoch. Sie können den folgenden Befehl der gcloud CLI verwenden:

    gcloud storage cp PATH_TO_ENCRYPTED_SECRET gs://STORAGE_BUCKET
    

    Weitere Informationen zum Hochladen von Objekten in einen Storage-Bucket erhalten Sie hier.

  4. Optional: Löschen Sie die Klartextdatei für das Secret (PATH_TO_SECRET) vom lokalen Computer. Dies ist eine bewährte Vorgehensweise für Dateien, die unverschlüsselte vertrauliche Daten enthalten.

Der Storage-Bucket STORAGE_BUCKET enthält jetzt die verschlüsselte geheime Datei, die mit dem Verschlüsselungsschlüssel KEY_NAME verschlüsselt wird.

Datei mit dem Secret entschlüsseln

Führen Sie diese Schritte als Hauptnutzerkonto aus und arbeiten Sie in beiden Projekten.

  1. Laden Sie die verschlüsselte Secret-Datei aus dem Storage-Bucket herunter. Sie können den folgenden Befehl der gcloud CLI verwenden:

    gcloud storage cp gs://STORAGE_BUCKET/PATH_TO_ENCRYPTED_SECRET .
    

    Weitere Informationen zum Herunterladen von Objekten aus einem Storage-Bucket finden Sie hier.

  2. Entschlüsseln Sie die Datei mit demselben Schlüssel, mit dem Sie sie verschlüsselt haben.

    gcloud kms decrypt --location LOCATION \
      --keyring KEY_RING \
      --key KEY_NAME \
      --ciphertext-file PATH_TO_ENCRYPTED_SECRET \
      --plaintext-file PATH_TO_DECRYPTED_SECRET
    

    Ersetzen Sie Folgendes:

    • LOCATION: der Speicherort, an dem Sie den Schlüsselbund erstellt haben.
    • KEY_RING: Der Name des Schlüsselbunds.
    • KEY_NAME: Name des Verschlüsselungsschlüssels.
    • PATH_TO_ENCRYPTED_SECRET: der Pfad zum heruntergeladenen verschlüsselten Secret, z. B. secret.txt.encrypted.
    • PATH_TO_DECRYPTED_SECRET: der Pfad, unter dem Sie das entschlüsselte Secret speichern möchten, z. B. secret_decrypted.txt.

    Weitere Informationen zum Entschlüsseln von Daten finden Sie im Abschnitt Daten verschlüsseln der Cloud KMS-Kurzanleitung.

    Verwenden Sie stattdessen raw-decrypt für die rohe symmetrische Verschlüsselung.

    Sie können den entschlüsselten Klartext des Secrets jetzt mit cat oder einem Texteditor lesen. Der Inhalt ist mit dem ursprünglichen Inhalt von PATH_TO_SECRET identisch.

  3. Optional: Löschen Sie die Dateien PATH_TO_ENCRYPTED_SECRET und PATH_TO_DECRYPTED_SECRET vom lokalen Computer.

Bereinigen

Löschen Sie zum Bereinigen alle Dateien, die Sie auf dem lokalen Computer erstellt haben, und dann die Projekte KEY_PROJECT_ID und STORAGE_PROJECT_ID.

Nächste Schritte