Docker の秘密は安全ですか?

Docker の秘密は安全ですか?

Docker シークレットは安全だと考えられているので、そのセキュリティ レベルについて疑問に思っていました。サービスにシークレットへのアクセスを許可すると、予想どおり、/var/lib/docker/containers/<container ID>/mounts/secretsサービスのタスクをホストしているノードのコンテナー パス ( ) に tempfs がマウントされていることがわかります。ただし、このパス内のファイルを cat して、シークレットの内容を確認することはできました。

その時点で、シークレットが構成よりも安全なのはなぜかと考えていました。私の知る限り、シークレットと構成の主な違いは、シークレットが RAM ディスクに保存されることです。構成とシークレットはどちらも raft 内で暗号化されますが、唯一の違いは、シークレットが RAM ディスク上に存在するのに対し、構成はコンテナにマウントされているときにディスク上のファイルに保存されることです。しかし、シークレットの内容を表示できる場合、本当に違いがあるのでしょうか?

答え1

残念ながら、安全であること簡単な言葉ではありません。私はむしろリスクアセスメントそしてリスク受容すべては、あなたがどれほど偏執狂なのか、どのような解決策が安全だと主張するのか、という質問に答えることです。

文書によれば、我々は持っています:

シークレットをスウォームに追加すると、Docker は相互 TLS 接続を介してシークレットをスウォーム マネージャーに送信します。シークレットは暗号化された Raft ログに保存されます。Raft ログ全体が他のマネージャー間で複製され、シークレットに対して、スウォーム管理データの残りの部分と同様に高可用性が保証されます。

秘密の可用性。コンテナあたり儚さコンテナが稼働しているノードはわかりませんが、あまり気にする必要はありません。ただし、このシークレットはコンテナが稼働しているすべての場所で利用できる必要があります。

記憶の中の秘密。秘密を記憶に留めておくことについての記述があります。ここ問題は、システムとそのメモリ管理を信頼していない場合、パスワードがメモリに保存されるだけの問題よりも、はるかに大きな問題が発生するということです。

違い。

  • ファイル内の秘密は通常、プレーンテキストで保存されます。wp-config永続的に暗号化されたままにしておき、メモリ内でのみ暗号化されていない状態にしておく方がはるかに良いでしょう。
  • 秘密は回転した

そうは言っても、達成できるほとんど同じことを、秘密のファイルを暗号化して保存することでオープンSSLそれを復号化し、暗号化されていないコンテンツをメモリに格納します。これらはすべて手動で行うことになります。

関連情報