Dockerの設定項目「Expose daemon on tcp://localhost:2375 without TLS」についてまとめてみた
Dockerを使った開発で、以下の設定をオンにする作業があった。
作業中は意味をちゃんと理解せずにオンにしていたが、改めてしっかりと意味を理解したくなったので、まとめてみる。
※執筆時点で理解できていない部分は多く、記事後半にかけて推測が多くなってくることを断っておく
設定の意味
設定の英文を訳すると、以下の通りになる。
デフォルトでは、TLSを通してDockerに接続できる設定となっているが、この設定を切り替えると、TLSを通さずTCPでDockerに接続できるようになる。
TLSは、通信の暗号化などが可能なプロトコルである。TLSの定義は以下の通り。
TLSというセキュアな通信ができなくなるから、リモートコード実行攻撃について脆弱になると解釈している。
リモートコード実行の定義は以下の通り。
TLSが使われなくなると、認証処理などができない関係でプログラムコードが遠隔から送り込みやすくなるのであろう。
以上より、Expose daemon on tcp://localhost:2375 without TLSは基本的にオフにしておき、必要と状況に応じてオンにするというのが良いと考える。
例えば、Dockerを完全にローカルに閉じて使う場合、すなわち外部からアクセスできない環境で使う場合は、この設定はオンにしても問題ないと考える。言い換えると、公開サーバにDockerを載せる場合はオンにすべきではない?(公開サーバにDockerを乗せたことがない、そもそも乗せるケースがどれくらいあるかが分かっておらず、勉強不足…)
また、この設定は、以下説明を読むと、TLSが使えないシステムがDockerを使いたい場合に有効と読み取れる。
しかし、この設定を変更する前に、システム側でTLSを使えるようにすることを考えるのが先なのではと考えてしまう…(「TLSが使えないシステムがDockerを使いたい場合に有効」という解釈が正しければ)
他にどのような場面で有効かということについては理解できておらず、奥深さを感じる。もっと勉強しようと思った。