KubeCon + CloudNativeCon Europe 2020 Virtual レポート

執筆者 : 岩本 俊弘


概要


当初3月末にアムステルダムで計画されていた Kubecon EU は Virtual 開催に変更になり、8月17-20日の日程で行われた。 Virtual Conference のシステムは inxpo.com 製のもののようである。セッションの多くは事前録画のようであり、質問は inxpo.com のプラットフォーム上あるいは slack channel に文字で行うとセッションの最後に回答されるという流れで行われ、大きな混乱なく進行していた。

初日は day 0 と呼ばれ、Co-Located Events と KubeCon の Lightning Talks が行われるのはリアル開催のときと一緒である。以下では KubeCon と Co-Located Events の 1 つである Cloud Native Security Day について印象に残ったセッションについて述べる。

なお、今回のビデオは 9月上旬に YouTube で公開されるとのことである。

前回の北米での KubeCon とのトラック毎のセッション数の変化をグラフにすると以下になる。 採択時にはオンライン開催は想定していなかった筈なので、ほぼ同じ傾向といってよいと思う。次回は部屋割り等の制約条件がなくなるので変化があるかもしれない。

numbers of sessions
sessions

Cloud Native Security Day


発表セッションの一覧 (プレゼン資料や発表の文字起こしを含む) は以下のスケジュールから確認できる。

https://events.linuxfoundation.org/cloud-native-security-day/program/schedule/

events.linuxfoundation.org

Collection is not Detection


Microsoft Azure security architect の Sarah Young によるプレゼンである。 メルボルンで働いていたけど今は COVID のせいで NZ にいるとか自己紹介してた。

冒頭に、攻撃は dark web で買うことができて、みんな zero-day attack を気にするけど、他の攻撃はもっとずっと安い (exploit kit が月1400ドルとか、ransomware as a service のような成功報酬制のものもある) ので、zero-day ばかり気にするのではなくてバランスをみるべきであるといった話があっておもしろかった。

Security Operation で何をすべきかというのがメインの話題で、Pod, orchestrator など全てのログを収集しないといけないとか、SIEM などのツールをうまく利用しないといけないとか、Security Operation は常に行いつづけないといけないとかそんな話をしていた。

