aws-sdk-cpp如何使用c ++ sdk的KMSCLIENT解密由kms加密的密码

时间:2019-03-27 20:42:01

标签: c++ amazon-web-services aws-sdk

我试图找到有关如何解密由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 ++解密密码,例如节点版本。

任何人都不能写一个小例子。谢谢大家!

0 个答案:

没有答案