マイクロサービスとクラウドは事です。誰もが話して、書きます。個人的に私はこのトピックについて多くのことを考えています:これがどのように恩恵を受けるために利用できるのでしょうか?可能な課題は何ですか?どのようにこれは日々の開発をスピードアップすることができますか?すべてを管理する方法は? 数日後に気になる質問は、「マイクロサービス/クラウド環境での秘密の管理方法」です。マイクロサービス/コンテナ/クラウド環境で秘密を管理するにはどうすればいいですか?
150人のソフトウェアエンジニアとさまざまな製品を持つさまざまなチームを持つ企業を想像してください。各チームはソフトウェアを作成しており、あらゆるサービスにはさまざまな量の秘密(APIキー、パスワード、SSHキーなど)が必要です。 "古いファッション"のやり方は、いくつかの設定ファイルをini/yaml/txt形式で作成し、それを読むことでした。 12ファクターのアプリは言う:それは、envヴァースでそれを行う。
Env varsはマシンごとに設定でき、設定ファイルもそこに置くことができます。 これは、マシンがいっぱいで、いくつかのシステム管理者によって導入が行われた場合に機能します。 一般的なルールの1つは、「秘密をGitリポジトリに保存しない」ということです。
新しい世界が登場しました。 チーム自身が作成するアプリケーションは、これまで責任を負いません。 チームによって展開され実行される必要があります。 したがって、当社はコンテナとセルフサービスの方法(例:Mesos and Marathon or Kubernetes)に移行しています。
もちろん、Dockerfilesもenv varsを設定できます。そして、はい、ビルド中にDockerコンテナにあなたの設定ファイルを追加することができます。 これで誰もが(他のチームなどの)秘密にアクセスできます。誰もこの秘密を誰が使用しているかを知っておらず、危険なことをしています。
Dockerfilesもバージョン管理したいと考えています。また、Marathon上で実行したいアプリケーションは、バージョン化(Gitなど)する必要があります(REST APIによって適用されます)。どこのコンテナ/アプリの秘密をどこに保管して管理するのですか? SwarmとMachine(Dockerの場合)、MesosとMarathon(Dockerでも使える)、Kubernetesのようなスケジューラフレームワークでは、あなたのアプリケーションがどこで実行されているのかわからないからです。これは複数のマシンでスケジュールされます。 このツールのほとんどは認証されていません(デフォルトではもちろんNginxのプロキシなどで追加できます)。
秘密を管理する1つのアイデアは、Vaultのようなツールを使用しています。しかし、私はアプリで "ネイティブ"サポートを見たことはありません。 Blackboxも同様です。そして、私は設定管理がこれを解決する方法を知らない。私はシェフが暗号化されたデータバッグをサポートしていることを知っていますが、シェフを使ってDockerコンテナをセットアップ/構築することはできません。
マイクロサービス/コンテナ/クラウド環境に複数のエンジニアを持つ複数のチームの秘密をどのように管理していますか?
おそらく、これを行うための業界標準である「コミュニティーの方法」がありますか?このような「未解決の質問」は申し訳ありません。このようなことについて議論するために、StackOverflowネットワークに正しい場所がありますか?または私はここで間違っていますか? – Andy
ああ、私はこの木の森を逃したと思う。ここでの実際の質問とは対照的に、あなたが何をしているのかについて多くの騒ぎがあります。あなたはマイクロコンテナの秘密を管理しようとしています。質問をクリーンアップして明示的に*できますか?最初のスキムは、それが意見に基づくように読まれました。 – Makoto
私はここに誠と同意します。彼の質問を明確にするために@Andyに忠告します。今のところ、この質問に従うのは難しいですが、そこに隠れている疑問があります。 – Chris