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

FreeBSD環境におけるCNI準拠コンテナネットワーキングの実現/Graduate Study

Soma
January 30, 2024

FreeBSD環境におけるCNI準拠コンテナネットワーキングの実現/Graduate Study

卒業研究

Soma

January 30, 2024
Tweet

More Decks by Soma

Other Decks in Technology

Transcript

  1. 3 先行研究: 異種OS機能連携によるセキュアコンテナ 中田らの研究 [1] 目的: コンテナの軽量さを最大限維持しつつ、OSカーネル共有に起因する    脆弱性を悪用した攻撃を回避できるセキュアコンテナの実現 [1]

    Nakata, Y., Suzuki, S. and Matsubara, K.: Reducing Attack Surface with Container Transplantation for Lightweight Sandboxing, Proceedings of the 14th ACM SIGOPS Asia-Pacific Workshop on Systems. pp. 58-64 (2023). 異種OSセキュリティ 機構によって異種OSに対 する攻撃を回避 カーネル実装の違いにより 脆弱性を回避 手法: • 異種OSとしてFreeBSDを採用 • jailと、Linuxエミュレータによる Linuxコンテナ互換実行 jail: コンテナ相当の機能を持つ FreeBSDの仮想化技術 • Linuxコンテナ互換に対する FreeBSD独自のセキュリティ機構の適用 課題: コンテナネットワーキングに    関しては未検討
  2. 6 要件1: Linuxでの細粒度なコンテナ間ネットワーク分離の実現 Network Namespace • ネットワークに関するシステムリソースの分離を行う機能 細粒度な分離のパターン New Share

    Inherit コンテナ作成時に 新しい分離 を追加 既存のNetwork Namespaceに コンテナが参加 コンテナ間で隔離を行わず、 ホストのネットワークを共有
  3. 7 要件2: Linuxコンテナネットワーキングの標準規格 Contaier Network Interface(CNI) • コンテナのネットワーク接続・削除に関する定義 • 基本的なネットワーク設定を行うコアプラグインの提供

    ADD: コンテナをネットワークに加える DEL: ネットワークからコンテナを外す CHECK: ネットワークが想定通りか確認する VERSION: サポートするCNIのバージョン情報を返す コンテナ コンテナ コンテナ version *** CNIプラグインが行う操作
  4. 8 コンテナシステムの標準的な実装 低レベルコンテナランタイム :コンテナの構築・削除やNetwork Namespaceによるネットワーク隔離 高レベルコンテナランタイム :低レベルコンテナランタイムへの命令やCNIプラグインを用いたネットワーク設定 Network Namespace コンテナ

    高レベル コンテナランタイム 低レベル コンテナランタイム コンテナ 設定ファイルによ る隔離設定 CNIプラグイン "linux":{ "namespaces":[ { "type":"network", "path":"/proc/***/ns/net" } ] } Network Namespace のファイルパスを 指定 環境変数による ネットワーク設定
  5. 9 FreeBSDにおけるコンテナネットワーキングの現状 Share vnet • Network Namespace相当のネットワーク分離機能を提供 • vnetは、jailごとにネットワーク分離をし、1対1対応のため、 Shareのネットワーク分離が不可能

    Shareの実現と Share指定方法の実現 が必要 CNIプラグイン • 基本的なネットワーク設定を行う コアプラグインのみ実装済み • Linuxと同等の操作を行うために、 高レベルコンテナランタイムから利用 高レベルコンテナランタイム制御ツール nerdctl から vnet jailに対して、最適なネットワーク設定を行う コンテナ ネットワーク 設定 コンテナ ランタイム 実行 CNI プラグイン Jail IDを指定
  6. 11 Shareのための指定手法 “freebsd”:{ “network”:{ “vnet”:{ “mode”:”share” “path”:”/var/lib/runj/jails/c1/netns” } } }

    FreeBSDのネットワーク隔離設定 既存jail内に入れ子構築するための ”mode”: “share”の追加 vnet jail指定のための ”path”の追加 /var/run/netns/netns1 c1 c2 例)既存のjailであるc1が入っているvnet jail内に、c2を参加させる
  7. 13 今後の課題 • 実現した機能の評価 ◦ Linuxのコンテナオーケストレーターである Kubernetesが 定義するネットワーク要件を満たすネットワークを構築 ◦ Linuxと同等のネットワーク構成が可能かを評価

    • 構築するネットワークのセキュリティに関する調査と制御 ◦ 現状ではネットワークのセキュリティを考慮していない ◦ FreeBSD固有のセキュリティ機構を用いた、 細粒度なネットワークアクセス制御やリソース制御機構の実装を想定
  8. 14 発表実績 • 坂口 颯麻, 鈴木 進太郎, 中田 裕貴(さくらインターネット), 松原

    克弥, 異種OS機能連携による セキュアコンテナ実現に向けたFreeBSD上でのCNI準拠コンテナネットワーキングの実現 , 情 報処理学会第64回 IOT研究会, 2024/3/12-14, 発表予定
  9. 18 Kubernetesのネットワーク定義 [2] Cloud Native Computing Foundation: Services, Load Balancing,

    and Networking, https://kubernetes.io/docs/concepts/services-networking. ((Accessedon 2024/1/25)) 1. 各Podはそれぞれ一意なIPアドレスを持ち、Pod内のコンテナはIPを共有していて、localhost 経由で相互に通信することが可能である。 2. ノード上のすべてのPodは、Pod間通信が可能である。 3. すべてのPodはクラスタ内のすべての PodとNATなしで通信することが可能である。
  10. 19 ネットワーク隔離機構 動的なリソース制限が可能な、 FreeBSD固有のセキュリティ機構 CapsicumとCasperの Linuxコンテナネットワーキング互換機構への適用を実現する • Capsicum/Casperを拡張し、ネットワーク互換機構に適用することで、 最粒度なネットワーク隔離機構を実装 コンテナ内

    アプリケーション Capsicum サンドボックス グローバルなリソース Casper プロセス リソースに対する アクセスを制限する Capsicumサンドボックス内から発行 された関数に対して 検査・代理実行を行う Casper関数 を発行 プロセスに対して、 グローバルなリソースへのアク セスを制限する