我试图找到有关如何解密由KMS加密的密码的任何示例,例如我有一个由KMS加密的RDS数据库密码,我想在我的aws-cpp-lambda函数中解密以连接到数据库。 / p>
我看到呼叫客户端Decrypt我需要一个DecryptRequest; 但是我不知道如何初始化它,在DecryptedRequest中设置我的“ encriptedPassword”以调用client.Decrypt()
这是base64 encriptedPassword =“ GPK0ujdAAAAZzBlBgkqhkiG”
Aws::SDKOptions options;
InitAPI(options);
{
Aws::Client::ClientConfiguration awsConfig;
awsConfig.region = Aws::Environment::GetEnv("AWS_REGION");
Aws::KMS::KMSClient client(awsConfig);
// Aws::KMS::Model::DecryptRequest decryptRequest;
// client.Decrypt(decryptRequest);
}
// shutdown the aws api
std::cout << "shutdown api" << "\n";
ShutdownAPI(options);
所有凭据均由AWS管理员管理和存储,因此我无权访问该配置,我只有加密的数据库密码。当我制作lambda时,我在将jenkins流程构建并将lambda部署到aws之后将其发布到git存储库中,jenkins具有凭据等,并且我想也将其保存在ec2或aws配置中,它们只给我一个示例如何做到这一点,但是它在nodejs中我需要做一个C ++版本,例如,这是nodejs示例
use strict'
const AWS = require('aws-sdk');
module.exports.decrypt = (key) => {
return new Promise((resolve, reject) => {
const kms = new AWS.KMS();
console.log('Attempting to decrypt: ' + key);
const params = {CiphertextBlob: new Buffer(key, 'base64')};
console.log(params);
kms.decrypt(params, function (err, data) {
if (err) {
console.log('Error while decrypting key: ' + err);
reject(err)
} else {
console.log('Decrypted key');
resolve(data.Plaintext.toString('ascii'));
}
});
});
nodejs版本做什么是使用sdk kms客户端将密码作为简单字符串传递到db连接库,然后使用主机,端口,数据库名称等连接到数据库。
我需要做的是使用KMSCLIENT for c ++解密密码,例如节点版本。
任何人都不能写一个小例子。谢谢大家!