Vom Kunden bereitgestellte Verschlüsselungsschlüssel

Auf dieser Seite werden die vom Kunden bereitgestellten Verschlüsselungsschlüssel erläutert. Weitere Verschlüsselungsoptionen finden Sie unter Datenverschlüsselungsoptionen. Beispiele für die Verwendung dieser Funktion finden Sie unter Vom Kunden bereitgestellte Verschlüsselungsschlüssel verwenden.

Übersicht

Zusätzlich zu von Google verwalteten Verschlüsselungsschlüsseln können Sie Ihren eigenen AES-256-Schlüssel mit standardmäßiger Base64-Codierung bereitstellen. Dieser Schlüssel wird als vom Kunden bereitgestellter Verschlüsselungsschlüssel bezeichnet. Wenn Sie einen vom Kunden bereitgestellten Verschlüsselungsschlüssel verwenden, wird dieser Schlüssel weder permanent von Cloud Storage auf Google-Servern gespeichert noch anderweitig verwaltet. Stattdessen wird der von Ihnen für jeden Cloud Storage-Vorgang bereitgestellte Schlüssel nach Abschluss des Vorgangs dauerhaft auf den Google-Servern gelöscht. In Cloud Storage bleibt lediglich ein kryptografischer Hash-Wert des Schlüssels gespeichert. Dieser dient zur Validierung zukünftiger Anfragen. Mit dem Hash kann weder Ihr Schlüssel wiederhergestellt noch können Ihre Daten entschlüsselt werden.

Wann wird der Schlüssel verwendet?

Wenn Sie einen vom Kunden bereitgestellten Verschlüsselungsschlüssel auf ein Objekt anwenden, verwendet Cloud Storage den Schlüssel, um Folgendes zu verschlüsseln:

  • Die Daten des Objekts
  • Die CRC32C-Prüfsumme des Objekts
  • Den MD5-Hash des Objekts

Cloud Storage nutzt standardmäßige serverseitige Schlüssel zum Verschlüsseln der verbleibenden Metadaten für das Objekt, einschließlich des Objektnamens. Auf diese Weise können Sie allgemeine Metadaten lesen und aktualisieren sowie Objekte auflisten und löschen, ohne auf den vom Kunden bereitgestellten Verschlüsselungsschlüssel angewiesen zu sein. Sie benötigen jedoch ausreichende Berechtigungen für diese Aktionen.

Wenn ein Objekt z. B. mit einem vom Kunden bereitgestellten Verschlüsselungsschlüssel verschlüsselt wird, benötigen Sie den Schlüssel für Vorgänge wie das Herunterladen oder Verschieben des Objekts. Wenn Sie versuchen, die Metadaten des Objekts ohne Angabe des Schlüssels zu lesen, erhalten Sie beispielsweise den Objektnamen und den Content-Type, aber nicht die CRC32C-Prüfsumme oder den MD5-Hash des Objekts. Wenn Sie Ihren Schlüssel in der Anfrage für die Objektmetadaten angeben, werden auch die CRC32C-Prüfsumme und der MD5-Hash des Objekts in den Metadaten zurückgegeben.

HTTPS-Prüfung

Zum Schutz Ihrer Daten bei der Übertragung über das Internet verwenden Sie während Lese- und Schreibvorgängen am besten Transport Layer Security, auch bekannt als TLS oder HTTPS. TLS ist erforderlich, wenn Sie den Verschlüsselungsschlüssel selbst bereitstellen. Wenn Sie Ihren Verschlüsselungsschlüssel versehentlich über eine unverschlüsselte (HTTP-)Verbindung verwenden, kann der Schlüssel von einem Angreifer abgefangen werden. Die Cloud Storage API gibt daher eine Fehlermeldung mit einer Warnung zurück, dass Ihr Schlüssel möglicherweise manipuliert wurde. In diesem Fall sollten Sie Ihre Schlüssel sofort rotieren.

Beschränkungen

