SlideShare a Scribd company logo
1 of 19
Download to read offline
Copyright©2018 NTT corp. All Rights Reserved.
2019/1/16
日本電信電話株式会社
ソフトウェアイノベーションセンタ
徳永 航平
Docker Meetup Tokyo #27
KubeCon 報告1:
コンテナランタイムやFirecrackerの話題
ひととおり振り返ってみよう
2Copyright©2018 NTT corp. All Rights Reserved.
自己紹介
名前 徳永 航平
所属 NTT ソフトウェアイノベーションセンタ
年次 1年目
興味
コンテナ仮想化技術
特に、コンテナランタイム領域
勉強中
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
ランタイムレイヤの概要は過去発表も参照ください
パフォーマンス
4Copyright©2018 NTT corp. All Rights Reserved.
KubeCon+CloudNativeCon NA 2018
December 10 – 13, 2018
@Washington State Convention Center, Seattle, WA
コンテナランタイム中心に情報収集をしてきました
 KubeConのランタイムまわりの話題を網羅的に紹介します。
 各セッションについては、特に印象深かった話題を扱います。
完全な内容はYoutube上のセッション動画等をご参照くださ
い。各スライドに動画URLを掲載しました。
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.
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
セッションでは以下のランタイムの概要も紹介
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)
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
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を人手で使いこなすのは困難
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
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
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)
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
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
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
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
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向けにイメージを修正する
必要がある。研究プロジェクトの段階。
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
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)

More Related Content

More from Kohei Tokunaga

More from Kohei Tokunaga (12)

Build and Run Containers With Lazy Pulling - Adoption status of containerd St...
Build and Run Containers With Lazy Pulling - Adoption status of containerd St...Build and Run Containers With Lazy Pulling - Adoption status of containerd St...
Build and Run Containers With Lazy Pulling - Adoption status of containerd St...
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
BuildKitでLazy Pullを有効にしてビルドを早くする話
BuildKitでLazy Pullを有効にしてビルドを早くする話BuildKitでLazy Pullを有効にしてビルドを早くする話
BuildKitでLazy Pullを有効にしてビルドを早くする話
 
The overview of lazypull with containerd Remote Snapshotter & Stargz Snapshotter
The overview of lazypull with containerd Remote Snapshotter & Stargz SnapshotterThe overview of lazypull with containerd Remote Snapshotter & Stargz Snapshotter
The overview of lazypull with containerd Remote Snapshotter & Stargz Snapshotter
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
 
Startup Containers in Lightning Speed with Lazy Image Distribution
Startup Containers in Lightning Speed with Lazy Image DistributionStartup Containers in Lightning Speed with Lazy Image Distribution
Startup Containers in Lightning Speed with Lazy Image Distribution
 
Stargz Snapshotter: イメージのpullを省略してcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略してcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略してcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略してcontainerdでコンテナを高速に起動する
 
OCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するOCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰する
 
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
 
5分で振り返るKubeCon EU 2019:ランタイムとイメージの話題ダイジェスト
5分で振り返るKubeCon EU 2019:ランタイムとイメージの話題ダイジェスト5分で振り返るKubeCon EU 2019:ランタイムとイメージの話題ダイジェスト
5分で振り返るKubeCon EU 2019:ランタイムとイメージの話題ダイジェスト
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 

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)