TechLunch

The free lunch is over.

コンテナセキュリティの利点と課題

Container Journalの記事で、コンテナセキュリティの利点と課題が3つずつ紹介されています。それぞれについて私の見解を述べたいと思います。

課題

Containers are complex.

アプリケーションエンジニアにとってインフラレイヤは基本的にブラックボックスであり、今までの経験を活かしてセキュリティを考慮した設計をする必要があります。コンテナという馴染みのないレイヤが増えたことにより、必要以上に複雑に感じてしまっていると私は思っています。 VMと同様に、コンテナ導入が一般的になれば、複雑さもある程度解消されていくのではないかと思っています。

Lack of isolation.

本質的にコンテナとVMではisolationのレベルが異なります。時折「コンテナはVMよりもセキュアじゃないから使えない」という指摘をしてくる方もいますが、コンテナとVMは全く別物ですので、要件を踏まえた上で、コンテナを使うかどうか議論すべきでしょう。

Ecosystem complexity.

今でこそ、オーケストレーターはKubernetesデファクトとなっていますが、以前はオーケストレーターでさえ、Swarmkit, Kubernetes, Cattleなどさまざまなものが乱立していました。今後もしばらくはこの状態が続くのではないかと私は思います。 目利きに自身がない場合は、垂直統合されたソリューションを買ってくるのが、最も確実だと思います。

利点

Immutable infrastructure.

コンテナの利点の一つにアップデートのしやすさが挙げられます*1。必然的にセキュリティパッチも即座にあてることができます。レガシーなシステムだとセキュリティパッチをあてるのにも1ヶ月かかることがありますから。

Fast updates.

上とほぼ同じですが、コンテナ化するとはマイクロサービスアーキテクチャを選択することになりますので、小さいアプリケーションを独立して即座にアップデートすることが可能となります*2

Open ecosystem.

コンテナ界隈には多種多様なOSSが存在しています。腕に自身のある会社であれば、これらを有効活用して、迅速に自分たちのサービスを開発することが可能となります。

コンテナは、今後一般的に使われる技術になるのは間違いないですし、これらの課題に対するベストプラクティスも徐々に確立されていくと、私は思っています。

*1:アプリケーションをコンテナ化するということは、アップデートしやすいアプリケーションを設計するということでもあります。

*2:もちろん、そういったアプリケーションを設計することが困難な課題ですが。