More Related Content
More from Kohei Tokunaga (12)
KubeCon 報告:コンテナランタイムやFirecrackerの話題ひととおり振り返ってみよう
- 1. Copyright©2018 NTT corp. All Rights Reserved.
2019/1/16
日本電信電話株式会社
ソフトウェアイノベーションセンタ
徳永 航平
Docker Meetup Tokyo #27
KubeCon 報告1:
コンテナランタイムやFirecrackerの話題
ひととおり振り返ってみよう
- 2. 2Copyright©2018 NTT corp. All Rights Reserved.
自己紹介
名前 徳永 航平
所属 NTT ソフトウェアイノベーションセンタ
年次 1年目
興味
コンテナ仮想化技術
特に、コンテナランタイム領域
勉強中
- 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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)