截至 2024 年 7 月 31 日, AWS SDK for Java 1.x 已進入維護模式,並將end-of-support
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon S3使用AWSKMS 託管密鑰
下列範例使用亞馬遜 3 加密客户端 2 構建器類別建立Amazon S3啟用了用户端加密的用户端加密功能。配置後,您將上傳到Amazon S3將被加密。您從中獲取的任何對象Amazon S3將自動解密。
注意
下列範例會示範如何使用Amazon S3使用AWSKMS 託管密鑰。若要了解如何使用自己的密鑰使用加密功能,請參Amazon S3使用用户端密鑰。
啟用客户端時,您可以從兩種加密模式中進行選擇Amazon S3加密:嚴格的身份驗證或驗證。下列各節會示範如何啟用每種類型。要瞭解每種模式使用哪些算法,請參閲CryptoMode 碼定義。
所需進口
為這些示例導入以下類。
匯入
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;
嚴格驗證加密
如果沒有,則嚴格驗證加密為默認模式CryptoMode
指定為。
要顯式啟用此模式,請指定StrictAuthenticatedEncryption
中的值withCryptoConfiguration
方法。
注意
若要使用經驗證的加密功能,您必須包含最新的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));
呼叫putObject
方法Amazon S3加密客户端上傳對象。
Code
s3Encryption.putObject(bucket_name, ENCRYPTED_KEY3, "This is the 3rd content to encrypt with a key created in the {console}");
您可以使用相同的用户端檢索對象。此示例調用getObjectAsString
方法來檢索存儲的字符串。
Code
System.out.println(s3Encryption.getObjectAsString(bucket_name, ENCRYPTED_KEY3));
驗證加密模式
當您使用AuthenticatedEncryption
模式下,在加密過程中應用改進的密鑰包裝算法。在此模式下解密時,算法可以驗證解密對象的完整性,並在檢查失敗時拋出異常。如需有關驗證加密工作方式的詳細資訊,請參閲Amazon S3驗證用户端加密
注意
若要使用經驗證的加密功能,您必須包含最新的Bouncy Castle
要啟用此模式,請指定AuthenticatedEncryption
中的值withCryptoConfiguration
方法。
Code
AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.AuthenticatedEncryption))) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build();
設定AWS KMS客戶
所以此Amazon S3加密用户端創建AWS KMS客户端,除非明確指定了一個。
設置此自動創建的區域AWS KMS客户端,將awsKmsRegion
。
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();
或者,您可以使用自己的AWS KMS客户端初始化加密客户端。
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();