Amazon S3crittografia lato client conAWSChiavi gestite KMS - 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 S3crittografia lato client conAWSChiavi gestite KMS

Negli esempi seguenti viene utilizzato ilBuilder V2 Client di crittografia Amazon S3classe per creare unaAmazon S3client con crittografia lato client abilitata. Una volta configurato, tutti gli oggetti su cui carichiAmazon S3l'utilizzo di questo client sarà crittografato. Qualsiasi oggetto da cui ottieniAmazon S3l'utilizzo di questo client viene decrittografato automaticamente.

Nota

Negli esempi seguenti viene illustrato come utilizzare laAmazon S3crittografia lato client conAWSChiavi gestite KMS. Per informazioni su come usare la crittografia con le tue chiavi, consultaAmazon S3crittografia lato client con chiavi master client.

È possibile scegliere tra due modalità di crittografia quando si abilita lato clientAmazon S3crittografia: autenticata o autenticata rigorosa. Nelle sezioni seguenti viene illustrato come abilitare ciascun tipo. Per sapere quali algoritmi utilizzano ciascuna modalità, vedere ilCryptoMode crittografiadefinizione.

Importazioni richieste

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

La crittografia autenticata rigorosa è la modalità predefinita in caso contrarioCryptoModeè specificato.

Per abilitare esplicitamente questa modalità, specificare ilStrictAuthenticatedEncryptionvalore nelwithCryptoConfigurationmetodo.

Nota

Per usare la crittografia autenticata lato client, è necessario includere la versione più recenteBouncy Castle jarfile nel classpath della tua 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));

Chiama ilputObjectsul metodoAmazon S3client di crittografia per caricare oggetti.

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 ilgetObjectAsStringmetodo per recuperare la stringa memorizzata.

Codice

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

Modalità crittografia autenticata

Quando utilizziAuthenticatedEncryptionmodalità, un algoritmo di key wrapping migliorato viene applicato durante la crittografia. Durante la decrittografia in questa modalità, l'algoritmo può verificare l'integrità dell'oggetto decrittografato e generare un'eccezione se il controllo non riesce. Per ulteriori informazioni su come funziona la crittografia autenticata, consulta la sezioneAmazon S3Crittografia autenticata lato clientpost di blog.

Nota

Per usare la crittografia autenticata lato client, è necessario includere la versione più recenteBouncy Castle jarfile nel classpath della tua applicazione.

Per abilitare questa modalità, specificare ilAuthenticatedEncryptionvalore nelwithCryptoConfigurationmetodo.

Codice

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

Configurazione dellaAWS KMScliente

LaAmazon S3client di crittografia crea unAWS KMSclient per impostazione predefinita, a meno che non sia specificato esplicitamente.

Per impostare la regione per questo creato automaticamenteAWS KMSclient, imposta ilawsKmsRegion.

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 la propriaAWS KMSclient 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();