Slide 1

Slide 1 text

Linux カーネル 最近のコンテナ関連新機能 TechFeed Experts Night#7 〜 コンテナ技術を語る 加藤泰文 2022-11-02 1/12

Slide 2

Slide 2 text

自己紹介(1)   加藤泰文(かとうやすふみ) • Twitter: @ten_forward • LXC で学ぶコンテナ入門 -軽量仮想化環境を実現 する技術 (gihyo.jp, 2014 年〜) • 「Linux Container Book (1) Namespace / Network 編」執筆(同人本) • 趣味でコンテナやってます。コンテナの主にカーネ ル周辺の実装に興味があります • Kubernetes 知りません。コンテナといえば LXC/LXD です 2/12

Slide 3

Slide 3 text

本日の内容 • User Namespace • seccomp notify • ID mapped mount 3/12

Slide 4

Slide 4 text

User Namespace

Slide 5

Slide 5 text

User Namespace • 新しい機能ではありません(3.8 〜/2013 年) • 一般ユーザー権限でコンテナが起動で きる • ホストの root ≠ コンテナの root 4/12

Slide 6

Slide 6 text

seccomp notify

Slide 7

Slide 7 text

seccomp システムコールに対してフィルタリ ングをかけられる機能で、コンテナ 内で危険な操作が行えないようにコ ンテナランタイムでは一般的に使わ れている機能 5/12

Slide 8

Slide 8 text

seccomp notify • 非特権コンテナ内の root(ホストでは一般ユーザー)に許可される・許可されない処理 はカーネル内で指定されている(初期の User Namespace 内で権限があるか確認) • 一般的に危険とされ、許可されない処理でも、コンテナランタイム、コンテナホスト管 理者は「このコンテナにはこの処理を許可しても大丈夫」とわかっている場合がある そこで   5.0 カーネル(2019 年)で seccomp notify 導入(〜5.5 にかけて機能が充実) 6/12

Slide 9

Slide 9 text

seccomp notify 1. seccomp がシステムコールの実 行を検知 2. 検知したことをユーザー空間のプ ログラム(コンテナランタイム) に通知 3. 通知を受けたプログラムがシステ ムコール実行の可否を判断し、 カーネルに結果を通知 4. seccomp がその結果に従って処 理を行う(システムコールを実行 or 拒否) 固定的なポリシーで許可・禁止を決めるのではなく、柔軟に実行の可否が設定できるように なった。 (例)ファイルシステムのマウント、デバイスファイルの作成 7/12

Slide 10

Slide 10 text

seccomp notify をもっと知るには • 第 14 回 コンテナ技術の情報交換会@オンライン(seccomp 回) • Introduction to Seccomp(@ mrtc0 さん) • seccomp notify による安全なコンテナ実行環境(@ten_forward) • LXC で学ぶコンテナ入門「第 47 回 非特権コンテナの可能性を広げる seccomp notify 機能」 (gihyo.jp) • Seccomp Notify(brauner’s blog) 8/12

Slide 11

Slide 11 text

ID mapped mount

Slide 12

Slide 12 text

非特権コンテナの場合のコンテナのルートファイルシステム • 非特権ユーザー(例、UID=100000)で コンテナを起動する場合、ホスト上にあ るコンテナ用のルートファイルシステム はそのユーザー(UID:100000)が操作で きる(所有している)必要がある • 普通は所有権 UID/GID:0/0 だったりしま すね 9/12

Slide 13

Slide 13 text

ID mapped mount • これまで • chown • 永久に所有権が変わる • chown 前にファイルの所有権を確認す る必要がある • コスト高 • ID mapped mount • 5.12 カーネル(2021 年) (ただしファイ ルシステム側のサポートが必要) • 所有権を変更せずに、User Namespace で使うマッピングに従って、コンテナの ファイルシステムのマウントを行う 10/12

Slide 14

Slide 14 text

まとめ • コンテナを安全に使う機能が Linux カーネルに実装されてきています • たまにはコンテナがどういう仕組みで起動して、どう安全に使えるようになっているの かを考えてみるのも、充実のコンテナライフに役立つのではないでしょうか 11/12

Slide 15

Slide 15 text

以上 ご清聴ありがとうございました 12/12