web-dev-qa-db-ja.com

マイクロサービス間で秘密鍵を分散する正しい方法

RSAなどの非対称暗号化アルゴリズムで一部のデータに署名するサービスがいくつかあります。サービスのすべてのインスタンス間でシークレット(プライベート)キーを分散する必要があります。

そのための方法をいくつか見つけました。

  • 構成としてキーを共有する(privateキーを拡散する必要がある場合、安全ではないように見えます)
  • ビルド時にアプリ/画像にキーを埋め込みます(別のキーが必要な場合はどうですか?ビルドの自動化が複雑になりますか?)
  • 特別な鍵管理サービスを使用します(どのサービスですか?)

セキュリティや自動化を損なうことなくマイクロサービス間で秘密鍵を分散させる正しい方法(または開発方法)はありますか?

6
rootatdarkstar

ビルドサーバーを使用していない場合、最も簡単なオプションは、構成ファイルに配置することです。この方法では、ソース管理に埋め込まれていません。データベースのパスワードについて考えてみてください。これらも1日の終わりには「秘密鍵」であり、一般的には構成ファイルに保管されます。サーバーにアクセスできない限り、ハッカーは直接読み取ることもできません。その場合は、とにかく秘密鍵を失うよりも大きな問題が発生します。

4
Rob Mulder

Kubernetesのようなある種のサービスオーケストレーションツールを使用する方が簡単です。Kubernetesを使用すると、シークレットをコンテナーに簡単にマウントできます。

http://kubernetes.io/docs/user-guide/secrets/

3
enzian