La AWS SDK for Java version 1.x est entrée en mode maintenance le 31 juillet 2024 et atteindra end-of-support
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.
Amazon S3Chiffrement côté client avecAWSClés gérées KMS
Les exemples suivants utilisent leCréateur de chiffrement Amazon S3 Client V2pour créer unAmazon S3client avec le chiffrement côté client activé. Une fois configurés, les objets que vous chargez dans Amazon S3 à l'aide de ce client sont chiffrés. Les objets que vous obtenez d'Amazon S3 à partir de ce client sont automatiquement déchiffrés.
Note
Les exemples suivants montrent comment utiliser leAmazon S3Chiffrement côté client avecAWSClés gérées par KMS. Pour en savoir plus sur l'utilisation du chiffrement avec vos propres clés, consultezAmazon S3Chiffrement côté client avec des clés principales client.
Au moment d'activer côté client, vous avez le choix entre deux modes de chiffrementAmazon S3chiffrement : strictement authentifié ou authentifié. Les sections suivantes montrent comment activer chaque type. Pour savoir quels sont les algorithmes utilisés par chaque mode, consultez la définition CryptoMode.
Importations nécessaires
Pour ces exemples, vous devez importer les classes suivantes.
Importations
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;
chiffrement authentifié strict
Le chiffrement authentifié strict est le mode par défaut si aucunCryptoMode
est spécifié.
Pour activer explicitement ce mode, spécifiez leStrictAuthenticatedEncryption
valeur dans lewithCryptoConfiguration
Méthode.
Note
Pour utiliser le chiffrement authentifié côté client, vous devez inclure le dernier fichier jar Bouncy Castle
Code
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));
Appelez la méthode putObject
sur le client de chiffrement Amazon S3 pour charger des objets.
Code
s3Encryption.putObject(bucket_name, ENCRYPTED_KEY3, "This is the 3rd content to encrypt with a key created in the {console}");
Vous pouvez récupérer l'objet en utilisant le même client. Cet exemple appelle la méthode getObjectAsString
pour récupérer la chaîne qui a été stockée.
Code
System.out.println(s3Encryption.getObjectAsString(bucket_name, ENCRYPTED_KEY3));
Mode de chiffrement authentifi
Lorsque vous utilisez le mode AuthenticatedEncryption
, un algorithme d'encapsulage de clé amélioré est appliqué pendant le chiffrement. Lorsque vous déchiffrez dans ce mode, l'algorithme peut vérifier l'intégrité de l'objet déchiffré et générer une exception si la vérification échoue. Pour plus d'informations sur le fonctionnement du chiffrement authentifié, consultez leAmazon S3Chiffrement authentifié côté client
Note
Pour utiliser le chiffrement authentifié côté client, vous devez inclure le dernier fichier jar Bouncy Castle
Pour activer ce mode, spécifiez la valeur AuthenticatedEncryption
dans la méthode withCryptoConfiguration
.
Code
AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.AuthenticatedEncryption))) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build();
Configuration deAWS KMSclient
LeAmazon S3client de chiffrement crée unAWS KMSclient par défaut, à moins qu'il ne soit explicitement spécifié.
Pour définir la région de cette zone créée automatiquementAWS KMSclient, définissez leawsKmsRegion
.
Code
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();
Vous pouvez également utiliser le vôtreAWS KMSclient pour initialiser le client de chiffrement.
Code
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();