View a markdown version of this page

Convertir les données du CSE-KMS tableau en SSE-KMS - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Convertir les données du CSE-KMS tableau en SSE-KMS

Si vos flux de travail utilisent CSE-KMS actuellement le chiffrement des données des tables, SSE-KMS passez aux étapes suivantes.

Prérequis

Si vous continuez à écrire des données à l'aide d'un CSE-KMS groupe de travail ou de paramètres côté client, suivez les étapes décrites pour les mettre Migrer de CSE-KMS vers SSE-KMS à jour en. SSE-KMS Cela empêche l'ajout de nouvelles données CSE-KMS chiffrées pendant le processus de migration à partir de tout autre flux de travail susceptible d'écrire dans les tables.

Migrations des données

  1. Vérifiez si la propriété has_encrypted_data de la table est définie sur true. Cette propriété indique que la table peut contenir des données CSE-KMS cryptées. Cependant, il est important de noter que cette propriété peut être présente même sur des tables dépourvues de données réellement CSE-KMS cryptées.

    Console
    1. Ouvrez la console à l'adresse https://console.aws.amazon.com/athena/.

    2. Choisissez Lancer l’éditeur de requête.

    3. Dans la partie gauche de l’éditeur, dans Base de données, choisissez la base de données à interroger.

    4. Dans l’éditeur de requête, exécutez la requête suivante pour afficher la valeur définie pour la propriété has_encrypted_data table.

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

    Lancez la requête Athena qui affiche la valeur de la propriété has_encrypted_data de la table comme illustré dans l’exemple suivant.

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

    Récupérez les résultats de la requête pour vérifier la valeur de la propriété has_encrypted_data de la table comme illustré dans l’exemple suivant.

    aws athena get-query-results --query-execution-id <query-execution-id-from-previous-step>
  2. Pour chaque objet CSE-KMS chiffré du tableau.

    1. Téléchargez l’objet depuis S3 à l’aide du client de chiffrement S3 et déchiffrez-le. Voici un exemple avec le SDK AWS Java V2.

      Importations

      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. Téléchargez l'objet sur S3 avec le même nom et le même SSE-KMS cryptage. Voici un exemple avec le SDK AWS Java V2.

      Importations

      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()));

Opérations post-migration

Après avoir rechiffré avec succès tous les CSE-KMS fichiers de la table, effectuez les étapes suivantes.

  1. Supprimez la propriété has_encrypted_data du tableau.

    Console
    1. Ouvrez la console à l'adresse https://console.aws.amazon.com/athena/.

    2. Choisissez Lancer l’éditeur de requête.

    3. Dans la partie gauche de l’éditeur, dans Base de données, choisissez la base de données à interroger.

    4. Exécutez la requête suivante pour votre table dans l’éditeur de requête.

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

    Exécutez la commande suivante pour supprimer la propriété has_encrypted_data de votre table.

    aws athena start-query-execution \ --query-string "ALTER TABLE <database-name>.<table-name> UNSET TBLPROPERTIES ('has_encrypted_data');" \ --work-group "<my-workgroup>"
  2. Mettez à jour vos flux de travail pour utiliser un client S3 de base au lieu d'un client de chiffrement S3, puis spécifiez le SSE-KMS chiffrement pour les écritures de données.