Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Linux カーネル 最近のコンテナ関連新機能 / TechFeed Experts Night#7

tenforward
November 02, 2022

Linux カーネル 最近のコンテナ関連新機能 / TechFeed Experts Night#7

「TechFeed Experts Night#7 〜 コンテナ技術を語る」の講演資料です。
参考となる情報にはPDF中からリンクをしていますが、資料中のリンクは Speaker Deck 上ではクリックできないので PDF をダウンロードしてご覧ください。

tenforward

November 02, 2022
Tweet

More Decks by tenforward

Other Decks in Technology

Transcript

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

    1/12
  2. 自己紹介(1)   加藤泰文(かとうやすふみ) • Twitter: @ten_forward • LXC で学ぶコンテナ入門 -軽量仮想化環境を実現

    する技術 (gihyo.jp, 2014 年〜) • 「Linux Container Book (1) Namespace / Network 編」執筆(同人本) • 趣味でコンテナやってます。コンテナの主にカーネ ル周辺の実装に興味があります • Kubernetes 知りません。コンテナといえば LXC/LXD です 2/12
  3. 本日の内容 • User Namespace • seccomp notify • ID mapped

    mount 3/12
  4. User Namespace

  5. User Namespace • 新しい機能ではありません(3.8 〜/2013 年) • 一般ユーザー権限でコンテナが起動で きる •

    ホストの root ≠ コンテナの root 4/12
  6. seccomp notify

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

  8. seccomp notify • 非特権コンテナ内の root(ホストでは一般ユーザー)に許可される・許可されない処理 はカーネル内で指定されている(初期の User Namespace 内で権限があるか確認) •

    一般的に危険とされ、許可されない処理でも、コンテナランタイム、コンテナホスト管 理者は「このコンテナにはこの処理を許可しても大丈夫」とわかっている場合がある そこで   5.0 カーネル(2019 年)で seccomp notify 導入(〜5.5 にかけて機能が充実) 6/12
  9. seccomp notify 1. seccomp がシステムコールの実 行を検知 2. 検知したことをユーザー空間のプ ログラム(コンテナランタイム) に通知

    3. 通知を受けたプログラムがシステ ムコール実行の可否を判断し、 カーネルに結果を通知 4. seccomp がその結果に従って処 理を行う(システムコールを実行 or 拒否) 固定的なポリシーで許可・禁止を決めるのではなく、柔軟に実行の可否が設定できるように なった。 (例)ファイルシステムのマウント、デバイスファイルの作成 7/12
  10. 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
  11. ID mapped mount

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

    だったりしま すね 9/12
  13. ID mapped mount • これまで • chown • 永久に所有権が変わる •

    chown 前にファイルの所有権を確認す る必要がある • コスト高 • ID mapped mount • 5.12 カーネル(2021 年) (ただしファイ ルシステム側のサポートが必要) • 所有権を変更せずに、User Namespace で使うマッピングに従って、コンテナの ファイルシステムのマウントを行う 10/12
  14. まとめ • コンテナを安全に使う機能が Linux カーネルに実装されてきています • たまにはコンテナがどういう仕組みで起動して、どう安全に使えるようになっているの かを考えてみるのも、充実のコンテナライフに役立つのではないでしょうか 11/12

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