web-dev-qa-db-ja.com

AWS Lambdaでは、API認証情報を安全に保存できますか?

Node(例:Twilio)を介して外部APIにアクセスすることになっているAPIゲートウェイを介してラムダ関数が構成されています。関数の資格情報を右に保存したくないラムダ関数。しかし、それらを設定するより良い場所はありますか?

27
Toli

これを行う機能は、おそらくこの質問が投稿された後にLambdaに追加されました。

AWSのドキュメントでは、環境変数を使用して機密情報を保存することをお勧めしています。 AWS Lambdaコンソールを使用してLambda関数を作成すると、AWSが決定したキー(aws/lambda)を使用して(デフォルトで)暗号化されます。

AWS KMSを活用して、AWSが決定したキーを使用するか、独自のKMSキーを選択する(暗号化ヘルパーを有効にするを選択する)ことができます。事前にキーを作成しておく必要があります。

AWSからDOC 1 ...

「環境変数を使用するLambda関数を作成または更新すると、AWS LambdaはAWS Key Management Serviceを使用してそれらを暗号化します。Lambda関数が呼び出されると、これらの値は復号化され、Lambdaコードで利用可能になります。

リージョンで環境変数を使用するLambda関数を初めて作成または更新するときに、AWS KMS内でデフォルトのサービスキーが自動的に作成されます。このキーは、環境変数を暗号化するために使用されます。ただし、Lambda関数の作成後に暗号化ヘルパーを使用し、KMSを使用して環境変数を暗号化する場合は、独自のAWS KMSキーを作成し、デフォルトキーの代わりにそれを選択する必要があります。デフォルトのキーを選択するとエラーが発生します。」

デフォルトのキーは確かに「選択したときにエラーを与える」ので、なぜドロップダウンに入れたのか不思議に思います。

ソース:

15
Nigel

まだ自分でやっていませんが、 AWS KMS を使用して、関数内からAPIキーを暗号化/復号化して、LambdaロールにKMSキーへのアクセスを許可する必要があります。

7

AWSのストレージサービスまたはデータベースサービスは、ここで問題を解決できます。問題は、現在の AWS Lambda 関数ですでに何を使用しているのですか?それに基づいて、次の考慮事項:

  • 迅速に必要で、コストが問題にならない場合は、 Amazon DynamoDB を使用します
  • 高速で必要な場合は、コストを考慮して、 Amazon ElastiCache (RedisまたはMemcache)を使用します
  • 既に何らかのリレーショナルデータベースを使用している場合は、 Amazon RDS を使用します
  • 何も使用しておらず、高速で必要ない場合は、 Amazon S ​​を使用します

いずれにしても、Lambdaと選択したストレージ/データベース間の排他的アクセスを許可するために、セキュリティポリシー(IAMロールまたはS3バケットポリシー)を作成する必要があります。

注: Amazon VPC AWS Lambdaのサポートはすぐ近くにあるため、選択するソリューションは、Lambda関数と同じVPC内にあることを確認してください(詳細については https:// connect .awswebcasts.com/vpclambdafeb2016/event/event_info.html

4
eistrati

AWSの認証情報ではなく、外部のAPIの認証情報を参照していると思いますか?

素晴らしい場所だとは知りませんが、S3に認証情報を入力しているAWSフォーラムに投稿を見つけました。

特定のユースケースではありませんが、このフォーラムスレッドをご覧ください。

https://forums.aws.Amazon.com/thread.jspa?messageID=686261

資格情報をS3に配置する場合は、適切にセキュリティ保護されていることを確認してください。そのLambda関数にのみ割り当てられている特定のIAMロールでのみ使用可能にすることを検討してください。

0
Brooks