View a markdown version of this page

Converti i dati della tabella CSE-KMS in SSE-KMS - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Converti i dati della tabella CSE-KMS in SSE-KMS

Se i propri flussi di lavoro attualmente utilizzano CSE-KMS per la crittografia dei dati delle tabelle, passa a SSE-KMS con i seguenti passaggi.

Prerequisito

Se continui a scrivere dati utilizzando un gruppo di lavoro CSE-KMS o impostazioni lato client, segui i passaggi indicati in Esegui la migrazione da CSE-KMS a SSE-KMS per aggiornarli a SSE-KMS. Ciò impedisce l’aggiunta di nuovi dati crittografati CSE-KMS durante il processo di migrazione da qualsiasi altro flusso di lavoro che potrebbe scrivere nelle tabelle.

Migrazione dei dati

  1. Controllare se la proprietà has_encrypted_data della tabella è impostata su true. Questa proprietà specifica che la tabella potrebbe contenere dati crittografati CSE-KMS. Tuttavia, è importante notare che questa proprietà potrebbe essere presente anche su tabelle prive di dati crittografati CSE-KMS effettivi.

    Console
    1. Apri la console Athena all'indirizzo https://console.aws.amazon.com/athena/.

    2. Scegliere Launch query editor.

    3. Sul lato sinistro dell’editor, in Database, scegliere il nome del database su cui vuoi interrogare.

    4. Nell’editor Query esegui la query seguente per vedere il valore impostato sulla proprietà has_encrypted_data table.

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

    Avvia una query Athena che mostra il valore della proprietà has_encrypted_data sulla tabella come mostrato nell’esempio seguente.

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

    Recupera i risultati della query per verificare il valore della proprietà della tabella has_encrypted_data per la tabella, come mostrato nell’esempio seguente.

    aws athena get-query-results --query-execution-id <query-execution-id-from-previous-step>
  2. Per ogni oggetto crittografato CSE-KMS nella tabella.

    1. Scaricare l’oggetto da S3 utilizzando il client di crittografia S3 e decriptarlo. Ecco un esempio con AWS Java SDK V2.

      Importazioni

      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;

      Codice

      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. Caricare l’oggetto su S3 con lo stesso nome e la crittografia SSE-KMS. Ecco un esempio con AWS Java SDK V2.

      Importazioni

      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;

      Codice

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

Dopo la migrazione

Dopo aver ricrittografato correttamente tutti i file CSE-KMS nella tabella, effettuare le seguenti operazioni.

  1. Rimuovere la proprietà has_encrypted_data dalla tabella.

    Console
    1. Apri la console Athena all'indirizzo https://console.aws.amazon.com/athena/.

    2. Scegliere Launch query editor.

    3. Sul lato sinistro dell’editor, in Database, scegliere il nome del database su cui si vuole eseguire la query.

    4. Nell’editor di query, eseguire la seguente query per la propria tabella.

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

    Eseguire il seguente comando per rimuovere la proprietà dalla propria tabella has_encrypted_data:

    aws athena start-query-execution \ --query-string "ALTER TABLE <database-name>.<table-name> UNSET TBLPROPERTIES ('has_encrypted_data');" \ --work-group "<my-workgroup>"
  2. Aggiornare i flussi di lavoro per utilizzare un client S3 di base anziché un client di crittografia S3, quindi specificare la crittografia SSE-KMS per le scritture dei dati.