Amazon S3 crittografia lato client con AWS KMS chiavi gestite - AWS SDK for Java 1. x

La AWS SDK for Java versione 1.x è entrata in modalità manutenzione il 31 luglio 2024 e sarà disponibile il 31 end-of-supportdicembre 2025. Ti consigliamo di eseguire la migrazione a per continuare AWS SDK for Java 2.xa ricevere nuove funzionalità, miglioramenti della disponibilità e aggiornamenti di sicurezza.

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à.

Amazon S3 crittografia lato client con AWS KMS chiavi gestite

Gli esempi seguenti utilizzano la classe AmazonS3 EncryptionClient V2Builder per creare un client con crittografia lato client abilitata. Amazon S3 Una volta configurato, tutti gli oggetti su cui carichi utilizzando questo client verranno crittografati. Amazon S3 Tutti gli oggetti ottenuti Amazon S3 utilizzando questo client vengono decrittografati automaticamente.

Nota

Gli esempi seguenti mostrano come utilizzare la crittografia Amazon S3 lato client con chiavi gestite. AWS KMS Per informazioni su come utilizzare la crittografia con le proprie chiavi, vedere Crittografia Amazon S3 lato client con chiavi master client.

È possibile scegliere tra due modalità di crittografia per abilitare la Amazon S3 crittografia lato client: autenticata rigorosa o autenticata. Le sezioni seguenti mostrano come abilitare ogni tipo. Per informazioni sugli algoritmi utilizzati da ciascuna modalità, consultate la CryptoModedefinizione.

Importazioni obbligatorie

Importa le seguenti classi per questi esempi.

Importazioni

import com.amazonaws.ClientConfiguration; import com.amazonaws.regions.Regions; import com.amazonaws.services.kms.AWSKMS; import com.amazonaws.services.kms.AWSKMSClientBuilder; import com.amazonaws.services.kms.model.GenerateDataKeyRequest; import com.amazonaws.services.kms.model.GenerateDataKeyResult; import com.amazonaws.services.s3.AmazonS3EncryptionClientV2Builder; import com.amazonaws.services.s3.AmazonS3EncryptionV2; import com.amazonaws.services.s3.model.CryptoConfigurationV2; import com.amazonaws.services.s3.model.CryptoMode; import com.amazonaws.services.s3.model.EncryptionMaterials; import com.amazonaws.services.s3.model.KMSEncryptionMaterialsProvider;

Crittografia autenticata rigorosa

La crittografia autenticata rigorosa è la modalità predefinita se non CryptoMode viene specificata alcuna.

Per abilitare esplicitamente questa modalità, specificate il StrictAuthenticatedEncryption valore nel withCryptoConfiguration metodo.

Nota

Per utilizzare la crittografia autenticata lato client, è necessario includere il file jar di Bouncy Castle più recente nel classpath dell'applicazione.

Codice

AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.StrictAuthenticatedEncryption))) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build(); s3Encryption.putObject(bucket_name, ENCRYPTED_KEY3, "This is the 3rd content to encrypt with a key created in the {console}"); System.out.println(s3Encryption.getObjectAsString(bucket_name, ENCRYPTED_KEY3));

Richiamate il putObject metodo sul client di crittografia per caricare oggetti. Amazon S3

Codice

s3Encryption.putObject(bucket_name, ENCRYPTED_KEY3, "This is the 3rd content to encrypt with a key created in the {console}");

È possibile recuperare l'oggetto utilizzando lo stesso client. Questo esempio chiama il getObjectAsString metodo per recuperare la stringa che è stata memorizzata.

Codice

System.out.println(s3Encryption.getObjectAsString(bucket_name, ENCRYPTED_KEY3));

modalità di crittografia autenticata

Quando si utilizza AuthenticatedEncryption la modalità, durante la crittografia viene applicato un algoritmo di key wrapping migliorato. Durante la decrittografia in questa modalità, l'algoritmo può verificare l'integrità dell'oggetto decrittografato e generare un'eccezione se il controllo fallisce. Per ulteriori dettagli su come funziona la crittografia autenticata, consultate il post sul blog Amazon S3 Client-Side Authenticated Encryption.

Nota

Per utilizzare la crittografia autenticata lato client, è necessario includere il file jar Bouncy Castle più recente nel classpath dell'applicazione.

Per abilitare questa modalità, specificate il valore nel metodo. AuthenticatedEncryption withCryptoConfiguration

Codice

AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.AuthenticatedEncryption))) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build();

Configurazione del client AWS KMS

Il client di Amazon S3 crittografia crea un AWS KMS client per impostazione predefinita, a meno che non ne venga specificato uno esplicitamente.

Per impostare la regione per questo client creato automaticamente, imposta il AWS KMS . awsKmsRegion

Codice

Region kmsRegion = Region.getRegion(Regions.AP_NORTHEAST_1); AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withCryptoConfiguration(new CryptoConfigurationV2().withAwsKmsRegion(kmsRegion)) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build();

In alternativa, è possibile utilizzare il proprio AWS KMS client per inizializzare il client di crittografia.

Codice

AWSKMS kmsClient = AWSKMSClientBuilder.standard() .withRegion(Regions.US_WEST_2); .build(); AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withKmsClient(kmsClient) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.AuthenticatedEncryption))) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build();