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 mit einem COPY Befehl laden, gibt es keinen Unterschied in der Art und Weise, wie Sie von serverseitigen verschlüsselten oder unverschlüsselten Objekten auf Amazon S3 laden. 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 mit clientseitiger Verschlüsselung in einen Amazon S3 S3-Bucket hochladen und die Daten dann mithilfe des COPY Befehls mit der ENCRYPTED Option und einem privaten Verschlüsselungsschlüssel laden, um mehr Sicherheit zu bieten.
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 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 mehr 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
AmazonS3EncryptionClient
Klasse AWS SDK for Java verwendet die oben beschriebene Envelope-Verschlüsselung, die auf symmetrischer Schlüsselverschlüsselung basiert. Verwenden Sie diese Klasse, um einen Amazon-S3-Client für das Hochladen von clientseitig verschlüsselten Daten zu erstellen. -
Ein symmetrischer AES 256-Bit-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 bei der ersten Verwendung der Verschlüsselung eine Fehlermeldung API zur Chiffrierung erhalten, enthält Ihre Version von JDK möglicherweise eine Zuständigkeitsrichtliniendatei der Java Cryptography Extension (JCE), die die maximale Schlüssellänge für Verschlüsselungs- und Entschlüsselungstransformationen auf 128 Bit begrenzt. Informationen zur Behebung dieses Problems finden Sie unter Spezifying Client-side Encryption Using the AWS SDK for Java im Amazon Simple Storage Service User Guide.
Informationen zum Laden von clientseitig verschlüsselten Dateien in Ihre Amazon Redshift Redshift-Tabellen mithilfe des COPY Befehls finden Sie unter. Laden verschlüsselter Datendateien aus Amazon S3
Beispiel: Hochladen von clientseitig verschlüsselten Daten
Ein Beispiel für die Verwendung von 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. Das Beispiel zeigt insbesondere die Verwendung von Objektmetadaten zum Speichern des verschlüsselten Umschlagschlüssels und die Verwendung eines symmetrischen AES 256-Bit-Stammschlüssels.
Dieses Beispiel enthält Beispielcode, mit dem AWS SDK für Java ein AES symmetrischer 256-Bit-Stammschlüssel erstellt und in einer Datei gespeichert wird. 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.