互いの API エンドポイントを使用する 2 つの Docker コンテナーをリンクしました。これらの API エンドポイントはシークレットによって保護され、コンテナーの起動時に生成されます。これらのサービス間でこれらの秘密を静的なもの (ハードコーディングなど) を行わずに安全に共有する方法を探しています。これらのサービスは を使用して作成およびリンクされ、環境変数を使用してシークレットをオーバーライドすることができます。ただし、この動作は本番環境では推奨されません。docker-compose
私の場合、これらの秘密を配布する最も安全な方法は何ですか?
私が検討したこと:
- これらのシークレットをファイルとして保存する中央データ コンテナーを使用します。その後、クライアントはこのコンテナーにリンクし、ファイル内のシークレットを検索できます。
このアプローチの大きな欠点は、コンテナーが同じノードで実行されるように制限されることです。
docker-compose
コンテナーをデプロイする前に、これらのランダムなシークレットがハードコーディングされたファイルを生成し ます。
このアプローチの欠点は、単純にdocker-compose
ファイルを使用することはできず、bash スクリプトに限定して、これらのシークレットと同じくらいミッション クリティカルなものを生成することです。これは、ソリューションが秘密の変更に動的に適応できる必要があるという私の付記にも従わないでしょう。
サイドノート
最終的には、ソリューションが秘密の変更にも動的に適応できるようになることを望みます。たとえば、コンテナに障害が発生すると、コンテナは自動的に再起動し、新しいシークレットも生成されます。