コンテナが攻撃されたらホストも危ないの?――クラウド利用時の「コンテナセキュリティ」の基礎知識親子の会話から学ぶクラウドセキュリティ(終)

親子の会話で出てくるような素朴な疑問点から、クラウド環境における情報セキュリティの技術を学習する連載。最終回は、クラウドでコンテナを使用する際のセキュリティの基礎知識について解説します。

» 2020年12月22日 05時00分 公開
[青山桃子株式会社日立ソリューションズ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 親子の会話で出てくるような素朴な疑問点から、クラウド環境における情報セキュリティの技術を学習する本連載「親子の会話から学ぶクラウドセキュリティ」。

 初回は、クラウドを始める前に覚えておきたいセキュリティの基礎知識、第2回はネットワーク関連セキュリティ、第3回はセキュリティの運用・監視、第4回は管理アクセスに関する内容、第5回は、クラウド環境での脆弱(ぜいじゃく)性検査や攻撃検知などについて解説しました。第5回では、ついに親子のシステムが完成しました。

 最終回は、クラウドでコンテナを使用する際のセキュリティの基礎知識について解説します。

コンテナって何?

コンテナってのが良いよって友達が言ってたんだけど、コンテナって何?


仮想化技術の一つね。仮想マシンのように、アプリケーション用の独立した環境を作るんだけど、リソースを共有することで、より軽量な仕組みになっているのよ。


うーん。具体的には。どういう仕組みなの?


そうね、大まかには、仮想マシンは仮想環境にOS(オペレーティングシステム)が乗っているけど、コンテナは仮想環境にアプリケーションが乗っているとイメージするといいわよ。


 コンテナとは、アプリケーションの開発、実行、提供などをするために標準的に必要なものを1つにまとめたものです。コードそのものはもちろん、アプリケーションに必要なライブラリや設定などの環境がひとまとまりになっており、さまざまな実行基盤の上で同じアプリケーションを容易に展開することができます。

 コンテナは仮想化技術の一つで、仮想マシンとよく比較されます。仮想マシンの主な構造としては、まず物理的なサーバ上にハイパーバイザー(仮想OS)がインストールされます。その上に仮想的なハードウェアが用意され、ゲストOSをインストールした個々の仮想マシンとなります。実行するアプリケーションは、各ゲストOS上に、物理マシン同様にインストールされます。

 コンテナの場合、物理的なサーバ上にホストOSがインストールされ、その上にコンテナを実行するためのプラットフォームを構築します。各コンテナはそのプラットフォーム上で実行され、それらのコンテナ上でアプリケーションが動作します。

 コンテナや仮想マシンはホストOSやハイパーバイザー、他のコンテナや仮想マシンとはそれぞれ独立した環境になっていますが、CPUやメモリなどのリソースは共有され、全体で最適化されるような仕組みになっています。コンテナの場合は、OSレベルで仮想化しているので、カーネルや共通のライブラリなども全体で共有および最適化されることになり、よりリソースを効率良く使えるような仕組みになっています。

 コンテナ用のプラットフォームとしては「Docker」「LXC」などがあります。

コンテナ(Docker)(左)と仮想マシン(右)

※出典:Docker - What is a Container ?

 複数のコンテナを複数のホスト上で動かせるような大規模な構成の場合、オーケストレーションツールを用いることがあります。それにより、複雑なコンテナ構成を統合的に管理することができるようになります。オーケストレーションツールの例としては「Kubernetes」「Docker Swarm」などがあります。

 コンテナは、自分で一から作ることもできますが、配布されている既存のコンテナを利用して自分用のコンテナを作成することもできます。既存のコンテナは「Docker Hub」などのレジストリで配布されているものを利用できます。これらをカスタマイズするだけで簡単にアプリケーションを作ることができるのもコンテナのメリットです。もちろん、既存のアプリケーションをカスタマイズしないのであれば、配布されているコンテナをそのまま利用することもできます。

クラウド環境でコンテナを使うと、どんな構成になるの?

クラウド環境でコンテナを使うと、どんな構成になるの?


普通に使うだけでも十分便利だけど、クラウド環境ならコンテナを利用してサーバレスにすることもできるのよ。


サーバレスって、サーバがなくても動くの?


サーバの部分はクラウド基盤として管理されるのよ。各アプリケーション向けに専用のサーバが用意されるわけではないから、クラウドのユーザー側から見たら、サーバがないように見えるね。


 クラウド環境において、例えば3層構成のWebシステムの場合は、Webサーバやアプリケーションサーバ部分をコンテナに置き換えると、構築やスケーリングのしやすさといった面でメリットを生かしやすくなります。

 また、クラウド基盤側がコンテナ実行用のプラットフォームを提供している場合、サーバレスの環境でコンテナを実行することもできます。この場合、プラットフォーム側の管理は通常、クラウドベンダーの責任範囲になるので、ユーザーはセキュリティ対策などの管理の手間を軽減できます。Amazon Web Services(AWS)の場合、「AWS Fargate」を用いることで、コンテナをサーバレスで実行できます。また、オーケストレーションサービスとしては「Amazon Elastic Container Service(ECS)」「Amazon Elastic Kubernetes Service(EKS)」を利用することが可能です。

Amazon ECSを用いてコンテナを起動した例

コンテナのセキュリティはどうすればいいの?

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。