過去問ドリル

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

堅牢なコンテナ設計/コンテナのアクセス制御と権限制御

Dockerコンテナを docker run で起動する際、--cap-add や --cap-drop を何も指定しなかった場合のLinuxケーパビリティに関する説明として適切なものはどれか。

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

正解:B

解説

Dockerは既定で約14個のケーパビリティ(CHOWN、DAC_OVERRIDE、FOWNER、FSETID、KILL、MKNOD、NET_BIND_SERVICE、NET_RAW、SETFCAP、SETGID、SETPCAP、SETUID、SYS_CHROOT、AUDIT_WRITE)をコンテナに付与します。CAP_SYS_ADMINやCAP_NET_ADMINなどの強力なケーパビリティは含まれません。これにより、コンテナ内のプロセスが通常のサーバー操作を行いつつ、ホストのカーネルやネットワーク設定を変更するような特権操作は制限されます。

選択肢ごとの解説

  • A誤り。すべてのケーパビリティが付与されるのは --privileged を指定した場合の動作です。既定では限定されたケーパビリティだけが付与されます。
  • B正しい。Dockerは既定で約14個のケーパビリティを付与しますが、CAP_SYS_ADMINやCAP_NET_ADMINなどホストに影響を及ぼす強力なケーパビリティは含まれていません。
  • C誤り。一切付与されない状態は --cap-drop=ALL を指定した場合の動作です。既定ではコンテナの基本的な操作に必要なケーパビリティが付与されます。
  • D誤り。既定のケーパビリティはDockerが定めた固定のリストであり、カーネルバージョンに応じて自動調整されるものではありません。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く