MITRE ATT&CK フレームワーク (参考: https://www.microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes/) のようなものは有用だが、各システムの Use Case を考えて Security Operation をやるようにといったことを言っていた。

Image Provenance and Security in Kubernetes


コンテナイメージの Supply Chain Attack の話である。 コンテナイメージやライブラリなどあらゆるものについて、何が入っているか、どういう脆弱性があるか、どうやったらリビルドできるとか、どう真正性を確認できるかといった質問に答えられるべきであるが、業界全体でこういった面はとても弱いと言っている。

Supply Chain Attack の例として Twilio がでてきた。Twilio の javascript SDK がセキュリティの設定されていない S3 bucket から配布されていて、攻撃者に置きかえられたという問題があった。 <script src=...> のタグに checksum を書いて攻撃を防ぐこともできたはずだがほとんどのデベロッパはそんなことを気にしていないと話していた。

docker image の真正性を確認するツールとして Notary (https://github.com/theupdateframework/notary)というものがあるが、Notary サーバを用意する必要があったりと使い勝手に難があったので Notary v2 を仕様策定中とのことであった。

イメージのビルドに使ったソースコードのバージョン等の情報をイメージに記録するべきで、image annotation は OCI で定義されているけどツールがまだサポートしてないので今は label を使うしかないと言っていた。 また reproducible (バイナリレベルで再現できる) コンテナビルドはあるとよいものであるがいろいろ難しいとか、admission controller とか OPA を使って container image scanner で脆弱性のあるコンテナは deploy されないようにできるといった話、そして grafeas.io や trow.io なども紹介していた。

Q&A では、helm chart の image を書きかえずに (用意されたセキュアな registry に) redirect みたいなことができないかといった質問があり、そういうことをやるにはクライアントコマンド (主に docker) にも手をいれる必要があって急にはできないだろうと答えていた。

New Paradigms for the Next Era of Security


80年代から10年ずつに区切ってセキュリティの状況の歴史を説明していた。 2020年代は、脆弱性が常に現れてくるので resiliency が大事であると言っている。

攻撃のインパクトを抑えて復旧を簡単にするために必要な考え方が DIE で distributed, immutable, ephemeral の略である。それに対する古い構成が CIA (confidential, integrity, availability) だと言っている。 それぞれが最近良く言われる cattle と pets に対応し、uptime と server 数を縦軸と横軸にとってグラフにすると L 型カーブになって、pets と cattle の境目がどの辺かとかいった話をしていた。

具体的な話があんまりでてこなくて、pets (CIA) をやめて cattle (DIE) にするのが解であるといった結論であった。 Slack を見ていると評判のよいセッションであったが、data に関して DIE をやるには技術がまだ成熟していないといったコメントもあった。

KubeCon


発表セッションの一覧 (プレゼン資料や発表の文字起こしを含む) は以下のスケジュールから確認できる。

https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/program/schedule/

events.linuxfoundation.org

キーノート


リアル開催では巨大なホールに集まってお祭り感のあるキーノートであるが、Virtual では会場からの笑い声がきこえるわけでもなくちょっと寂しいところではある。

旅行コストや家族の事情で物理的に参加することが難しい人もいるだろうから今後のイベントではリアル開催されるようになっても Virtual 参加できるようにするという趣旨の話が初日にあった (今後のイベントには "Virtual Component" が付随すると言っていた)。

CNCF projects update では、TiKV (https://tikv.org) に勢いがあるとか、jaeger (https://www.jaegertracing.io/) は Grafana 7 と統合されたといった話をしていた。いつもはいくつかのプロジェクトの人が壇上に呼ばれていたが、今回はそれはなかった。

Kubernetes Updates では 1.18 の新機能である Storage, Scheduling, HPA, kubectl alpha debug, Node Topology Manager (beta) などを掛け足で紹介していた。 1.19 で cgroup v2 support が始まるとも言っていた。

IBM Garage の Holly Cummins 氏は気候変動の話をしていた。 aviation のエネルギー消費が 2.5% なのに対し、datacenter が 1-2% で決して少ない量ではない。その内いくらかは Kubernetes で、クラスタが乱立することによる control plane overhead や、namespace 分離がいまいちだから別々のクラスタを立てたくなるとか、動いているけど何の役にも立っていない zombie workload が無視できないとか、いろんな話をしていた。開発者ならクラスタの利用効率を上げるために multi-tenancy を改良したり、zombie を見つけて除去するツールを作るべきだし、ユーザも使いかたで協力できるといったまとめをしていた。

一般セッション (セキュリティ関連)


Notary v2 Introduction and Status Report

maintainer track のセッションである。 Notary はコンテナを署名するためのもので、TUF (https://theupdateframework.io) とおなじ仕組みを使っている。

Supply Chain Attack の例として notpetya などが例として挙げられていた。notpetya ではビルドサーバがやられて署名されたマルウェアが配布されて損害額の見積りは100億ドルであると言っていた。

v1 は registry と別にサーバを立てないといけないとか、usability に問題があったり、分かりにくかったり、セキュリティ上も問題があって v2 を作っているとのことである。去年の秋の KubeCon NA から始められて、現在は community briefing の段階で次の KubeCon でデモをやる予定とのことである。

必要な機能をコミュニティで詰めている段階でコーディングはこれからという感じだった。

Uncharted Territories: Discovering Vulnerabilities in Public Helm Charts

冒頭に CNCF プロジェクト内の Sandbox とか Incubating は security audit 通ってないから、リスク許容度が低いならそれらを使うのは避けたほうがよいと話している。なお Helm は Graduated で security audit も通っている。

Helm Chart のうち Community のガイドラインを満たしているものを Stable と呼ぶようである。 Chart の container image 経由の脆弱性についての発表である。

脆弱性を検出するツール snyk-labs/helm-snyk (https://github.com/snyk-labs/helm-snyk) の紹介もしていた。発表者も snyk で働いているようで、仲間が作ったツールであると言っていた。以下の調査もこのツールを使って行ったようである。

去年の10月の調査時点で、Stable Helm Chart (277個) から大量の脆弱性が見つかった。188 (68%) の Chart が高レベルの脆弱性を持つイメージを使っていて、脆弱性の総計は 40,047 であったとのことである。平均的な Chart は 2 つの image を含んでいて、1 つの image は 0 から 550 個の OS パッケージに依存しているとか、どのパッケージ由来の脆弱性が多いかとか、どのタイプの脆弱性が多いかといった分析をしていた。

ちゃんと注意して使え (with open eyes) とか、設定を確認しろとか、必要ないチャートは消せといった注意をしていた。

Advanced Persistence Threats: The Future of Kubernetes Attacks

validating webhook をつっこんで secrets を抜きとる話にはじまり、 shadow api server を立てると log をとられることなく悪事ができるとか、c2bernetes (k3sを立てて kubectl で攻撃する) といった攻撃手法の説明をしていた。 これらの攻撃では必要な権限は既に得ているという前提のもとでの話である。

あとは kubelet を攻撃する話をしていた。kubelet のポート 10250 にアクセスできれば、anonymous auth でコマンドを実行したりできると言っていたが、数年前の kubeadm でも anonymous auth は無効になっているのでどの程度のインパクトがあるかは不明である。

発表資料は https://speakerdeck.com/iancoldwater/advanced-persistence-threats-the-future-of-kubernetes-attacks にある。 speakerdeck.com

一般セッション (その他)


Accelerating Drug Discovery by Competitive Cooperation Through Open Source

melloddy project (https://www.melloddy.eu/) というものがあって、製薬会社の薬の探索を速くするとか話していた。 機械学習のフレームワークのような製薬会社間の競争と関係ない部分を共同開発するというならまあ分かるし、そういう話もしているのだがどうもそれだけではないようである。

Hyperledger で model を共有させる絵がでてきたが、製薬会社のデータ等を共有したりはしないようである。 製薬会社間の computing resource は完全に別であると言っていた。

製薬会社が偽のラベルつきデータを流したらどうするんだという質問があって、どうやって検出するかは考えてると答えていたが難しい問題ではあるらしい。

Virtual Cluster - A Practical Kubernetes Hard Multi-tenancy Solution

以前に KubeCon で聞いたものが動くようになっていた。 テナント毎に master を用意して、裏で supermaster (ユーザは意識しない) が変換して、共用の worker で複数テナントのコンテナを動かすというマルチテナンシーの実装である。 録画してあったデモが再生できないと言っていて、録画でもそういう罠があるのかと思った。

multitenancy WG でやっていて conformance test もほとんど通っているとのことであった。

data plane の tenant isolation はどうなってるのか (network solution はいろいろありすぎで一概に答えられない) とか、End User はいるのか (現在は内部プロジェクトで使っているだけ) といった質問があった。

Production Multi-node Jobs with Gang Scheduling, K8s, GPUs and RDMA

GPU を 256 個とか同時に使って学習をやりたいという問題設定である。DGX-1 みたいなものを RDMA のできる SR-IOV NIC で繋いでジョブを並列実行させる。

ジョブは mpirun コマンドを使って実行するとか、ジョブ実行のため MPI operator を使うとか話していた。MPI operator は Kubeflow にあるとのことである。

複数 GPU を使うジョブでは全部の Pod が同時に実行されないと学習が行えないので、gang scheduler を作ったということのようである。

後半は DGX-1 100台のクラスタの話で、job に時間制限を設けてるとか scheduling dashboard でジョブを管理して運用しているといった話をしていた。

gang scheduler はまだ実験中で Open Source にはまだなっていないとのことである。

Volcano (https://volcano.sh) と比較してどうなんだという質問があり、ちょっと Focus が違うけど Volcano がどうなってるか見てみるといった回答であった。

CNCF SIG Storage – An Intro to Cloud Native Storage

CNCF SIG Storage (https://github.com/cncf/sig-storage) の説明である。 ストレージ関連のプロジェクトのレビュー (Incubation に入れるか決める) をやるチームであるというような説明をしている。

SIG では Storage Landscape White Paper (https://bit.ly/cncf-storage-whitepaperV2) というものをまとめていると言っていた。 Cloud Native 環境でどのようなストレージが使われているかや、可用性やスケーラビリティなどの特性が各種ストレージ技術でどうなってるかの比較がされている。 ストレージは block や filesystem に限らず、Vitess, etcd, TiKV のようなものもこの SIG の対象であるとのことであった。

まとめ


急な伝染病の発生により Virtual 開催に切りかえて実施された KubeCon であったが、セッションの視聴や質疑応答に関しては時差があることを除けばほとんど何も問題がないといった感じであった。

ただ、人だかりができているセッションやスポンサーブースを見て、当初予定していなかったものをチェックするといった偶然性については Virtual 開催では如何ともしがたく、人が集まることによるお祭り感がないのも本質ではないとはいえ、ちょっと寂しいものがあった。

主催者もその点については考えているようで、ドラァグクイーンとビンゴをやるというイベントなども用意されていた。 事前登録しておいたら Zoom のリンクとビンゴ用紙の画像が送られてきて、Zoom 越しで読みあげられる数字をチェックして参加した。 ビンゴに勝った人には賞品が郵送されるとのことであった。 他にも踊りとか DJ が音楽を流したりといったことをしていて、それなりに面白かった。

次回の KubeCon Virtual は 11月17日から行われる。来年については会場は押さえてあるようだが、Virtual 開催にするかどうかまだ決定していないとのことである。キーノートで発表があった通り、もしリアル開催でも Virtual で何らかの形で参加することもできるはずである。

どうにか元気で生き残ってまたどこかのイベントでお会いしましょうと記事をまとめたいところではあるが、一方で以前のように大勢がリアル参加することはもうなくなるかもしれないなあと感じ、なんとも不思議な気分である。