セキュリティ
コンテナは安全、ではない
2026年8月17日
レン
Dockerで動かしてるから、何かあってもコンテナの中だけで済むよね?

プロクラ
半分は正しいけど、半分は危ないよ。分離はされるけど、設定次第で簡単に穴が開くんだ。「Dockerを使っている=安全」ではないと考えて。

ウィルスン
…ワタシから見れば、コンテナは壁が1枚増えただけだ。その壁に扉が付いていれば、通るだけのこと。特に、親切に権限を与えてくれている場合はな。
1台のVPSに複数のサービスを同居させる
ブログ
80/443
データベース
内部のみ
検証環境
内部のみ
それぞれ独立した箱。片方を壊しても、もう片方には影響しない
1台のVPS(メモリ・CPUは共有)
分けられるのは環境だけ。メモリとCPUは同じ1台ぶんを分け合う
気をつけるところ
- コンテナ内でrootとして動かさない(専用の一般ユーザーを作る)
- 特権モードは使わない。それは分離をほぼ放棄する設定
- ホストのディレクトリを丸ごと共有しない。必要な範囲に絞り、読み取り専用にできるならそうする
- Dockerを操作する権限は、実質的にサーバー全体の管理権限に等しいと考える
- ポートの公開は必要最小限に。うっかり全体へ公開しないよう指定を確認する
イメージ(ひな形)にも注意

プロクラ
公開されているイメージをそのまま使うときは、誰が作ったものか確認しよう。中身が見えないまま実行するのは、正体不明のプログラムを動かすのと同じことだからね。公式のものや、自分で作ったものを使うのが安心だよ。
- ベースイメージは定期的に更新する(中のOSにも脆弱性が見つかる)
- イメージに認証情報を焼き込まない(イメージを見れば読めてしまう)
- 必要なものだけを含む軽いイメージにすると、攻撃面も小さくなる

レン
コンテナの中も、普通のサーバーと同じように気をつけるんだね。

プロクラ
そのとおり。コンテナは「便利に分ける道具」であって「守ってくれる道具」ではないんだ。中で動くものへの注意は、これまでと変わらないよ。
ネットワークとポートの公開

プロクラ
見落とされやすいのがここだよ。コンテナのポート公開は、サーバー内のファイアウォールより先に効いてしまうことがある。閉じたつもりが、外から繋がる状態になりやすいんだ。
- 外に出す必要がないものは、127.0.0.1 に限定して公開する
- データベースのコンテナを、外向きに公開しない
- コンテナ同士は専用のネットワークで繋ぎ、外には出さない
- 実際に外から繋がらないかを、別の回線から確かめる
認証情報の渡し方
- イメージに焼き込まない(イメージを見れば読める)
- ビルド時の引数にも残る。実行時に渡す仕組みを使う
- 設定ファイルをそのまま共有する場合、権限に注意する
- 使い終わった認証情報は無効化する

プロクラ
コンテナは「便利に分ける道具」であって「守ってくれる道具」ではない。中で動くものへの注意は、これまでと変わらないよ。

レン
壁が1枚増えただけ。ポートの公開範囲を必ず確かめる。
あわせて読みたい
- セキュリティ侵入されたサーバーに現れる兆候侵入されたサーバーに現れる兆候を、見る場所4か所に絞って解説します。壊れないまま静かに使われ続ける場合の、分かりにくい兆候まで扱います。
- セキュリティ狙われる入口を減らす:攻撃面という考え方忘れられたサービスがなぜ危険なのか、今動いているものを知るコマンド、減らせる典型例、そして入口を増やさないための記録の残し方を解説します。
- セキュリティrootで作業しない:sudoを正しく使うrootのまま作業する危険を、攻撃と自分の操作ミスの両面から解説します。sudoを付けるひと手間が確認の機会になる、という運用上の意味まで扱います。
- セキュリティ自分は書いていないコードの脆弱性自分が書いていないコードの脆弱性をどう把握するか、警告が出たときに何を基準に判断するか、こまめに更新を続けるための工夫までを解説します。