View a markdown version of this page

Converti i dati CSE-KMS della tabella 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 CSE-KMS della tabella in SSE-KMS

Se i tuoi flussi di lavoro attualmente utilizzano CSE-KMS la crittografia dei dati delle tabelle, SSE-KMS procedi nel seguente modo.

Prerequisito

Se continui a scrivere dati utilizzando un CSE-KMS gruppo di lavoro o impostazioni lato client, segui i passaggi indicati per aggiornarli Esegui la migrazione da a CSE-KMS SSE-KMS a. SSE-KMS Ciò impedisce l'aggiunta di nuovi dati CSE-KMS crittografati 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 CSE-KMS crittografati. Tuttavia, è importante notare che questa proprietà potrebbe essere presente anche su tabelle prive di dati CSE-KMS crittografati 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 CSE-KMS crittografato 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. Carica l'oggetto su S3 con lo stesso nome e la stessa 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 CSE-KMS i file della tabella, effettuate 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. Aggiorna i flussi di lavoro per utilizzare un client S3 di base anziché un client di crittografia S3, quindi specifica SSE-KMS la crittografia per le scritture dei dati.