AWS Lambda 関数には、マスター db パスワードなどの機密値を含む環境変数を入力する必要があります。
Lambda の新しい環境変数機能により、これが非常にシンプルになります。しかし、ベスト プラクティスとは何か、またはそれを達成する方法については、少しあいまいです。
Lambda FAQ では、次のように述べています。
Q: 機密情報を環境変数に保存できますか? データベースのパスワードなどの機密情報については、AWS Key Management Service を使用してクライアント側の暗号化を使用し、結果の値を
cipher text
環境変数として保存することをお勧めします。これらの値を復号化するには、AWS Lambda 関数コードにロジックを含める必要があります。
したがって、彼らは基本的に、自分で値を暗号化し、暗号化された値を Lambda 関数の環境変数に入力する必要があると言っています。次に、インスタンス化時に値を復号化するロジックを関数に含める必要があります。擬似コードでは、次のようになります。
ラップトップで
/// 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);
Lambda 関数で
そして、あなたの関数では、インスタンス化時にそれを解読するロジックがあります:
var myDbPassword = aws.kms.decrypt(process.env.DB_PASS, 'my-lambda-env-key');
db.connect('someURL', myDbPassword);
シンプルですが、入力した値は入力時にすでに暗号化されており、値の暗号化に使用する KMS キーを選択できます。独自の KMS キーを作成して、「デフォルト」の代わりにそれを使用できます。 " 鍵。
では、入力前に値を暗号化するポイントは何ですか? 暗号化にキーを使用するように Lambda に指示できる場合、それはキーを使用してラップトップの値を暗号化してから Lambda に送信するmy-lambda-env-key
のと同じではありませんか?my-lambda-env-key