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

Linux コンテナ最近の新機能 / SosaiLT 36th

tenforward
December 14, 2022

Linux コンテナ最近の新機能 / SosaiLT 36th

総関西サイバーセキュリティLT大会(第36回)の LT 資料です。
参考となる情報にはPDF中からリンクをしていますが、資料中のリンクは Speaker Deck 上ではクリックできないので PDF をダウンロードしてご覧ください。

tenforward

December 14, 2022
Tweet

More Decks by tenforward

Other Decks in Technology

Transcript

  1. Linux コンテナ最近の新機能
    総関西サイバーセキュリティ LT 大会(第 36 回)
    加藤泰文
    2022-12-14
    1/14

    View full-size slide

  2. 総関西サイバーセキュリティLT大会、36 回の開催おつかれさまでした
    2/14

    View full-size slide

  3. 総関西サイバーセキュリティLT大会、36 回の開催おつかれさまでした
    復活を待ってます :-)
    2/14

    View full-size slide

  4. 自己紹介
     
    加藤泰文(かとうやすふみ)
    • Twitter: @ten_forward
    • LXC で学ぶコンテナ入門 -軽量仮想化環境を実現
    する技術 (gihyo.jp, 2014 年〜)
    • 「Linux Container Book (1) Namespace /
    Network 編」執筆(同人本)
    • コンテナの勉強会を主宰しています
    • 趣味でコンテナやってます。コンテナの主にカーネ
    ル周辺の実装に興味があります
    • 仕事はセキュリティの部署にいます
    3/14

    View full-size slide

  5. 本日の内容
    今日は最近の Linux に実装されたコンテナで使う新機能を紹介します。
    4/14

    View full-size slide

  6. セキュリティイベントなのにコンテナ?
    • コンテナ=コンテナ内のプロセスから他のコンテナのプロセスが見えないようにする
    • 一部のコンテナがリソースを食いつくさないように制限をかける
    • カーネルはコンテナ間で共有なので悪いことができないように各種セキュリティ機能で
    固めてる
    コンテナはセキュリティ機能で固められたプロセス
    5/14

    View full-size slide

  7. User Namespace

    View full-size slide

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

    View full-size slide

  9. seccomp notify

    View full-size slide

  10. seccomp
    システムコールに対してフィルタリ
    ングをかけられるセキュリティ機能
    で、コンテナ内で危険な操作(システ
    ムコール呼び出し)が行えないよう
    にコンテナランタイムでは一般的に
    使われている機能(現在の Seccomp
    Mode 2 は 3.5 カーネル/2012 年〜)
    7/14

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  14. ID mapped mount

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  17. まとめ
    コンテナはこのようないろいろな機能の組み合わせでできています。
    いろいろ探ってみると楽しいですよ。
    13/14

    View full-size slide

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

    View full-size slide