aws-sdk-cpp Как расшифровать пароль, зашифрованный с помощью KMS, используя KMSCLIENT из c ++ sdk - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь найти любой пример того, как расшифровать пароль, зашифрованный KMS, например, у меня есть пароль базы данных RDS, зашифрованный KMS, я хочу расшифровать его в моей функции aws-cpp-lambda для подключения к базе данных.

я вижу, что для вызова клиента Decrypt мне нужен DecryptRequest; но я не знаю, как его инициализировать и где установить свой «encriptedPassword» в DecryptedRequest для вызова 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, поэтому у меня нет доступа к этой конфигурации, у меня есть только зашифрованный пароль БД. Когда я делаю лямбду, я публикую это git-репозиторий, после чего процесс jenkins строит и развертывает лямбду в aws, у jenkins есть учетные данные и т. д. как это сделать, но это в 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 для c ++, как версия узла.

Кто-нибудь не может написать небольшой пример, пожалуйста. Спасибо всем !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...