Функция AWS Lambda должна быть заполнена env vars, которая содержит чувствительные значения, такие как пароль master db.Какова наилучшая практика для хранения чувствительных env vars с использованием AWS Lambda?
Новая функция env vars Lambda делает этот суперпростой. Но это немного нечетко относительно того, что такое лучшая практика, или как это сделать.
В Lambda FAQ, они заявляют следующее:
Q: Могу ли я хранить конфиденциальную информацию в переменных окружения? Для конфиденциальной информации, такой как пароли базы данных, мы рекомендуем вам использовать шифрование на стороне клиента с помощью службы управления ключами AWS и сохранить результирующие значения как
cipher text
в вашей переменной окружения. Вам необходимо указать логику в вашем функциональном коде AWS для дешифрования этих значений.
Значит, они в основном говорят, что вам нужно зашифровать значения самостоятельно, а затем ввести зашифрованное значение в вашу функцию лямбда-env vars. Затем вам нужно включить логику в свою функцию, которая расшифровывает значение при создании экземпляра. В псевдо-коде, это будет выглядеть так:
На ноутбуке
/// Encrypt your password
var myDbPassword = '122345';
var encryptedDbPassword = aws.kms.encrypt(myDbPassword, 'my-lambda-env-key');
/// Store it 'on' your Lambda function
aws.lambda.env.save('DB_PASS', encryptedDbPassword);
в вашем лямбда-функции
, а затем в функции, вы бы логику в расшифровывать его после создания экземпляра:
var myDbPassword = aws.kms.decrypt(process.env.DB_PASS, 'my-lambda-env-key');
db.connect('someURL', myDbPassword);
Простой, но любые введенные вами значения уже зашифрованы при их вводе, и они позволяют вам выбрать, какой ключ KMS вы хотите использовать для шифрования значений, и вы можете создать свой собственный ключ KMS и использовать это вместо ключ «по умолчанию».
Итак, в чем смысл шифрования значений перед вводом? Если вы можете сказать, что Lambda использует ваш ключ my-lambda-env-key
для шифрования, это не то же самое, что использовать ключ my-lambda-env-key
для шифрования значений на вашем ноутбуке перед отправкой их на Lambda?
Как соло-dev, который работает из дома, мне просто пришло в голову, что я забыл о нападениях Over-The-Shoulder. Мой кот редко взламывает мою БД таким образом. – AJB
Я бы никогда не доверял кошке ... –