View a markdown version of this page

Konvertiert CSE-KMS Tabellendaten in SSE-KMS - Amazon Athena

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.

Konvertiert CSE-KMS Tabellendaten in SSE-KMS

Wenn Ihre Workflows derzeit CSE-KMS die Verschlüsselung von Tabellendaten verwenden, fahren Sie SSE-KMS mit den folgenden Schritten fort.

Voraussetzung

Wenn Sie Daten immer noch mit einer CSE-KMS Arbeitsgruppe oder mit clientseitigen Einstellungen schreiben, folgen Sie den Schritten unter, Migrieren Sie von zu CSE-KMS SSE-KMS um sie zu aktualisieren. SSE-KMS Dadurch wird verhindert, dass während des Migrationsprozesses neue CSE-KMS verschlüsselte Daten aus anderen Workflows hinzugefügt werden, die möglicherweise in die Tabellen schreiben.

Datenmigrationen

  1. Überprüfen Sie, ob für die Tabelle die has_encrypted_data-Eigenschaft auf true gesetzt ist. Diese Eigenschaft gibt an, dass die Tabelle möglicherweise CSE-KMS verschlüsselte Daten enthält. Es ist jedoch wichtig zu beachten, dass diese Eigenschaft auch in Tabellen ohne tatsächlich CSE-KMS verschlüsselte Daten vorhanden sein kann.

    Console
    1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

    2. Wählen Sie Abfrage-Editor starten.

    3. Wählen Sie auf der linken Seite des Editors unter Datenbank die Datenbank aus, die Sie abfragen möchten.

    4. Führen Sie im Abfrageeditor die folgende Abfrage aus, um den für die has_encrypted_data table-Eigenschaft festgelegten Wert zu sehen.

      SHOW TBLPROPERTIES <table_name>('has_encrypted_data');
    CLI

    Starten Sie die Athena-Abfrage, die den Wert der has_encrypted_data-Eigenschaft in der Tabelle zeigt, wie im folgenden Beispiel gezeigt.

    aws athena start-query-execution \ --query-string "SHOW TBLPROPERTIES <table-name>('has_encrypted_data');" \ --work-group "<my-workgroup>"

    Rufen Sie Abfrageergebnisse ab, um den Wert der has_encrypted_data-Tabelleneigenschaft für die Tabelle zu überprüfen, wie im folgenden Beispiel gezeigt.

    aws athena get-query-results --query-execution-id <query-execution-id-from-previous-step>
  2. Für jedes CSE-KMS verschlüsselte Objekt in der Tabelle.

    1. Laden Sie das Objekt mit dem S3-Verschlüsselungsclient von S3 herunter und entschlüsseln Sie es. Hier ist ein Beispiel mit AWS Java SDK V2.

      Importe

      import software.amazon.awssdk.core.ResponseInputStream; import software.amazon.awssdk.services.s3.model.GetObjectRequest; import software.amazon.awssdk.services.s3.model.GetObjectResponse; import software.amazon.encryption.s3.S3EncryptionClient; import software.amazon.encryption.s3.materials.Keyring; import software.amazon.encryption.s3.materials.KmsDiscoveryKeyring;

      Code

      final Keyring kmsDiscoveryKeyRing = KmsDiscoveryKeyring.builder() .enableLegacyWrappingAlgorithms(true) .build(); final S3EncryptionClient s3EncryptionClient = S3EncryptionClient.builder() .enableLegacyUnauthenticatedModes(true) .keyring(kmsDiscoveryKeyRing) .build(); GetObjectRequest getObjectRequest = GetObjectRequest.builder() .bucket("amzn-s3-demo-bucket") .key("<my-key>") .build(); ResponseInputStream<GetObjectResponse> s3Object = s3EncryptionClient.getObject(getObjectRequest);
    2. Laden Sie das Objekt mit demselben Namen und derselben SSE-KMS Verschlüsselung auf S3 hoch. Hier ist ein Beispiel mit AWS Java SDK V2.

      Importe

      import software.amazon.awssdk.core.ResponseInputStream; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.PutObjectRequest; import software.amazon.awssdk.services.s3.model.ServerSideEncryption;

      Code

      final S3Client s3Client = S3Client.builder() .build(); PutObjectRequest putObjectRequest = PutObjectRequest.builder() .bucket("amzn-s3-demo-bucket") .key("<my-key>") .serverSideEncryption(ServerSideEncryption.AWS_KMS) .ssekmsKeyId("<my-kms-key>") .build(); s3Client.putObject(putObjectRequest, RequestBody.fromBytes(s3Object.readAllBytes()));

Nach der Migration

Führen Sie die folgenden Schritte aus, nachdem Sie alle CSE-KMS Dateien in der Tabelle erfolgreich erneut verschlüsselt haben.

  1. Entfernen Sie die has_encrypted_data-Eigenschaft aus der Tabelle.

    Console
    1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

    2. Wählen Sie Abfrage-Editor starten.

    3. Wählen Sie auf der linken Seite des Editors unter Datenbank die Datenbank aus, die Sie abfragen möchten.

    4. Führen Sie im Abfrageeditor die folgende Abfrage für Ihre Tabelle aus.

      ALTER TABLE <database-name>.<table-name> UNSET TBLPROPERTIES ('has_encrypted_data')
    CLI

    Führen Sie den folgenden has_encrypted_data-Befehl aus, um eine Ausgabe aus Ihrer Tabelle zu entfernen.

    aws athena start-query-execution \ --query-string "ALTER TABLE <database-name>.<table-name> UNSET TBLPROPERTIES ('has_encrypted_data');" \ --work-group "<my-workgroup>"
  2. Aktualisieren Sie Ihre Workflows so, dass sie einen einfachen S3-Client anstelle eines S3-Verschlüsselungsclients verwenden, und geben Sie dann die SSE-KMS Verschlüsselung für Datenschreibvorgänge an.