LinuCレベル3 セキュリティスペシャリスト 堅牢なコンテナ設計 問3
堅牢なコンテナ設計/Rootless モードUIDが1000のユーザーaliceについて、/etc/subuid に alice:100000:65536 と設定されている。aliceがRootlessモードのDockerで起動したコンテナの中で、UID 1として動作するプロセスは、ホスト上ではどのUIDとして扱われるか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「堅牢なコンテナ設計」に対応。実際の試験問題ではありません)
- A100000
- B1000
- C100001
- D1
正解: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等のシステムユーザー)になることはありません。