資格情報をバージョン管理(git)に保存することは悪いことだと誰もが言っています。したがって、はるかに優れた資格情報を格納する他の方法が必要です。
アプリケーションは、依存するサービスを使用するためにどこかから資格情報を受け取る必要があります。これらの資格情報は通常、構成ファイルに格納されます。各サーバーを手動で入力してそのファイルを作成することは問題外です。サーバーが人間の介入なしに行き来するためです。
アプリケーションの資格情報を管理する方法は?
資格情報をバージョン管理(git)に保存することは悪いことだと誰もが言っています。したがって、はるかに優れた資格情報を格納する他の方法が必要です。
アプリケーションは、依存するサービスを使用するためにどこかから資格情報を受け取る必要があります。これらの資格情報は通常、構成ファイルに格納されます。各サーバーを手動で入力してそのファイルを作成することは問題外です。サーバーが人間の介入なしに行き来するためです。
アプリケーションの資格情報を管理する方法は?
回答:
アプリケーションのシークレットを適切に管理することは、常に課題でした。クラウドの採用に伴い、新たな課題が生じました。シークレットをクラウドに保存することの現実と課題についての素晴らしいOWASPプレゼンテーションがあります。
シークレットをソースコードに格納することは、提示されたソリューション(または「アーキテクチャ」)の1つであると聞いて驚くかもしれません。それは、現在、完璧なアーキテクチャやこれを行う方法がないためです。結局のところ、あなたの秘密は暗号化されているかもしれません...しかし、暗号化キーを保護しているものは何ですか?「ずっと下に亀」と彼らは言った。
あらゆるタイプの秘密管理には長所と短所があり、プレゼンテーションはすでにそれをカバーしています。代わりに、シークレット(資格情報)管理ソリューションで探している可能性のあるいくつかの機能について説明します。
これらの項目、それらがあなたにとってどのように重要であるか、そしてそれらがソリューションによってどのように実装されるかを見ることで、そこから秘密管理サービスの1つを選択することができます。
純粋にEC2ベースの環境の場合、最も簡単なソリューションは、AWS IAMロールとS3バケットポリシーを使用することです。このパターンのいくつかの定式化には、暗号化にはKMSが含まれ、ストレージにはS3の代わりにDynamoDBが含まれますが、どちらを使用するかという非常に説得力のある理由はわかりません。https://github.com/poise/citadelをチェックしてください。これは特にChefユーザーを対象としていますが、基になるパターンは何でも機能します。S3から実際にダウンロードするには、独自のヘルパーを作成する必要があるだけです。