Vom Kunden bereitgestellte Verschlüsselungsschlüssel unterliegen den folgenden Beschränkungen:

  • Cloud Storage Transfer Service, Cloud Dataflow und Cloud Dataproc unterstützen derzeit keine Objekte, die mit vom Kunden bereitgestellten Verschlüsselungsschlüsseln verschlüsselt wurden.

  • Sie können Objekte, die mit einem vom Kunden bereitgestellten Verschlüsselungsschlüssel verschlüsselt wurden, nicht über die Google Cloud Platform Console herunterladen. Ebenso können Sie Objekte, die Sie über die Google Cloud Platform Console hochladen, nicht mit einem vom Kunden bereitgestellten Verschlüsselungsschlüssel verschlüsseln. Sie können diese Aktionen mit vom Kunden verwalteten Verschlüsselungsschlüsseln ausführen.

  • Vom Kunden bereitgestellte Verschlüsselungsschlüssel sind in folgenden Ländern verfügbar:

    Argentinien, Australien, Belgien, Bulgarien, Chile, Dänemark, Deutschland, Estland, Finnland, Frankreich, Griechenland, Großbritannien, Hongkong, Indonesien, Irland, Israel, Italien, Japan, Kanada, Kolumbien, Lettland, Litauen, Luxemburg, Malaysia, Malta, Mexiko, Neuseeland, Niederlande, Norwegen, Österreich, Peru, Polen, Portugal, Rumänien, Schweden, Schweiz, Singapur, Slowakei, Spanien, Südafrika, Südkorea, Taiwan, Thailand, Tschechische Republik, Türkei, Ungarn, USA, Vietnam, Zypern

    Sie können die Aufnahme Ihres Landes beantragen, wenn es nicht in dieser Liste enthalten ist.

  • Damit Sie vom Kunden bereitgestellte Verschlüsselungsschlüssel mit gsutil verwenden können, benötigen Sie gsutil 4.18 oder höher.

  • Sie können die vom Kunden bereitgestellten Verschlüsselungsschlüssel nur für einzelne Objekte festlegen. Sie können keinen standardmäßigen vom Kunden bereitgestellten Verschlüsselungsschlüssel für einen Bucket festlegen.

  • Wenn Sie an Objekten, die mit vom Kunden bereitgestellten Verschlüsselungsschlüsseln verschlüsselt wurden, einen compose-Vorgang ausführen, müssen die Komponentenobjekte mit demselben Schlüssel verschlüsselt werden. Außerdem müssen Sie den Schlüssel in der Zusammensetzungsanfrage angeben. Das resultierende zusammengesetzte Objekt wird mit demselben Schlüssel verschlüsselt.

Tools für die Verwendung von Verschlüsselungsschlüsseln

Sie können vom Kunden bereitgestellte Verschlüsselungsschlüssel auf verschiedene Weise mit Cloud Storage verwenden. Dies ist unter anderem möglich mit:

  • Partnerunternehmen
  • JSON und XML REST APIs
  • gsutil-Befehlszeilentool

Verschlüsselungsschlüssel mit Partnerunternehmen

Sie haben mehrere Möglichkeiten, um vom Kunden bereitgestellte Verschlüsselungsschlüssel mit Partnerunternehmen zu verwenden. Diese Partner erleichtern nicht nur das Generieren eines Verschlüsselungsschlüssels, sondern auch dessen Verknüpfung mit einem Objekt in Cloud Storage. Schlüssel für Cloud Storage können unter anderem von Partnern wie Ionic Security und KeyNexus bereitgestellt werden.

Weitere Informationen finden Sie auf der Seite mit den Cloud Storage-Partnern.

Verschlüsselungsschlüssel mit REST APIs

Wenn Sie einen vom Kunden bereitgestellten Verschlüsselungsschlüssel verwenden und direkt mit der JSON API oder der XML API arbeiten, müssen Sie sowohl den AES-256-Schlüssel als auch einen SHA256-Hash des Schlüssels angeben. Sie sollten sowohl den AES-256-Schlüssel als auch den SHA256-Hash des Schlüssels sicher speichern. Google speichert den SHA256-Hash Ihres Schlüssels in den Metadaten des Objekts, wo Sie ihn später abrufen können. Ihre Daten lassen sich mit diesem SHA256-Hash weder von Google noch von Dritten entschlüsseln. Er dient lediglich zur eindeutigen Identifizierung des zum Verschlüsseln eines bestimmten Objekts verwendeten AES-256-Schlüssels.

Anfrage-Header

Fügen Sie Ihrer JSON- oder XML-Anfrage die folgenden HTTP-Header hinzu:

Name des Headers Wert Beschreibung
x-goog-encryption-algorithm String Der zu verwendende Verschlüsselungsalgorithmus. Erfordert den Wert AES256.
x-goog-encryption-key String Ein gemäß RFC 4648 mit Base64 codierter String Ihres AES-256-Verschlüsselungsschlüssels.
x-goog-encryption-key-sha256 String Ein gemäß RFC 4648 mit Base64 codierter String des SHA256-Hashs Ihres Verschlüsselungsschlüssels.

Wenn Sie in der JSON API eine Umschreibung durchführen, wird das Zielobjekt mit den oben aufgeführten Headern verschlüsselt. Zur Verschlüsselung des Quellobjekts werden die folgenden Header verwendet:

Name des Headers Wert Beschreibung
x-goog-copy-source-encryption-algorithm String Der zu verwendende Verschlüsselungsalgorithmus. Erfordert den Wert AES256.
x-goog-copy-source-encryption-key String Ein gemäß RFC 4648 mit Base64 codierter String des AES-256-Verschlüsselungsschlüssels für das Quellobjekt.
x-goog-copy-source-encryption-key-sha256 String Ein gemäß RFC 4648 mit Base64 codierter String des SHA256-Hashs des Verschlüsselungsschlüssels für das Quellobjekt.

