Datenverschlüsselung verwalten

Cloud Storage verschlüsselt alle Ihre Daten kostenlos serverseitig vor dem Schreiben auf ein Laufwerk. Auf dieser Seite werden die verschiedenen Möglichkeiten erläutert, mit denen Sie Ihre Daten mithilfe von Cloud Storage verschlüsseln können.

Überblick

Bei der serverseitigen Verschlüsselung werden Ihre Daten nach deren Eingang in Cloud Storage verschlüsselt, bevor sie zum Speichern auf ein Laufwerk geschrieben werden.

Standardmäßig erfolgt die Verschlüsselung Ihrer Daten in Cloud Storage mit dessen serverseitigen Verschlüsselungsschlüsseln. Sie können für die serverseitige Verschlüsselung jedoch auch eigene Verschlüsselungsschlüssel bereitstellen. Diese setzen die Standardverschlüsselungsschlüssel außer Kraft. Vom Nutzer bereitgestellte Verschlüsselungsschlüssel werden als vom Kunden bereitgestellte Verschlüsselungsschlüssel bezeichnet.

Bei der clientseitigen Verschlüsselung werden die Daten vor dem Senden an Cloud Storage verschlüsselt und sind somit beim Eingang in Cloud Storage bereits verschlüsselt. Sie können Daten wahlweise auf der Clientseite verschlüsseln, bevor diese in Cloud Storage geschrieben werden.

Standardmäßige serverseitige Verschlüsselung

Die serverseitigen Verschlüsselungsschlüssel werden standardmäßig in Cloud Storage für Sie verwaltet. Wir verwenden dabei dieselben erprobten Schlüsselverwaltungssysteme wie für unsere eigenen verschlüsselten Daten, einschließlich strenger Schlüsselzugriffskontrollen und Prüfprozesse. Inaktive Nutzerdaten werden von Cloud Storage mit AES-256 verschlüsselt. Jeder der Verschlüsselungsschlüssel an sich ist mit einem regelmäßig rotierenden Satz von Master-Schlüsseln verschlüsselt. Diese Art der Verschlüsselung erfordert Ihrerseits keinerlei Einrichtung oder Konfiguration. Sie können dennoch wie gewohnt auf den Dienst zugreifen. Auch die Leistung bleibt erhalten. Für autorisierte Nutzer werden die Daten zum Lesen automatisch und transparent entschlüsselt.

Es empfiehlt sich, Ihre Daten bei Schreib- und Lesevorgängen während der Übertragung über das Internet mit TLS (Transport Layer Security) oder HTTPS zu schützen.

Vom Kunden bereitgestellte Verschlüsselungsschlüssel

Beispiele für die Verwendung eigener Schlüssel finden Sie unter Vom Kunden bereitgestellte Verschlüsselungsschlüssel verwenden.

Als Alternative zu einem von Google verwalteten serverseitigen Verschlüsselungsschlüssel 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.

Bei Anwendung eines vom Kunden bereitgestellten Verschlüsselungsschlüssels auf ein Objekt werden neben dem Objekt auch dessen CRC32C-Prüfsumme und MD5-Hash mit dem Verschlüsselungsschlüssel verschlüsselt. Alle diese Informationen können anschließend nur unter Angabe des Verschlüsselungsschlüssels gelesen werden. Die restlichen Metadaten des Objekts einschließlich des Objektnamens werden mit standardmäßigen serverseitigen Schlüsseln verschlüsselt. Sie können auf diese Weise Metadaten lesen und aktualisieren und Objekte auflisten und löschen, ohne den vom Kunden bereitgestellten Verschlüsselungsschlüssel angeben zu müssen. Sie benötigen jedoch ausreichende Berechtigungen für diese Aktionen.

Beispiel: Wenn ein Objekt mit einem vom Kunden bereitgestellten Verschlüsselungsschlüssel verschlüsselt wurde, benötigen Sie den Schlüssel beispielsweise zum 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.

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.

Es empfiehlt sich, Ihre Daten bei Schreib- und Lesevorgängen während der Übertragung über das Internet mit TLS (Transport Layer Security) oder HTTPS zu schützen. 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.

  • 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, 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, Vereinigtes Königreich, Vietnam, Zypern

    Sie können das Hinzufügen 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.

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 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-NameWertBeschreibung
customerEncryptionObjektInformationen über die für die Anfrage verwendete Verschlüsselung.
customerEncryption.encryptionAlgorithmStringDer verwendete Verschlüsselungsalgorithmus. Enthält immer den Wert AES256.
customerEncryption.keySha256StringEin 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 HeadersWertBeschreibung
x-goog-encryption-algorithmStringDer verwendete Verschlüsselungsalgorithmus. Enthält immer den Wert AES256.
x-goog-encryption-key-sha256StringEin 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 dem 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 aber nicht in der XML API unterstützt. Beispiele für Schlüsselrotationen finden Sie unter Verschlüsselungsschlüssel rotieren.

Clientseitige Verschlüsselung

Die serverseitige Verschlüsselung kann in Verbindung mit der clientseitigen Verschlüsselung verwendet werden. Mit der clientseitigen Verschlüsselung verwalten Sie Ihre eigenen Verschlüsselungsschlüssel und verschlüsseln die Daten, bevor diese in Cloud Storage geschrieben werden. Die Daten werden in diesem Fall zweimal verschlüsselt: einmal mit Ihrem clientseitigen Schlüssel und einmal mit einem serverseitigen Schlüssel. Wenn Sie ein Objekt lesen, müssen Sie es auf der Clientseite entschlüsseln.

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

Feedback geben zu...