Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

KubeCon 報告:コンテナランタイムやFirecrackerの話題ひととおり振り返ってみよう

5,860 views

Published on

Docker Meetup Tokyo #27での発表資料です。
KubeCon+CloudNativeCon 2018 NAで挙がったコンテナランタイムおよびFirecrackerに関する話題を網羅的に振り返りました。

コンテナランタイムは今、群雄割拠の様相を呈し盛り上がりを見せています。
KubeConにおいてもコンテナランタイムの話題を取り扱うセッションは多く開催されました。
それらセッションでは主に以下のような話題が挙がっていました。

・コンテナランタイムの歴史や標準
・Kubernetesのセキュリティとコンテナランタイム
・2018年に話題になったコンテナランタイムの紹介

本発表では、それらセッションや、場外で開催されたFirecrackerメンテナとcontainerdメンテナによるインテグレーションに関するミーティングの様子などを取り扱いました。
各スライドに、対応するKubeConのセッションへの動画URLも掲載しましたので、完全な情報を得たい場合にはそちらもご参照ください。

ぜひ以下の記事も合わせてご参照ください。
『KubeCon NA 2018のコンテナランタイムの話題ひととおり振り返ってみよう』
https://medium.com/nttlabs/kubecon2018-runtime-638037879bf1

コンテナランタイム領域の概要については、過去の発表もご参照ください。
『今話題のいろいろなコンテナランタイムを比較してみた[Docker Meetup Tokyo #26発表レポート]』
https://medium.com/nttlabs/container-runtime-d3e25189f67a

Published in: Software
  • Be the first to comment

KubeCon 報告:コンテナランタイムやFirecrackerの話題ひととおり振り返ってみよう

  1. 1. Copyright©2018 NTT corp. All Rights Reserved. 2019/1/16 日本電信電話株式会社 ソフトウェアイノベーションセンタ 徳永 航平 Docker Meetup Tokyo #27 KubeCon 報告1: コンテナランタイムやFirecrackerの話題 ひととおり振り返ってみよう
  2. 2. 2Copyright©2018 NTT corp. All Rights Reserved. 自己紹介 名前 徳永 航平 所属 NTT ソフトウェアイノベーションセンタ 年次 1年目 興味 コンテナ仮想化技術 特に、コンテナランタイム領域 勉強中
  3. 3. 3Copyright©2018 NTT corp. All Rights Reserved. 2018年のコンテナランタイム領域 Pod Containers kubelet “ - Justin Cormack, Docker ・・・ The year of choice in container runtimes セキュリティ 開発動向 ランタイム毎に特徴が異なる etc… gVisor Kata Containers runc Nabla Containers Firecracker 『今話題のいろいろなコンテナランタイムを比較してみた』 https://medium.com/nttlabs/container-runtime-d3e25189f67a ランタイムレイヤの概要は過去発表も参照ください パフォーマンス
  4. 4. 4Copyright©2018 NTT corp. All Rights Reserved. KubeCon+CloudNativeCon NA 2018 December 10 – 13, 2018 @Washington State Convention Center, Seattle, WA コンテナランタイム中心に情報収集をしてきました  KubeConのランタイムまわりの話題を網羅的に紹介します。  各セッションについては、特に印象深かった話題を扱います。 完全な内容はYoutube上のセッション動画等をご参照くださ い。各スライドに動画URLを掲載しました。
  5. 5. 5Copyright©2018 NTT corp. All Rights Reserved. 目次 Session How Standards, Specifications and Runtimes Make for Better Containers Session Session Session Session This Year, It’s About Security Getting Your Hands “Dirty” in Container Sandbox Recent Advancements in Container Isolation How Symlinks Pwned Kubernetes (And How We Fixed It) Session Session Session Session Session How to Choose a Kubernetes Runtime Intro: containerd Deep Dive: containerd Security Considerations for Container Runtime Kata and gVisor: A Quantitative Comparison Container Security and Multi-Tenancy Tales from Kata and Nabla Firecrackerの インテグレーション ミーティング コンテナランタイムまわりの歴史と標準 様々なコンテナランタイムの紹介 K8sセキュリティとランタイム 1. 2. 3.
  6. 6. 6Copyright©2018 NTT corp. All Rights Reserved. Session コンテナランタイムまわりの歴史と標準 How Standards, Specifications and Runtimes Make for Better Containers Chris Aniszczyk, The Linux Foundation/CNCF ら FreeBSD Jail 2000 2006 cgroups 2008 name spaces 2013 2014 OCI発足 2015 CNCF [Cloud Native Computing Foundation]. How Standards, Specifications and Runtimes Make for Better Containers. https://www.youtube.com/watch?v=0VPghX2vcTw ベンダロックイン無しに様々な ランタイムが機能や性能面等で競争 containerd CRI-O Pouch Containers Kata Containers Firecracker セッションでは以下のランタイムの概要も紹介
  7. 7. 7Copyright©2018 NTT corp. All Rights Reserved. 目次 Session How Standards, Specifications and Runtimes Make for Better Containers Session Session Session Session Session How to Choose a Kubernetes Runtime Intro: containerd Deep Dive: containerd Security Considerations for Container Runtime Kata and gVisor: A Quantitative Comparison Container Security and Multi-Tenancy Tales from Kata and Nabla Firecrackerの インテグレーション ミーティング コンテナランタイムまわりの歴史と標準 様々なコンテナランタイムの紹介 K8sセキュリティとランタイム 1. 2. 3. Session Session Session Session This Year, It’s About Security Getting Your Hands “Dirty” in Container Sandbox Recent Advancements in Container Isolation How Symlinks Pwned Kubernetes (And How We Fixed It)
  8. 8. 8Copyright©2018 NTT corp. All Rights Reserved. Session Kubernetesセキュリティの2つの視点 This Year, It’s About Security Maya Kaczorowski, Brandon Baker, Google コンテナ外からの脅威 DDoSやcriptomining等コンテナ 外からの攻撃。2018年は実際に 攻撃が発生。本セッションでは こ れ に 対 処 す る た め の ソ フ ト ウェアサプライチェーンまわり の 技 術 が 紹 介 さ れ た 。 コンテナ内からの脅威 外部環境 (Internet等) container escapeや共有リソー スへの不正なアクセス等コンテ ナ内からの攻撃。攻撃はまだ発 生していない。セッションでは この対策となるコンテナ隔離技 術やRuntimeClassを紹介。 CNCF [Cloud Native Computing Foundation. This Year, It’s About Security - Maya Kaczorowski & Brandon Baker, Google. https://www.youtube.com/watch?v=a03te8xEjUg
  9. 9. 9Copyright©2018 NTT corp. All Rights Reserved. Session K8s上で最小化すべき脅威とランタイム Getting Your Hands “Dirty” in Container Sandbox Ariel Shuper, Aqua Security Attack’s surface Attack’s potential Attack’s radius 暗 号 化 や 脆 弱 性 の ス キャン、sensitiveな データの削除などによ り 脆 弱 性 を 無 く す 。 権限降格や認証認可、 アクセス制御により、 攻撃者が環境内で行え る 操 作 を 制 限 す る 。 コンテナのサンドボッ クス化などで攻撃の影 響範囲を最小化。ラン タイムで対処できる。 セッションではコンテナの隔離を強めるコンテナランタイムを紹介・比較 CNCF [Cloud Native Computing Foundation. Getting Your Hands "Dirty" in Container Sandbox - Ariel Shuper, Aqua Security. https://www.youtube.com/watch?v=SJirVfrIBNY  AppArmor、SELinux、seccompを人手で使いこなすのは困難
  10. 10. 10Copyright©2018 NTT corp. All Rights Reserved. Session ランタイムレイヤの具体的な脆弱性の例 How Symlinks Pwned Kubernetes (And How We Fixed It) Michelle Au, Google, Jan Šafránek, Red Hat コンテナ起動前に、Volume内に 「/」へのシンボリックリンクを作成 hostの/data1 h o s t の / が bind mount されてしまう ① ② CVE-2017–1002101に関するセッション subPath: data1 volumeMounts: … volumes: emptyDir: {} … Kubernetesセキュリティチームの対応 実装面での話題  PodSecurityPolicyの活用  Podをnon-root実行  Volumeへのアクセス制限  コンテナのサンドボックス化 発見・報告 パッチ実装 公開 ※ github issueで報告してはいけない あらゆるフェーズでsubPathへの不正な 操作を防ぐためrace conditionとの闘い Volumeのセキュリティ担保 CNCF [Cloud Native Computing Foundation. How Symlinks Pwned Kubernetes (And How We Fixed It) - Michelle Au, Google & Jan Šafránek, Red Hat. https://www.youtube.com/watch?v=o8hQ4WFd75U
  11. 11. 11Copyright©2018 NTT corp. All Rights Reserved. Session コンテナの隔離をより強める要素技術 Recent Advancements in Container Isolation Tim Allclair, Adin Scannell, Google コンテナの サンドボックス化 V M 、 u s e r s p a c e kernel、unikernel等 の技術で隔離を強め ることでカーネル脆 弱性のリスクに対応 Time namespaces 現状のPID、mount pointなどと同様に、 時間に関する情報を namespaceとして分 離できるようにする。 Kubernetesのセキュリティに寄与する要素技術やベストプラクティスの紹介 (以下はその一部) Linux Linuxで初めてコン テナという概念を扱 う。監査システムが 各コンテナを識別で き る よ う に す る 。 container ID CNCF [Cloud Native Computing Foundation. Recent Advancements in Container Isolation - Tim Allclair & Adin Scannell, Google . https://www.youtube.com/watch?v=E_jn2UiSWww
  12. 12. 12Copyright©2018 NTT corp. All Rights Reserved. 目次 Session How Standards, Specifications and Runtimes Make for Better Containers コンテナランタイムまわりの歴史と標準 様々なコンテナランタイムの紹介 1. 3. Session Session Session Session This Year, It’s About Security Getting Your Hands “Dirty” in Container Sandbox Recent Advancements in Container Isolation K8sセキュリティとランタイム2. Session Session Session Session Session How to Choose a Kubernetes Runtime Intro: containerd Deep Dive: containerd Security Considerations for Container Runtime Kata and gVisor: A Quantitative Comparison Container Security and Multi-Tenancy Tales from Kata and Nabla Firecrackerの インテグレーション ミーティング How Symlinks Pwned Kubernetes (And How We Fixed It)
  13. 13. 13Copyright©2018 NTT corp. All Rights Reserved. Session untrusted workloadとランタイム How to Choose a Kubernetes Runtime Justin Cormack, Docker  信頼できないベンダの コード(プロプラなど)  信頼できない入力を受け 取るコード  hosting providerならす べてのコード untrusted workload向きのコンテナランタイムなどの紹介セッション apiVersion: v1 kind: Pod metadata: name: untrusted-pod spec: runtimeClassName: kata … … セッションでは、様々な低レベルランタイムが紹介された Pod毎にランタイムを指定可 Kata gVisor Nabla runc CNCF [Cloud Native Computing Foundation. How to Choose a Kubernetes Runtime - Justin Cormack, Docker . https://www.youtube.com/watch?v=OZJkwvAnLb4 ※Kubernetesと高レ ベルランタイム側で、 事 前 に 設 定 が 必 要 RuntimeClass 1.12+ alpha feature
  14. 14. 14Copyright©2018 NTT corp. All Rights Reserved. Session containerd Intro: containerd、Deep Dive: containerd containerdメンテナら containerdの拡張性と各コンポーネントの解説が中心のセッション smart client API snapshotter runtime metrics API matadata service ・・・ CRI plugin proxy plugin shim plugin ・・・ pouch containers等 Prometheus 等 kubeletクライアント  右図 はセ ッシ ョンで フォーカスされたコン ポ ー ネ ン ト の 一 部  拡張性が高く、プラガ ブルなアーキテクチャ  Firecrackerは統合の ためsnapshotterと runtimeを独自実装 CRI API CNCF [Cloud Native Computing Foundation. Intro: containerd - Mike Brown, IBM & Derek McGowan, Docker. https://www.youtube.com/watch?v=_xOxDZIjZCo; CNCF [Cloud Native Computing Foundation. Deep Dive: containerd - Derek McGowan, Docker & Phil Estes, IBM Cloud. https://www.youtube.com/watch?v=4f_2u6rIDTk
  15. 15. 15Copyright©2018 NTT corp. All Rights Reserved. Session CRI-Oとpodman Security Considerations for Container Runtime Daniel Walsh, Redhat ら “I promise to say containers rather than Docker containers.” podman デモで扱われたトピックス  kubernetesのバージョンに追従  capability操作、readonly fsやpid数 制限などのセキュリティ機能有 kubernetes CRIのミニマルな実装  client and serverモデルではなく、 fork and execモデル  Podの操作や、rootless実行も可能 docker互換の軽量ランタイム デモで扱われたトピックス など など capability read_only fs pids_limit RuntimeClass rootless user nsの uidマッピング コンテナのビルドと実行 Pod操作 CNCF [Cloud Native Computing Foundation. Security Considerations for Container Runtimes - Daniel Walsh, Red Hat . https://www.youtube.com/watch?v=HIM0HwWLJ7g
  16. 16. 16Copyright©2018 NTT corp. All Rights Reserved. Session Kata ContainersとgVisor Kata and gVisor: A Quantitative Comparison Xu Wang, hyper.sh gVisorKata Containers Pod単位のVMでコンテナを隔離。 CPU・メモリ性能やNW性能はrunc 並みに高い。ブート時間やメモリフッ トプリント、I/O性能に難があるが、 template機能やデバイスパススルー 機能で改善可。nested virt.時には ブート時間やメモリ性能が低下する。 ユーザ空間カーネルでコンテナを隔離。 多くの項目で性能が高く、ptrace modeならnested virt.の影響も少な い。NW性能に関してはkataの半分 程度と低く、実用的なアプリケーショ ン で の 性 能 比 較 で は N W 起 因 で パ フォーマンスが低い結果になった。 発表資料[1] より引用 発表資料[1] より引用 [1] https://schd.ws/hosted_files/kccna18/39/kata-containers-and-gvisor-a-quantitave-comparison.pdf;[2]CNCF [Cloud Native Computing Foundation. Kata and gVisor: A Quantitative Comparison - Xu Wang, hyper.sh . https://www.youtube.com/watch?v=WfEA--v5XpA
  17. 17. 17Copyright©2018 NTT corp. All Rights Reserved. Session Kata ContainersとNabla Containers Container Security and Multi-Tenancy Tales from Kata and Nabla Ricardo Aravena, Branch Metrics, James Bottomley, IBM 発表資料[1] より引用 発表資料[1] より引用 [1] https://schd.ws/hosted_files/kccna18/20/Container%20Security%20and%20Multi- Tenancy%20Tales%20from%20Kata%20and%20Nabla.pdf;[2]CNCF [Cloud Native Computing Foundation. Container Security & Multi-Tenancy Tales from Kata & Nabla - Ricardo Aravena & James Bottomley, IBM. https://www.youtube.com/watch?v=AgHMRJ16RAA Nabla ContainersKata Containers Pod単位のVMによりコンテナを隔離。 Linux互換でありイメージを修正無し に実行できる。コミュニティも確立さ れ て い る 。 た だ し 、 ベ ア メ タ ル か nested virtualizationが有効なVM内 で の み 実 行 す る こ と が で き る 。 unikernelによる隔離。7種のシステム コールのみを発行。HAP(=実行カー ネルコード量×バグ密度)と呼ばれる 値 が 低 く セ キ ュ ア で あ る と 主 張 。 unikernel向けにイメージを修正する 必要がある。研究プロジェクトの段階。
  18. 18. 18Copyright©2018 NTT corp. All Rights Reserved. C Linux FC agent runc VM Firecracker runtime(shim) Firecracker snapshotter snapshot Firecracker VMM KubeCon(場外)でのFirecrackerの話題 KubeConの場外 で メ ン テ ナ の ミーティング開 催(Firecracker とKataについて も 開 催 さ れ た )  AWSが開発。軽量なVM(microVM)でコンテナに隔離を施すコンテナランタイム。  qemuを用いずミニマルなハイパバイザ独自実装することで軽量高速化を志向。  KubeConの幾つかのセッションで言及されたがqemuには脆弱性が知られている。  現状では、OCIやCRIには準拠していない。  しかしKataやcontainerdとの統合によりKubernetes上で使えるようになりつつある。 Firecrackerの概要 runtime/agent devicemapperベースの snapshotterを独自実装。 ブロックデバイスとして VMにパススルーする。 containerdとのインテグレーション snapshotter runtimeを独自実装。 VMを管理するVMMと、 VM内でruncを用いてコ ン テ ナ を 作 成 す る a g e n t と 連 携 す る 。 containerdのプラガブ ルなコンポーネントを 独自実装することでイ ンテグレーションする。 インテグレーション戦略 firecrackerメンテナ. firecracker-containerd. https://github.com/firecracker-microvm/firecracker-containerd; firecrackerメンテ ナ. firecracker-containerd architecture. https://github.com/firecracker-microvm/firecracker- containerd/blob/master/docs/architecture.md; Kata Containersメンテナ. Initial release of Kata Containers with Firecracker support. https://github.com/kata-containers/documentation/wiki/Initial-release-of-Kata-Containers-with-Firecracker-support vsock
  19. 19. 19Copyright©2018 NTT corp. All Rights Reserved. まとめ Session How Standards, Specifications and Runtimes Make for Better Containers Session Session Session Session This Year, It’s About Security Getting Your Hands “Dirty” in Container Sandbox Recent Advancements in Container Isolation  OCI標準により様々なランタイムがベンダ ロックイン無しに競争できるようになった。  ランタイムレイヤではサンドボックス化は、 攻撃の影響範囲の最小化に寄与できる。  ランタイムレイヤの脆弱性は見つかっている ものの、現実世界での攻撃はこれから。  RuntimeClassを用い、トレードオフのある 様々な低レベルランタイムをPod単位で使い 分けることができるようになりつつある。  C R I - O は ミ ニ マ ル な 実 装 で あ る 一 方 、 containerdは高拡張性という特徴をもつ。  F i r e c ra c k e r は Ka t a C o n t a i n e r s と containerdそれぞれと統合に取り組み、 Kubernetes上で利用可能になりつつある。 Session Session Session Session Session How to Choose a Kubernetes Runtime Intro: containerd Deep Dive: containerd Security Considerations for Container Runtime Kata and gVisor: A Quantitative Comparison Container Security and Multi-Tenancy Tales from Kata and Nabla Firecrackerの インテグレーション ミーティング 1. コンテナランタイムまわりの歴史と標準 3. 様々なコンテナランタイムの紹介 2. K8sセキュリティとランタイム How Symlinks Pwned Kubernetes (And How We Fixed It)

×