0

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

4

1 に答える 1

2

この構造は、Lambda 関数の開発者から実際のパスワードを隠すのに役立ちます (たとえば、開発を外部委託する場合)。この場合、KMS キーを開発者に提供しますが、DB のマスター パスワードは提供しません。

次に、関数を配信して AWS アカウントにデプロイし、環境変数を設定すれば準備完了です。これにより、Lambda 関数のソース コードを変更せずに DB パスワードを変更することもできます。

于 2016-12-03T16:23:49.540 に答える