暗号化された秘密をserverless.comプロジェクトのコードに格納する方法は?


12

serverless.comで、AWS Lambda関数にシークレットを公開する最も簡単な方法は、それをserverless.ymlファイルに保存することです(たとえば、KMSで暗号化されます)。

しかし、暗号化された秘密をGitにコミットすることは、世界で最高のものではありません。シークレットを変更する必要がある場合は、コードの変更が必要です。

しかし、セキュリティだけの観点から、より良い代替策は何ですか?たとえば、シークレットをS3(暗号化)に保存し、Lambdaがその場所とKMSキーにアクセスできるようにすることができますが、実際には意味のある方法でより優れていますか?


この意見恐怖の意味体操は私には興味がありません。
Assaf Lavie 2017年

回答:


7

ここで考慮すべき要素がいくつかあります。

  1. 構成中のコードとは別のリリースケイデンスで構成を維持する機能があると便利です。これにより、資格情報の自動ローテーションが促進され、定期的に行うと痛みがなくなります。

  2. 「コードとしてのインフラストラクチャ」の観点からは、構成のスコープが複数のサービスに及ぶ可能性が高いため、おそらく別のリポジトリーにすべての構成をGitに保管することは完全に合理的です。

  3. 上記のステートメントの両方があなたの状況に関連していると仮定すると、データをKMSで暗号化してS3またはDynamoDBに保存する傾向があります。これまでのところ、非常に単純な状況では、データ暗号化してKMS自体に格納するのが適切であると言っていました

この操作をサポートするいくつかのオープンソースライブラリがあります。


1

私は通常、シークレットをスコープ内の構成データとして扱います。そのため、異なるリリーススケジュールやプロセスで処理されるため、コードと一緒に存在しません。個別のgitリポジトリ、KMS、dynamo、s3、または構成管理システム内(chef-vault / chefの世界では暗号化されたデータベース)が良い場所です。基本的に、秘密を更新するためにソフトウェアの新しいリリースをビルドしてデプロイする必要はありません。

シークレットの管理ニーズがより複雑な場合は、Hasicorp Vault(https://github.com/hashicorp/vault)などのオプションが適しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.