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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  4. User Namespace

    View full-size slide

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

    View full-size slide

  6. seccomp notify

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  11. ID mapped mount

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide