Submit Search
20分でわかるgVisor入門
37 likes
22,371 views
Shuji Yamada
2018年5月28日開催 『Container SIG 2018 Summer』のスライド資料です。
Technology
Read more
1 of 34
Download now
Downloaded 54 times
1
2
3
4
5
Most read
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Most read
23
24
Most read
25
26
27
28
29
30
31
32
33
34
More Related Content
PDF
BuildKitの概要と最近の機能
Kohei Tokunaga
PPTX
本当は恐ろしい分散システムの話
Kumazaki Hiroki
PDF
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
PPTX
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
PPTX
Dockerからcontainerdへの移行
Akihiro Suda
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
PDF
Dockerからcontainerdへの移行
Kohei Tokunaga
PPTX
Docker Tokyo
cyberblack28 Ichikawa
BuildKitの概要と最近の機能
Kohei Tokunaga
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Akihiro Suda
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Kohei Tokunaga
Docker Tokyo
cyberblack28 Ichikawa
What's hot
(20)
PPTX
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
PDF
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
whywaita
PDF
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
PPTX
トランザクションをSerializableにする4つの方法
Kumazaki Hiroki
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
PDF
仮想化環境におけるパケットフォワーディング
Takuya ASADA
PDF
Linux女子部 systemd徹底入門
Etsuji Nakai
PPTX
トランザクションの設計と進化
Kumazaki Hiroki
PDF
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
PDF
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
NTT DATA Technology & Innovation
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
PPTX
Redisの特徴と活用方法について
Yuji Otani
PDF
DockerとPodmanの比較
Akihiro Suda
PDF
Docker Compose 徹底解説
Masahito Zembutsu
PDF
ARMアーキテクチャにおけるセキュリティ機構の紹介
sounakano
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
PDF
大規模DCのネットワークデザイン
Masayuki Kobayashi
PDF
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
whywaita
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
トランザクションをSerializableにする4つの方法
Kumazaki Hiroki
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
仮想化環境におけるパケットフォワーディング
Takuya ASADA
Linux女子部 systemd徹底入門
Etsuji Nakai
トランザクションの設計と進化
Kumazaki Hiroki
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
NTT DATA Technology & Innovation
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
Redisの特徴と活用方法について
Yuji Otani
DockerとPodmanの比較
Akihiro Suda
Docker Compose 徹底解説
Masahito Zembutsu
ARMアーキテクチャにおけるセキュリティ機構の紹介
sounakano
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
大規模DCのネットワークデザイン
Masayuki Kobayashi
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
Ad
Similar to 20分でわかるgVisor入門
(20)
PPTX
コンテナの基本 ~Docker実践~
Ryosuke Uchiyama
PPTX
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
Saki Homma
PDF
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
Koto Shigeru
PPTX
BuildKitによる高速でセキュアなイメージビルド (LT)
Akihiro Suda
PDF
Raspberry Pi用のコンテナをクラウドでビルドする方法
Shunsuke Kikuchi
PPTX
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
Saki Homma
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
PDF
Hajimete k3s agenda_201008
Junji Nishihara
PPTX
サーバーレスで ガチ本番運用までやってるお話し
Akira Nagata
PPTX
Rootlessコンテナ
Akihiro Suda
PDF
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Yahoo!デベロッパーネットワーク
PPTX
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
Akihiro Suda
PDF
VagrantユーザのためのDocker入門
Masashi Shinbara
PDF
Hajimete k3s agenda_200730
Junji Nishihara
PDF
Windows Server 2016でコンテナを動かしてみた
Takashi Kanai
PPTX
Introduction of Rancher at OSC Tokyo 17 Spring
Go Chiba
PDF
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Takashi Kanai
PDF
Kubernetes Cluster Adminやってました #con_rider
Yahoo!デベロッパーネットワーク
PPTX
Web サービス インフラの近未来
Syuichi Murashima
PDF
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Takashi Kanai
コンテナの基本 ~Docker実践~
Ryosuke Uchiyama
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
Saki Homma
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
Koto Shigeru
BuildKitによる高速でセキュアなイメージビルド (LT)
Akihiro Suda
Raspberry Pi用のコンテナをクラウドでビルドする方法
Shunsuke Kikuchi
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
Saki Homma
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
Hajimete k3s agenda_201008
Junji Nishihara
サーバーレスで ガチ本番運用までやってるお話し
Akira Nagata
Rootlessコンテナ
Akihiro Suda
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Yahoo!デベロッパーネットワーク
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
Akihiro Suda
VagrantユーザのためのDocker入門
Masashi Shinbara
Hajimete k3s agenda_200730
Junji Nishihara
Windows Server 2016でコンテナを動かしてみた
Takashi Kanai
Introduction of Rancher at OSC Tokyo 17 Spring
Go Chiba
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Takashi Kanai
Kubernetes Cluster Adminやってました #con_rider
Yahoo!デベロッパーネットワーク
Web サービス インフラの近未来
Syuichi Murashima
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Takashi Kanai
Ad
More from Shuji Yamada
(17)
PDF
GitHub Enterpriseの導入事例と実践GitHub Actions
Shuji Yamada
PDF
ここにハマった!Dockerコンテナホスティング「Arukas」の裏側
Shuji Yamada
PDF
現場!実物!実践!マルチクラスタを運用するときの課題とコツ
Shuji Yamada
PDF
Arukas meet Mesos/Marathon
Shuji Yamada
PDF
10分でわかる Cilium と XDP / BPF
Shuji Yamada
PDF
会社にGitHub Enterpriseを導入してみた話
Shuji Yamada
PDF
10分でわかる marathon-lb
Shuji Yamada
PDF
コンテナのユースケース考察
Shuji Yamada
PDF
Kanban 301「プロセスマネジメント(成長エンジン)」
Shuji Yamada
PDF
Kanban 101「明日から使えるかもしれないカンバン」
Shuji Yamada
PDF
Velocity - Lean, Velocity and Anti-Fragile 「ボトルネックを飼い慣らせ!」
Shuji Yamada
PDF
自動テストによって生み出される価値
Shuji Yamada
PDF
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
Shuji Yamada
PDF
お手軽OpenFlow試験環境 Mininet
Shuji Yamada
PDF
Sensu -The Next Generateion Monitoring Framework-
Shuji Yamada
PDF
【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~
Shuji Yamada
PDF
2015-01-27 Introduction to Docker
Shuji Yamada
GitHub Enterpriseの導入事例と実践GitHub Actions
Shuji Yamada
ここにハマった!Dockerコンテナホスティング「Arukas」の裏側
Shuji Yamada
現場!実物!実践!マルチクラスタを運用するときの課題とコツ
Shuji Yamada
Arukas meet Mesos/Marathon
Shuji Yamada
10分でわかる Cilium と XDP / BPF
Shuji Yamada
会社にGitHub Enterpriseを導入してみた話
Shuji Yamada
10分でわかる marathon-lb
Shuji Yamada
コンテナのユースケース考察
Shuji Yamada
Kanban 301「プロセスマネジメント(成長エンジン)」
Shuji Yamada
Kanban 101「明日から使えるかもしれないカンバン」
Shuji Yamada
Velocity - Lean, Velocity and Anti-Fragile 「ボトルネックを飼い慣らせ!」
Shuji Yamada
自動テストによって生み出される価値
Shuji Yamada
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
Shuji Yamada
お手軽OpenFlow試験環境 Mininet
Shuji Yamada
Sensu -The Next Generateion Monitoring Framework-
Shuji Yamada
【Interop Tokyo 2013】 どうする?どうなる?SDN/クラウド時代の運用管理 ~データセンター、クラウド提供事業者の立場から~
Shuji Yamada
2015-01-27 Introduction to Docker
Shuji Yamada
20分でわかるgVisor入門
1.
Container SIG 2018
Summer さくらインターネット株式会社 Shuji Yamada (山田 修司) @uzyexeMay 28, 2018 20分でわかる gVisor入門
2.
Shuji Yamada • さくらインターネット所属 •
コンテナホスティング「Arukas」担当 • 以前は「さくらのクラウド」運用担当 • 好きなクラスタ Mesos/Marathon (山田 修司) Trust me. I am Engineer _(┐¦_ ε:) 2
3.
• アプリケーションをパッケージングして展開。 • コンテナはホストカーネルを共有。 •
オーバーヘッドほぼ0。 3 Build Ship Run Docker コンテナのおさらい
4.
コンテナは ホストカーネルを共有 4
5.
5 VM B VM
CVM A Server Hardware Linux Kernel Hyper Visor Bins/Libs App Kernel Bins/Libs App Kernel Bins/Libs App Kernel
6.
6 Container B Container
CContainer A Server Hardware Linux Kernel Docker Engine Bins/Libs App Bins/Libs App Bins/Libs App
7.
7 Container B Container
CContainer A Server Hardware Linux Kernel Docker Engine Bins/Libs App Bins/Libs App Bins/Libs App
8.
Docker Engine Linux Kernel 8 Container
B Container CContainer A Server Hardware Bins/Libs App Bins/Libs App Bins/Libs App
9.
• ゲストプロセスはホストカーネル上で実行。 • ゲストプロセスを十分には隔離していない。 •
単一の脆弱性で、ホストを破壊可能。 9 コンテナはサンドボックスではない Docker Engine Container B Container CContainer A Server Hardware Linux Kernel Bins/Libs App Bins/Libs App Bins/Libs App
10.
“Containers do not
contain” -Dan Walsh, 2014- 10
11.
• VMによるコンテナ隔離 • オーバーヘッドが大きい。 •
IaaS 上では、Nested Virtualization が必要条件。 • seccomp、SELinux、AppArmor • 事後防衛的(脆弱性を突かれたときだけ有効) 11 いくつかの防護策
12.
過去、コンテナにも影響した重大な脆弱性 • CVE-2016-5195 DirtyCow •
コンテナから脱獄してホストのroot権限を奪取可能 • CVE-2017-5753/5715/5754 Spectre/Meltdown • ホストのカーネルメモリ漏洩 12
13.
ルールベース・アクセス制御の特徴 13 Application Host Kernel Limited system
calls Hardware
14.
ルールベース・アクセス制御の課題 14 • 完璧なポリシーの定義は現実的には困難。 • ポリシーを過剰に設定しやすい。 •
逆にポリシーが不足することもある。 • カーネルの脆弱性は防げない。 • 他の防護策と掛け合わせた運用が不可欠。 Application Host Kernel Limited system calls Hardware
15.
VMの特徴 • VM =
ハードウェア仮想化してゲストに提供 • VM内で動作するプロセスは完全に隔離。 • アプリケーション互換性も高い。 • 完全仮想化なら… • Meltdown/Spector にも有効。 15 Application Guest Kernel System calls VMM Virtual hardware System calls Host Kernel Hardware
16.
VMの課題 • HyperVisor +
VMM + Guest Kernel • オーバーヘッドが大きい。 • パフォーマンスが劣化。 • リソース配備の柔軟性が低下 • CPUやメモリリソースを固定的に確保。 • 他のコンテナとのリソース共有不可。 16 Application Guest Kernel System calls VMM Virtual hardware System calls Host Kernel Hardware
17.
VMの課題 • 1VM:1Container 構成は煩雑 •
エージェントの追加インストールが必要。 • 監視エージェント • サービスディスカバリ用エージェント • モノリシックなアプリ構成になりがち。 17 Application Guest Kernel System calls VMM Virtual hardware System calls Host Kernel Hardware
18.
gVisor とは • ユーザー空間で実行可能なゲストカーネル。 •
アプリケーションとホストカーネルを分離。 • およそ20万行のGo言語で実装。 • ptrace版、KVM版がある。 • Docker、Kubernetes に対応。 (runsc というOCIランタイムで提供) 18 Application gVisor System calls Host Kernel Limited system calls Hardware
19.
Docker Engine Containerd runcrunc runc
20.
Docker Engine Containerd runscrunsc runsc
21.
gVisor のパフォーマンス 21 150ms 15MB コンテナ起動にかかる時間
メモリのオーバーヘッド
22.
User Kernel Host Kernel Application Gofer (File system
proxy) Sentry (Guest Kernel) ptrace seccomp 9P runsc
23.
• ゲストカーネルのシステムコールを奪取(ptrace) • 奪取したシステムコールをフィルタ(seccomp) •
ゲストカーネルでシステムコールを命令置換(gvisor) • 無害なシステムコールが、ホストカーネルに転送。 gVisor の挙動 23 「Linuxの機能で、Linuxを実装している。」
24.
Sentry プロセス • ゲストカーネル(互換カーネル) •
空のユーザー名前空間 (User Namespace) で実行。 • ゲストのシステムコールを待ち受ける。 • seccomp でホストに転送するシステムコールを制限。 • 安全なユーザコード実行とシステムコール処理を担当。 24
25.
Gofer プロセス • ファイルシステムプロキシ •
サンドボックスを経由するファイルシステム操作を担当。 • アプリの代わりにホストのファイルをオープン。 • オープンしたファイルを Sentry に転送。 (Sentry はホストファイルに直接アクセスしない。) 25
26.
netstack • gVisor 独自のネットワークスタック •
ネットワーク通信は Sentry が担当。 • ホストのネットワークスタックからは完全に隔離。 • データリンク層のフレームは、Dockerが持つネットワー ク名前空間内にある仮想デバイスに直接書き込み。 • ネットワーク・パススルーもサポート。 26
27.
gVisor の技術的トレードオフ 27 • コンテナのセキュリティは向上 •
ホストカーネルを隠 。 • VM相当のプロセス隔離を実現。 • エミュレーションによるパフォーマンス劣化 • アプリケーション互換性が低下。 • 頻繁なシステムコールでは性能が劣化。 Application gVisor System calls Host Kernel Limited system calls Hardware
28.
• ptrace のパフォーマンスがネック。 •
将来的には、ptrace 以外のものに置き換わるかも。 • (実験的に)KVM を使用するアプローチも選べる。 28 まだまだ課題はある・・・
29.
• 約200のシステムコールをサポートしているが・・・ • 未実装のシステムコールも多い •
System V 共有メモリ(PostgreSQLが動かない…) • SOCK_RAW(Pingが動かない…) • etc… • パフォーマンス確認に使いたいベンチマークも動かない… 29 まだまだ課題はある・・・
30.
• GPUに非対応 • どのようなシステムコールが送信されるかが不明瞭。 •
バイナリBLOBなドライバはVMでの隔離がおすすめ • ルールベースのポリシーでの保護が困難。 • 脆弱性を勝手に修正できない。 30 まだまだ課題はある・・・
31.
31 ま と め
32.
• VM(ハードウェア仮想化) • リソースやプロセスを完全に隔離可能。 •
コンテナ(ネームスペース分離) • 単一の脆弱性で収容ホスト内部を破壊される。 • gVisor(ゲストカーネル、互換カーネル) • ゲストカーネルの特権を奪取されても被害は最小限。 32 まとめ
33.
Quick Start • Go
to: https://github.com/google/gvisor • Build and Install gVisor 33 $ docker run --runtime=runsc hello-world $ docker run -d --runtime=runsc -p 80:80 nginx
34.
THANK YOU!
Download