セキュアなコンテナランタイム「Kata Container」が、AWSのマイクロVM「Firecracker」をサポート。アプリごとに適切なコンテナランタイムを選ぶ時代へ

2019年2月19日

OpenStack Foundationがオープンソースで開発しているセキュアなコンテナランタイム「Kata Container」の新バージョン1.5が登場。このKata Container 1.5では、Amazon Web Services(以下AWS)がオープンソースとして公開したマイクロVM(軽量な仮想マシン)の「Firecracker」に対応しました。

セキュアな分離を実現するためにQEMUをベースに採用

もともとKata Containerは、よりセキュアなコンテナランタイムを実装するためにOpenStack Foundationが開発を開始したものです。

参考:コンテナの軽量さと仮想マシンの堅牢さを兼ね備えた新しいコンテナ実装「Kata Containers」、OpenStack Foundationが発表

一般にコンテナは、コンテナ間でカーネルを共有しつつユーザー空間だけを分離することで、軽量で高速な環境を実現してきました。しかしこれは一方でコンテナ間の分離レベルが低いという課題を抱えていました。

Containers in Cloud Today

Kata Containersはコンテナの軽量さを保ちつつ、このコンテナ間の分離レベルを仮想マシン並みの高いものにするため、カーネルの共有を行わずコンテナごとにカーネルを持つ実装を選択しています。

Kata Containers Architecture

この分離レベルを実現するための仕組みとして、Kata ContainerはデフォルトでQEMUをベースに開発が進められてきました。QEMUはエミュレータの一種であり厳密には仮想化ハイパーバイザとは異なるものですが、あるレイヤをエミュレーションによって隠蔽することで仮想化ハイパーバイザのように環境を分離する機能を提供します。

そしてKata Containers Projectは、この環境分離を実現するQEMUの部分を入れ替え可能にしようとしており、1つ前のバージョンであるKata Container 1.4では、QEMUをベースに機能を絞り、インテルの64ビットCPUやARMに特化し、性能や安定性を優先させた「NEMU」をサポートしました。

Kata Container 1.5でAWSのFirecrackerをサポート

そしてQEMU、NEMUに続いてKata Containerの高度な分離レベルを実現する入れ替え可能なコンポーネントとして、AWSがオープンソースで公開したマイクロVMの「Firecracker」のサポートをバージョン1.5で実現したわけです。

Firecracker fig1

FirecrackerはAWSが昨年、2018年11月にイベント「AWS re:Invent 2018」で発表しました。

Firecrackerは、コンテナ用マネージドサービスであるAWS Fargateや、コンテナを用いたサーバレス環境であるAWS Lambdaのようなマルチテナントのコンテナ環境のために開発された仮想化技術です。

少ないメモリで迅速に起動し、高い分離レベルを実現するハイパーバイザとしてQEMUの代替を目指して開発されたと説明されています。

Kata ContainerでFirecrackerをサポートするため、Kata Containerの開発チームとFirecrackerの開発チームはミーティングを行うなどで協力したことが、AWSのブログで報告されています

コンテナごとに適切なセキュリティを選択できるように

Kata Containerは、コンテナランタイムの分離レベルを担う部分を選択可能にしました。これにより、コンテナごと、アプリケーションごとに適切なセキュリティ実装のコンテナランタイムを選択できるようになると、Kata Containerのブログで示されています。

例えば下記の図では3つのPHPアプリケーションがコンテナで実行されていますが、左側のコンテナは通常のruncによって実行されており、真ん中はKata ContainerとFirecrackerの組み合わせで実行中。いちばん右はKata ContainerとQEMUの組み合わせで実行されています。

fig

これまでコンテナランタイムといえばDockerがほぼ唯一の選択肢でしたが、昨年からGoogleのgVisorや今回のKata Containerなど、おもにセキュリティを軸にした複数のコンテナランタイムが登場してきました。

今後はアプリケーションごとにメモリ消費量や性能、成熟度、セキュリティ要件などに合わせて、適切なコンテナランタイムを使い分けて行く時代になりそうです。

あわせて読みたい

AWS Kubernetes コンテナ型仮想化 OpenStack




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本