Hochladen verschlüsselter Daten in Amazon S3 - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Hochladen verschlüsselter Daten in Amazon S3

Amazon S3 unterstützt sowohl die serverseitige als auch die clientseitige Verschlüsselung. In diesem Thema werden die Unterschiede zwischen serverseitiger und clientseitiger Verschlüsselung behandelt und die Schritte beschrieben, die Sie ausführen müssen, um für Amazon Redshift die clientseitige Verschlüsselung zu verwenden. Die serverseitige Verschlüsselung ist für Amazon Redshift transparent.

Server-side encryption

Die serverseitige Verschlüsselung betrifft die Datenverschlüsselung in Ruhe , das heißt, Amazon S3 verschlüsselt Ihre Daten, während es sie in seine Rechenzentren schreibt, und entschlüsselt sie für Sie, wenn Sie darauf zugreifen. Wenn Sie Tabellen mittels eines COPY-Befehls laden, gibt es in Bezug auf die Art und Weise des Ladens aus serverseitig verschlüsselten oder nicht verschlüsselten Objekten in Amazon S3 keinen Unterschied. Weitere Informationen zur Datenverschlüsselung mittels serverseitiger Verschlüsselung finden Sie unter Verwendung serverseitiger Verschlüsselung im Benutzerhandbuch von Amazon Simple Storage Service.

Clientseitige Verschlüsselung

Bei der clientseitigen Verschlüsselung verwaltet Ihre Clientanwendung die Verschlüsselung Ihrer Daten, die Verschlüsselungsschlüssel und die entsprechenden Tools. Sie können Daten unter Verwendung einer clientseitigen Verschlüsselung zu einem Amazon S3 Bucket hochladen und die Daten anschließend mittels des Befehls COPY mit der Option ENCRYPTED und eines privaten Verschlüsselungsschlüssels laden, um größere Sicherheit zu erzielen.

Sie verschlüsseln Ihre Daten mittels einer Envelope-Verschlüsselung. Mittels einer Envelope-Verschlüsselung verarbeitet ausschließlich Ihre Anwendung die gesamte Verschlüsselung. Ihre privaten Verschlüsselungsschlüssel und Ihre unverschlüsselten Daten werden niemals an Dritte gesendet. Daher ist es sehr wichtig AWS, dass Sie Ihre Verschlüsselungsschlüssel sicher verwalten. Wenn Sie Ihre Verschlüsselungsschlüssel verlieren, können Sie Ihre Daten nicht entschlüsseln und Sie können Ihre Verschlüsselungsschlüssel von nicht wiederherstellen. AWS Die Envelope-Verschlüsselung kombiniert die Leistung einer schnellen symmetrischen Verschlüsselung mit der größeren Sicherheit, die eine Schlüsselverwaltung mit asymmetrischen Schlüsseln bietet. Ein one-time-use symmetrischer Schlüssel (der symmetrische Envelope-Schlüssel) wird von Ihrem Amazon S3-Verschlüsselungsclient generiert, um Ihre Daten zu verschlüsseln. Anschließend wird dieser Schlüssel mit Ihrem Root-Schlüssel verschlüsselt und zusammen mit Ihren Daten in Amazon S3 gespeichert. Wenn Amazon Redshift während eines Ladevorgangs auf Ihre Daten zugreift, wird der verschlüsselte symmetrische Schlüssel abgerufen und mit Ihrem echten Schlüssel entschlüsselt. Anschließend werden die Daten entschlüsselt.

Um in Amazon Redshift mit clientseitig verschlüsselten Amazon-S3-Daten zu arbeiten, befolgen Sie die in Schutz von Daten mittels clientseitiger Verschlüsselung im Benutzerhandbuch von Amazon Simple Storage Service beschriebenen Schritte. Zusätzlich müssen Sie Folgendes verwenden:

  • Symmetrische Verschlüsselung Die Klasse AWS SDK for Java AmazonS3EncryptionClient verwendet die zuvor beschriebene Envelope-Verschlüsselung, die auf einer symmetrischen Schlüsselverschlüsselung basiert. Verwenden Sie diese Klasse, um einen Amazon-S3-Client für das Hochladen von clientseitig verschlüsselten Daten zu erstellen.

  • Symmetrischer 256-Bit-AES-Root-Schlüssel Ein Root-Schlüssel verschlüsselt den Envelope-Schlüssel. Sie übergeben den Root-Schlüssel an Ihre Instance der Klasse AmazonS3EncryptionClient. Speichern Sie diesen Schlüssel, da Sie diesen benötigen, um Daten zu Amazon Redshift zu kopieren.

  • Objektmetadaten zum Speichern des verschlüsselten Envelope-Schlüssels Standardmäßig speichert Amazon S3 den Envelope-Schlüssel in Form von Objektmetadaten für die AmazonS3EncryptionClient-Klasse. Der in Form von Objektmetadaten gespeicherte verschlüsselte Envelope-Schlüssel wird während des Entschlüsselungsprozesses verwendet.

Anmerkung

Wenn Sie während der ersten Verwendung der Verschlüsselungs-API eine Verschlüsselungsfehlermeldung erhalten, enthält Ihre Version des JDK möglicherweise eine Java Cryptography Extension (JCE)-Jurisdiktionsrichtlinie, die die maximale Schlüssellänge für Verschlüsselungs- und Entschlüsselungstransformationen auf 128 Bits begrenzt. Informationen zur Behebung dieses Problems finden Sie unter Spezifizierung der clientseitigen Verschlüsselung mithilfe des AWS SDK for Java im Amazon Simple Storage Service-Benutzerhandbuch.

Weitere Informationen zum Laden von clientseitig verschlüsselten Dateien in Ihre Amazon-Redshift-Tabellen unter Verwendung des Befehls COPY finden Sie unter Laden verschlüsselter Datendateien aus Amazon S3.

Beispiel: Hochladen von clientseitig verschlüsselten Daten

Ein Beispiel für die Verwendung des AWS SDK for Java zum Hochladen von clientseitig verschlüsselten Daten finden Sie unter Schützen von Daten mit clientseitiger Verschlüsselung im Amazon Simple Storage Service-Benutzerhandbuch.

In der zweiten Option werden die Entscheidungen gezeigt, die Sie während der clientseitigen Verschlüsselung treffen müssen, damit die Daten in Amazon Redshift geladen werden können. Insbesondere zeigt das Beispiel die Verwendung von Objektmetadaten für das Speichern des verschlüsselten Envelope-Schlüssels und die Verwendung eines symmetrischen 256-Bit-AES-Root-Schlüssels.

Dieses Beispiel enthält Beispielcode, der das AWS SDK for Java verwendet, um einen symmetrischen 256-Bit-AES-Stammschlüssel zu erstellen und ihn in einer Datei zu speichern. Anschließend wird mittels eines S3-Verschlüsselungsclients, der die Beispieldaten zunächst clientseitig verschlüsselt, ein Objekt zu Amazon S3 hochgeladen. Das Beispiel zeigt auch den Download des Objekts und die Überprüfung, ob die Daten identisch ist.