LinuCレベル3 セキュリティスペシャリスト 堅牢なコンテナ設計 問14
堅牢なコンテナ設計/Rootless モードRootlessモードのDockerやPodmanにおけるUser namespaceによる権限分離の説明として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「堅牢なコンテナ設計」に対応。実際の試験問題ではありません)
- Aコンテナ内のプロセスはホスト上でもUID 0のrootとして動作するが、seccompのシステムコールフィルタとAppArmorのプロファイルで安全性を確保している
- Bコンテナのファイルシステムへのアクセス権をPOSIX ACLで細かく制御し、ホスト側のファイルやデバイスへの不正なアクセスを防ぐ仕組みである
- Cコンテナ内のUID 0をホスト側のrootに直接対応付けることで、コンテナの中からホストのデバイスやシステムファイルを管理できるようにする仕組みである
- Dコンテナ内ではUID 0として振る舞えるが、ホスト上では /etc/subuid で割り当てた非特権のUIDに対応付けられるため、ホスト側への特権操作はできない
正解:D
解説
RootlessモードではUser namespaceを使い、コンテナ内のUID 0をホスト上の一般ユーザーの従属UID範囲(/etc/subuidで設定)に対応付けます。コンテナの中ではrootとしてパッケージの導入やファイルの所有者変更などの操作ができますが、ホスト上では特権を持たない一般ユーザーのUIDとして扱われるため、ホストのデバイスやシステムファイルへの特権操作はできません。これが従来のrootfulモードとの大きな違いであり、コンテナからの脱出が起きた場合の影響を限定します。
選択肢ごとの解説
- A誤り。RootlessモードではUser namespaceにより、コンテナ内のUID 0はホスト上ではrootではなく /etc/subuid で割り当てた一般ユーザーのUIDに対応付けられます。
- B誤り。RootlessモードのUser namespaceはUID/GIDの対応付けによる権限分離であり、POSIX ACLの仕組みとは異なります。
- C誤り。RootlessモードのUser namespaceはコンテナ内のUID 0をホストのrootに対応付けるのではなく、/etc/subuidで割り当てた非特権UIDに対応付けます。
- D正しい。User namespaceによりコンテナ内のrootはホスト上では特権を持たないUIDとして扱われ、ホスト側の資源への影響が制限されます。