過去問ドリル

LinuCレベル3 セキュリティスペシャリスト 堅牢なコンテナ設計 問3

堅牢なコンテナ設計/Rootless モード

UIDが1000のユーザーaliceについて、/etc/subuid に alice:100000:65536 と設定されている。aliceがRootlessモードのDockerで起動したコンテナの中で、UID 1として動作するプロセスは、ホスト上ではどのUIDとして扱われるか。

当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「堅牢なコンテナ設計」に対応。実際の試験問題ではありません)

正解:A

解説

Rootlessモードでは、User namespaceによってコンテナ内のUIDをホストの別のUIDへ対応付けます。コンテナ内のUID 0(root)はデーモンを起動したユーザー自身のUID(ここでは1000)に対応し、UID 1以降は /etc/subuid で割り当てられた従属UIDの範囲の先頭から順に対応します。/etc/subuid の書式は「ユーザー名:開始UID:個数」なので、コンテナ内のUID 1はホストのUID 100000になります。この対応付けの設定は、setuidされたnewuidmap・newgidmapコマンドを通じて行われます。

選択肢ごとの解説

  • A正しい。コンテナ内のUID 1以降は、/etc/subuid の開始UIDである100000から順に対応付けられます。
  • B誤り。ユーザー自身のUID 1000に対応するのは、コンテナ内のUID 0(root)です。
  • C誤り。100001に対応するのはコンテナ内のUID 2です。UID 0はユーザー自身のUIDに割り当てられるため、従属UIDの範囲は1から始まります。
  • D誤り。User namespaceでUIDが付け替えられるため、コンテナ内のUID 1がホストのUID 1(通常はdaemon等のシステムユーザー)になることはありません。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く