Antwort

JSON

Bei Verwendung der JSON API werden die Metadaten für einen vom Kunden bereitgestellten Verschlüsselungsschlüssel im Antworttext zurückgegeben. Dieser enthält die folgenden Properties:

Property-Name Wert Beschreibung
customerEncryption Objekt Informationen über die für die Anfrage verwendete Verschlüsselung.
customerEncryption.encryptionAlgorithm String Der verwendete Verschlüsselungsalgorithmus. Enthält immer den Wert AES256.
customerEncryption.keySha256 String Ein gemäß RFC 4648 mit Base64 codierter String des SHA256-Hashs Ihres Verschlüsselungsschlüssels. Sie können mit diesem SHA256-Hash den für die Objektentschlüsselung erforderlichen AES-256-Verschlüsselungsschlüssel eindeutig identifizieren. Es ist wichtig, den Schlüssel sicher zu speichern.

XML

Bei Verwendung der XML API enthält die Antwort die folgenden Header:

Name des Headers Wert Beschreibung
x-goog-encryption-algorithm String Der verwendete Verschlüsselungsalgorithmus. Enthält immer den Wert AES256.
x-goog-encryption-key-sha256 String Ein gemäß RFC 4648 mit Base64 codierter String des SHA256-Hashs Ihres Verschlüsselungsschlüssels. Sie können mit diesem SHA256-Hash den für die Objektentschlüsselung erforderlichen AES-256-Verschlüsselungsschlüssel eindeutig identifizieren. Es ist wichtig, den Schlüssel sicher zu speichern.

In folgenden Fällen wird ein HTTP 400-Fehler zurückgegeben:

  • Sie laden ein Objekt mithilfe eines vom Kunden bereitgestellten Verschlüsselungsschlüssels hoch und versuchen, ohne Angabe des Schlüssels einen weiteren Vorgang an dem Objekt auszuführen. Ausgenommen davon sind Anfragen und Aktualisierungen der meisten Metadaten sowie das Löschen des Objekts.
  • Sie laden ein Objekt mithilfe eines vom Kunden bereitgestellten Verschlüsselungsschlüssels hoch und versuchen, unter Angabe eines falschen Schlüssels einen weiteren Vorgang an dem Objekt auszuführen.
  • Sie laden ein Objekt ohne Angabe eines vom Kunden bereitgestellten Verschlüsselungsschlüssels hoch und versuchen, unter Angabe eines vom Kunden bereitgestellten Verschlüsselungsschlüssels einen weiteren Vorgang an dem Objekt auszuführen.
  • Sie geben einen ungültigen Verschlüsselungsalgorithmus, Schlüssel oder SHA256-Hash an.

Verschlüsselungsschlüssel mit gsutil

Damit Sie einen vom Kunden bereitgestellten Verschlüsselungsschlüssel mit gsutil verwenden können, fügen Sie im Abschnitt [GSUtil] Ihrer Boto-Konfigurationsdatei die folgende Option hinzu:

Option Wert Beschreibung
encryption_key String Ein gemäß RFC 4648 mit Base64 codierter String Ihres AES-256-Verschlüsselungsschlüssels.

Sie können optional einen oder mehrere Entschlüsselungsschlüssel angeben. Während gsutil die Option encryption_key als Verschlüsselungs- und Entschlüsselungsschlüssel verwendet, werden jegliche von Ihnen angegebenen decryption_key-Optionen nur zum Entschlüsseln von Objekten genutzt. Weitere Informationen finden Sie in der Dokumentation zu gsutil.

Wenn Ihre boto-Konfiguration Verschlüsselungs- oder Entschlüsselungsschlüssel enthält, werden diese für alle gsutil-Befehle verwendet. Beim Entschlüsseln berechnet gsutil den SHA256-Hash der bereitgestellten Verschlüsselungs- und Entschlüsselungsschlüssel. Der richtige Schlüssel für das jeweilige Objekt wird durch Abgleich des SHA256-Hashs in den Objektmetadaten ausgewählt.

Sie erhalten eine Fehlermeldung, wenn Sie ein Objekt mithilfe eines vom Kunden bereitgestellten Verschlüsselungsschlüssels hochladen und versuchen, ohne Angabe des Schlüssels einen weiteren Vorgang an dem Objekt auszuführen. Ausgenommen davon sind Anfragen und Aktualisierungen der Metadaten sowie das Löschen des Objekts.

Rotation von Verschlüsselungsschlüsseln

Wenn Sie ein Objekt mit einem vom Kunden bereitgestellten Verschlüsselungsschlüssel verschlüsseln, können Sie den Objektschlüssel rotieren, indem Sie das Objekt umschreiben. Das Umschreiben von Objekten wird nur in der JSON API, nicht in der XML API unterstützt. Beispiele für Schlüsselrotationen finden Sie unter Verschlüsselungsschlüssel rotieren.

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...