サーバー、データベース、インフラに関するトピックス
■第21話:rootlessとrootfulモードの違い(podman)
(最終更新日:2025.05.20)
(絵が小さい場合はスマホを横に)
「モードを使い分けよう」
コンテナ技術の進化に伴い、セキュリティと柔軟性を両立する運用方法が求められている。
Podmanはその中で、従来のroot権限に依存しない「rootlessモード」と、より高い権限を持つ「rootfulモード」の両方に対応する。
本節では、それぞれの特徴や使い分けのポイントについて解説し、安全かつ効率的なコンテナ運用の基礎を理解する。
1.rootlessとrootfulモードの違い
rootlessモードとは、その名の通り「root権限なしで動作するコンテナ環境」のことだ。 つまり、通常ユーザー(一般ユーザー)が Podmanを使ってコンテナを実行でき、ホスト側でroot権限を必要とする。 特徴としては、以下の通りである。
-
■特徴
- セキュリティが高い:root権限を持たないため、コンテナからホストシステムへの侵入リスクが低い
- システムに影響を与えない:ユーザーのホームディレクトリ下にネットワーク設定やボリュームが作成され、システム全体に影響を与えにくい
- 他のユーザーと完全に分離:それぞれのユーザーが独立したPodman環境を持てる
-
■制約
- 低いポート番号(1024未満)を開けない:例:80番ポートでWebサーバーを立てたい場合、rootlessではできない
- 一部のネットワーク機能に制限がある:ホストネットワークの利用や特権コンテナ(privileged mode)などが制限される
- Cgroup管理が制限される:リソース制御における一部の機能が使えないことがある(cgroup v2 使用時に特に顕著)
2.rootfulモードとは
rootfulモードは、従来のDockerと同様に、root権限でPodmanを実行する方式だ。 システム全体への影響力が大きい分、すべての機能をフルに利用できる。
-
■特徴
- すべての機能が使用可能:低ポート開放や特権コンテナの作成、NFSなどの高度なマウント機能もサポートされる
- Dockerと同等の互換性:Docker Compose などと併用する場合にも挙動が近い
-
■リスク
- セキュリティリスクがある:コンテナが何らかの方法で権限を逸脱した場合、ホストシステム全体に被害が及ぶ可能性がある
- 全体運用に影響:設定ミスやコンテナ内での暴走が、他ユーザーやシステムに影響を及ぶ
3.rootlessとrootful モードの切り替え方法
Podman v3以降では、「Podman machine」を使って簡単に rootlessとrootfulを切り替えられるようになった。 この設定は、podman machineの起動設定に影響するため、rootless/rootfulの切り替えは仮想マシンの再起動が必要だ。 下記では「現在モードの確認」「rootfulモードへの切替」「rootlessモードへの切替」のコマンドを示す。
rootlessモードとrootfulモード、どちらを選ぶべきかという点だが、以下のようにまとめられる。 開発環境やテスト用途で、セキュアに運用したい場合はrootlessにすると良いだろう。
どっちを選択するか(rootless or rootful?)
利用目的 | 推奨モード |
---|---|
開発環境・テスト用途 | rootless(セキュアで安全) |
本番運用・特権が必要なケース | rootful(柔軟性が高い) |
4.まとめ
Podman の大きな特徴の一つは、この rootlessモードのサポートだ。 セキュリティを重視する現代の運用においては、root権限を使わない運用が可能であることが非常に重要である。 とはいえ、すべての機能を活用するためにはrootfulモードも必要だ。 目的に応じて適切にモードを選び、必要に応じて切り替える柔軟な運用が理想的だ。
▼参考図書、サイト
podman
podman 公式サイト
podman desktop
podman desktop 公式サイト