【发布时间】:2023-02-22 18:10:31
【问题描述】:
我们有一个 Java 后端程序,每分钟处理数千个请求,其中涉及通过 AWS KMS 进行的加密和解密。我们要避免的是以编程方式多次调用 AWS KMS,这可能会对性能产生相当大的影响。
我们最初想到的是在启动时检索 AWSKMS 对象,然后将其存储在内存中,并使用同一对象进行所有后续的加密和解密。这行得通吗?是这样的:
AWSKMS kmsClient = AWSKMSClientBuilder.standard().withRegion(Regions.fromName(region)).withCredentials(new ProfileCredentialsProvider(filePath, profileName)).build();
//store kmsClient in memory (or as a static param in a parent class)
//for succeeding encrypts and decrypts, use this same object
AWSKMS kmsClient = ....retrieve from memory
EncryptRequest req = new EncryptRequest()
.withKeyId(keyId)
.withPlaintext(ByteBuffer.wrap(key.getBytes()));
EncryptResult res = kmsClient.encrypt(req);
我们尝试寻找这样的实现,但还没有找到。这行得通吗?
我们正在使用 aws sdk 版本 1.12.17
【问题讨论】:
标签: encryption aws-sdk amazon-kms aws-sdk-java