仮想化とは
仮想化とは、名前が示すとおり、物理的なものの仮想バージョンを構築することを意味します。データセンターの構成要素で仮想化されるものには、オペレーティングシステム、サーバー、ストレージデバイス、デスクトップなどがあります。仮想化では、アプリケーションや OS などのテクノロジーが抽象化され、基盤となるハードウェアまたはソフトウェアから分離されます。ハードウェアの仮想化では仮想マシン(VM)を構築します。VM は、「物理的な OS を搭載した物理的なコンピュータ」の代わりとして利用されます。
仮想化のメリット
仮想化ソリューションは、エンタープライズデータセンターを効率化します。仮想化されたデータセンターは、仮想化ソリューションのデプロイメントと管理の複雑さを抽象化によって解消し、モダンデータセンターに必要な柔軟性を提供します。
当然のことながら、仮想化は、電力、冷却、ハードウェアのコストの削減や環境に優しい IT 環境の構築に役立ちます。ただし、仮想化ソリューションのメリットはコスト削減のみだけではありません。組織が仮想化を推進するのには、他にも多くの理由があります。
サーバー台数の最小化:仮想化により、必要なサーバー台数を最小化できるため、サーバーが多く配置されたデータセンターで発生する熱の蓄積を削減できます。データセンターでの物理的な「混雑」が少なければ、発熱量は少なくなり、熱の放散に投じる費用と調査を減らすことができます。
ハードウェア数の削減:ハードウェアの最小化は、コスト削減のカギです。仮想化によって、ハードウェアの使用量を削減できるほか、最も重要な保守、ダウンタイム、電力を経時的に削減できます。
迅速な再デプロイメント:仮想化により、新たなサーバーを容易かつ迅速に再デプロイできます。サーバーが停止した場合でも、わずか数分で仮想マシンのスナップショットがサポートします。
容易なバックアップ:仮想化によって、バックアップははるかにシンプルになります。VM は、終日バックアップの実行とスナップショットの取得を行うため、常に最新のデータを利用できます。また、VM をサーバー間で移動させることができるため、より迅速に再デプロイできます。
コストと炭素排出量の削減:データセンターを仮想化すればするほど、必然的にデータセンターのフットプリントと全体的な炭素排出量を削減できます。データセンターのフットプリントの縮小は、地球環境にやさしいだけでなく、ハードウェア、電力、冷却コストを大幅に減らすことにつながります。
優れたテスト環境:テストと再テストを行う場合は、ハードウェアドリブン環境よりも、仮想化環境が適しています。VM はスナップショットを保持するため、テスト中にエラーが発生した場合でも前のスナップショットに戻ることができます。
ハードウェア環境を問わず、あらゆるマシンを実行:仮想化は、ソフトウェアとハードウェア間の抽象化レイヤーを提供します。これは、VM は特定のハードウェアに依存しないため、あらゆるマシンをあらゆるハードウェア上で実行できることを意味します。そのため、ベンダーロックインによる拘束はありません。
効果的なディザスタリカバリ:データセンターが仮想インスタンスに依存している場合は、ディザスタリカバリ対策への負担は極めて少なく、ダウンタイムの大幅な短縮と発生頻度の低減が可能になります。また、最新のスナップショットを利用して VM を稼働することも、マシンを別の場所に移動させることもできます。
データセンターのクラウド化:仮想化は、データセンターの「クラウド化」に役立ちます。完全に、または大部分が仮想化された環境はクラウド環境を模倣し、クラウドへの移行に向けた準備を進めることができます。さらに、VM をクラウドにデプロイすることも選択できます。
仮想化のしくみ
組織が仮想化技術を利用する主な理由の 1 つとして、ハイパーバイザを使用してハードウェアを「複製」するサーバー仮想化技術を挙げることができます。非仮想化環境において、ゲスト OS はハードウェアと連携して動作するのが一般的です。仮想化した場合、OS はまだハードウェア上にあるかのように動作し続けるため、ハードウェアがなくても期待する性能の多くを享受できます。ハードウェアパフォーマンスと仮想化パフォーマンスは、必ずしも同等ではありません。しかし、ほとんどのオペレーティングシステムはハードウェアに対する完全なアクセスを必要としないため、仮想化は依然として機能し、好まれる傾向にあります。
仮想化を利用することで、企業は優れた柔軟性と制御性を享受し、単一のハードウェアに依存する必要がなくなります。サーバー仮想化の成功により、仮想化技術はアプリケーション、ネットワーク、データ、デスクトップなど、他の領域にも広がっています。
仮想マシンとは
仮想マシン(VM)とは、仮想化技術の重要なコンポーネントです。仮想化とは、物理リソースに依存するのではなく、サーバ、ストレージデバイス、OS、ネットワークなどのコンピューティングリソースの仮想バージョンを作成することを意味し、VM はコンピュータシステムに対するエミュレーションです。基盤となるハードウェアはハイパーバイザによってコピーされ、複数のオペレーティングシステムを実行します。VM の歴史は 50 年に及びますが、リモートワークやエンドユーザーコンピューティングの進歩にともない、現在 VM の普及が広がっています。主要な仮想化スタックとハイパーバイザには、ESXi を搭載した VMware vSphere、Hyper-V を搭載した Microsoft Windows Server 2016、AHV を搭載した Nutanix Acropolis、Citrix XenServer、Oracle VM などがあります。
ハイパーバイザーとは
ハイパーバイザとは、ハードウェアとオペレーティングシステム(OS)を抽象化し、独自のメモリ、ストレージ、CPU の処理能力、ネットワーク帯域幅を持つ仮想マシンに分離するソフトウェアを意味します。各 VM の分離、VM 間の通信を可能にする機能も、ハイパーバイザーの重要な役割の一つです。
ハイパーバイザーは、ハードウェアをモデル化するために連携する以下の 3 つのコンポーネントから構成されています。
Dispatcher:VM に何をするかを指示する
Allocator:システムのリソースを割り当てる
Interpreter:実行命令を処理
仮想化の種類
データ仮想化
データの仮想化(英語ページ)は、複数のアプリケーションや物理的な場所からのデータを統合して利用できるようにするデータ管理の一種です。データの複製や移動は必要ありません。データの仮想的なビューのために、さまざまなデータベースに接続する単一の仮想抽象レイヤーを作成します。
サーバー仮想化
サーバーの仮想化とは、 1 台のサーバーの複数のインスタンスを作成することです。これらのインスタンスは 1 つの仮想環境を表します。各仮想環境内には、独立したオペレーションシステムがあり、それぞれが単独で実行できます。これにより、1 つの運用マシンで多数のマシンの処理を行うことができるため、散在するデータを増加されることなく、運用費用を節約できます。
OS 仮想化
OS の仮想かは、サーバーの仮想化に類似しています。ホストオペレーティングシステムは、Linux や Windows などの複数の独立した OS システムを 1 台のマシンで動作させるように再構成されます。これにより、複数のユーザーが異なるアプリケーションで同時に作業できるようになります。これは、OS レベルの仮想化としても知られています。
デスクトップ仮想化
デスクトップ仮想化 (VDI) は、主となるデスクトップ環境を、他のデバイイスと分離するソフトウェアの一種です。これにより、1 つのデスクトップ環境を一度に多くのマシンにデプロイできるため、時間と IT リソースを節約できます。また、仮想化デスクトップ全体への更新のデプロイメントや、システムの修正、セキュリティプロトコルの一括での追加が容易に行えるようになります。
ネットワーク仮想化
ネットワーク仮想化は、ネットワークのハードウェアとソフトウェアの機能を単一のエンティティに統合します。リソース仮想化と組み合わせることが一般的で、複数のリソースを統合し、それを個別のセグメントに分割して必要なデバイスやサーバーに割り当てます。このタイプの仮想かは、ネットワークのスピード、拡張性、信頼性を向上させます。
ストレージ仮想化
ストレージの仮想化とは、複数の小さなデバイスからストレージリソースを取りだし、1 つの大きなストレージデバイスにまとめることです。管理者は、VM や物理サーバーを介して、単一の中央コンソールから必要に応じてこのストレージを利用できます。そのために、ソフトウェアはストレージ要求を受け取り、必要な容量を持つデバイスを判断します。
仮想化を導入するメリット
クラウドライクの IT 環境の実現をめざす組織は、まず仮想化に着目する必要があります。自社のデータセンターを仮想化することにより、サーバーリソースをはるかに効率的に使用できるようになります。以前は、1 つのアプリケーション(例えば電子メールなど)ごとに 専用のサーバーが必要でした。その結果、複数のアプリケーションの処理のために多くのサーバーを配置する必要や、サーバー全体のリソースが十分に活用されないという別の問題がありました。
また、この手法はコストが高くスペースを多く消費するため非効率です。仮想化ソリューションを使用することで、IT チームは単一の仮想マシン上で複数のアプリケーション、ワークロード、OS を同時に実行できます。また、リソースの追加や削除も柔軟に行えます。仮想化により、ビジネスニーズに応じて柔軟に拡張できるようになります。需要の変動に対しても、リソースの利用状況を把握し、迅速に対応できるようになります。
仮想化のセキュリティ
仮想化は、システムを適切に設定することで、物理コンポーネントや物理システムとほぼ同等の安全性を確保できます。しかし、仮想化には物理システムのセキュリティの課題や脆弱性を解決する一方で、新たな課題やリスクも引き起こします。そのため、仮想化のメリットとリスクの両方を理解し、使用するシステムに適切な保護を施すことが重要です。物理システムと仮想化システムの潜在的なセキュリティ問題を把握することで、リスクを軽減するための適切な対策を講じることができます。
仮想化に伴う主なセキュリティ問題には、次のようなものがあります。
- ホストサーバーへの攻撃:仮想マシン(VM)は同一サーバー上にあっても互いに分離しています(詳細は後述を参照)。しかし、攻撃者がホストレベルのサーバーに侵入すると、理論的にはそのホストが管理する全ての VM にアクセスできます。さらに、攻撃者が管理者アカウントを作成し、重要な企業情報を削除・収集するリスクもあります。
- VM のスナップショット:スナップショットとは、特定時点での VM の状態を記録した画像です。多くの場合、ディザスタリカバリ用のバックアップとして、データ保護を目的として使用されます。VM の状態は常に変化するため、スナップショットは一時的な短期記録です。スナップショットを長期間保存しておくと、セキュリティの脆弱性が生じ、攻撃者がスナップショットから多くの専有データを収集するリスクが高まります。
- ホストサーバーと VM 間のファイル共有:通常、デフォルトの設定ではホストサーバーと VM 間でのファイル共有や、VM と遠隔管理ダッシュボード間でのコピー & ペーストができないようになっています。しかし、デフォルトの設定が変更されると、管理システムに侵入した攻撃者が VM から秘密データを複製したり、管理機能を悪用して VM をマルウェアに感染させたりするリスクが生じます。
- VM スプロール:VM は、開発中のテストなど、必要に応じて迅速かつ容易にスピンアップできるため、使用後に放置されることも多くあります。長期間使用されずに放置されている VM にはパッチや更新が適用されず、セキュリティリスクが高まります。攻撃者はこうして放置された VM に容易にアクセスし、システム全体に侵入する可能性があります。
- ランサムウェア、ウイルス、その他のマルウェア:物理システムと同様に、VM もウイルスやランサムウェア、マルウェアに脆弱です。現在の進化し続ける脅威状況においては、定期的なバックアップが不可欠です。
仮想化システムに必要なセキュリティ機能とソリューションを検討する際、以下の点に留意する必要があります。
ハイパーバイザのセキュリティ
2022 年に発表された記事によると、サーバー仮想化に伴うセキュリティリスクの 3 分の 1 以上(35%)がハイパーバイザに関連しています。ハイパーバイザはサーバー上で VM を実行するプログラムで、IT 部門はハイパーバーザーを使用することで柔軟に VM をデプロイし、必要なコンピューティングとネットワーキング、ストレージリソースの使用を最適化できます。しかし、複数の VM を管理するハイパーバイザは、攻撃者にとって格好の標的となります。攻撃者がハイパーバイザへアクセスすると、同サーバー上のオペレーティングシステムと全ての VM(VM に保存されているデータとアプリケーションも含む)に危険が及ぶリスクがあります。
ハイパーバイザの安全性を確保するためのベストプラクティスは以下のとおりです。
- 最新のアップデートを確認する:大半のハイパーバイザは定期的にアップデートを確認する自動化機能を備えていますが、時折手動でも確認するようにすると効果的です。
- 「シン」または「ベアメタル」ハイパーバイザを使用する:「ベアメタル」ハイパーバイザでは制御機能がサーバー上で最も攻撃を受けやすいオペレーティングシステム(OS)から抽象化されているため、一般的に他のタイプのハイパーバイザよりも安全です。OS が攻撃を受けても、攻撃者はハイパーバイザにはアクセスできません。
- ネットワークインターフェースカード(NIC)を使用しない:ホストサーバーとハイパーバイザを接続する物理的なハードウェアの使用を制限すると安全性が高まります。NIC を使う必要がある場合は、使用していないときには切断するようにしてください。そうすることで攻撃者の侵入口を 1 つ減らすことができます。
- 不要なサービスをオフにする:ゲストとホスト OS をつなぐプログラムは使わなくなったら無効にすべきです。一例として、ホストと他のユーザー間のファイル共有が挙げられます。
- ゲスト OS にはセキュリティ機能を義務づける:ハイパーバイザと接続する OS 全てに、ファイアーウォールなど一定レベルのセキュリティ機能を義務づけるべきです。
VM の分離
仮想化のメリットの 1 つは、1 台のサーバーで複数の VM をホストできる点です。各 VM は互いに分離しているため、他の VM の存在を検知すらできません。これはセキュリティ上のメリットでもあります。たとえ攻撃者が 1 台の VM に侵入しても、同一サーバー上の他の VM へ自動的には侵入できまません。VM の分離によって、管理者権限も VM ごとに分離します。それでも、物理マシンの保護と同様に、データ暗号化やアンチウイルスアプリケーション、ファイアーウォールなどを用いて各 VM を保護することは重要です。
VM 内のあらゆる要素を分離させることも重要です。ユーザーインターフェースに必要ない要素をサブネットワークに隠すことで、潜在的な攻撃者がそれらの要素のアドレスを簡単に見つけたりアクセスしたりできなくなります。
ホストのセキュリティ
ホストサーバーへ攻撃を受けるリスクを減らすために、リソースの使用及び制限の割合を詳細に設定できます。例えば、VM が常に利用できるコンピューティングリソースを、15% 以上、25% 未満に設定することができます。。そうすることで、サービス拒否(DoS)攻撃などの攻撃を受けている VM が大量のリソースを消費し、サーバー上の他の VM に悪影響を及ぼすことを防ぎます。
VM のセキュリティ
各 VM はファイアウォールやアンチウイルス、暗号化、その他のセキュリティソリューションを利用して常に保護する必要があります。保護されていない VM は、攻撃者によってシステムへの侵入に利用され、パブリックアドレス空間やプライベートアドレス空間がスキャンされる恐れがあります。また、同一ホスト上の他の保護されていない VM も容易に攻撃される可能性があります。
VM エスケープ攻撃
VM エスケープとは、よくあるシステムエクスプロイトの 1 つで、攻撃者が VM からハイパーバイザへ侵入するために使われます。VM エスケープ攻撃では、攻撃者は脆弱な VM に対してコードを実行して不正なオペレーティングシステムを作動させ、VM の境界を越えて(エスケープして)ハイパーバイザへ直接接続しよう指示します。VM エスケープ攻撃によって、悪意のある行為者がホストサーバーの OS や同ホスト上の他の VM にアクセスできます。VM エスケープ攻撃のリスクを最小化するために、専門家は次のことを推奨しています。
- VM ソフトウェアのアップデートとパッチを適用する。
- リソース共有は必要不可欠な場合のみに制限する。可能な限り共有を制限し、必要でないときは共有をオフにする。
- 新しいアプリは新たな脆弱性をもたらすため、ソフトウェアのインストールを制限する。
リソース共有
VM 間やゲスト間、あるいは VM とゲスト間でリソースを共有するとシステムに脆弱性が生じます。共有フォルダや共有ファイルは、ゲストを侵害してシステムに侵入した攻撃者にとって格好の標的となります。不要なときには共有をオフにし、ホストとリモートユーザー間のコピー & ペーストも無効にすることをお勧めします。
管理インターフェース
ネットワークを保護するために、管理 API の分離を推奨する専門家もいます。専門家によると、インフラ管理アプリだけでなく、オーケストレーション機能もサービスから分離する必要がありあます。API は小型の制御プログラムであるため、攻撃者の標的になりがちです。
マシンをクラウド上で仮想化する場合、ETSI(欧州電気通信標準化機構)配下でネットワーク仮想化の標準化を担う ISG(Industry Specification Group)による仮想ネットワーク機能の管理(Virtual Network Functions Manager)に関する規制にできる限り準拠することが重要です。この規制では、インフラやオーケストレーションツールと接続する API について、一定のセキュリティ基準が義務づけられています。
仮想化とコンテナ化の比較
仮想化とコンテナ化は関連する概念です、しかし、アプリケーションとコンピューティングリソースを管理・デプロイに対するアプローチが異なります。
仮想化は、オペレーティングシステムとデータ、アプリケーションを物理的なハードウェアから抽象化し、コンピューティングとネットワーキング、ストレージの各リソースを複数の VM に分割します。一方で、コンテナは仮想化のサブセットで、OS レベルの仮想化と説明されることがあります。VM は、ハードウェア全体を仮想化するのに対し、コンテナはオペレーティングシステムレベルのソフトウェアのみを仮想化します。
各 VM は他の VM と完全に分離され、それぞれがシステム上で唯一のマシンとして動作します。同様に、コンテナ化されたアプリケーションもシステム上で独立したアプリケーションとして動作します。VM がお互いに隔離されて保護されているのと同じように、アプリケーションも互いに隔離されています。したがって、VM とコンテナは、リソースを分離して共通プールから割り当てるという点で類似しています。
VM とコンテナの主な違いは、仮想化する対象です。VM は、完全なオペレーティングシステムとデータ、アプリケーション、関連するライブラリ、その他のリソースを含み、1 台の VM のサイズが数十ギガバイトになることもあります。一方で、コンテナは、アプリケーションと、その依存関係のみで構成され、複数のコンテナが共通 OS とその他の制御機能を共有します。これにより、多くの分離したコンテナを、ホスト OS 上で独立してに実行できます。
VM とコンテナの主な違いは、以下のようにまとめられます。
分離:VM のオペレーティングシステム(OS)は互いに分離しているのに対し、コンテナは 1 つの OS を共有します。そのため、ホスト OS が侵害されると、全てのコンテナが同様に危険にさらされるリスクがあります。
基盤 OS:各 VM が独自の OS を持つのに対し、コンテナは共通の OS を共有します。
サポートするプラットフォーム:実質的に VM は、ホストサーバー上であらゆる OS を実行できます。例えば、Windows を実行する VM 10 台と、 Linux を実行する VM 10 台を同一サーバー上に置くことができます。これに対し、コンテナは共通 OS を共有するため、共通 OS に準拠せざるを得ません。すなわち、Linux コンテナは Linux 上で、Windows コンテナは Windows 上で実行する必要があります。
デプロイメント:それぞれの VM には機能とリソース割り当てを制御する個別のハイパーバイザが搭載されています。一方で、コンテナは、Docker のようなコンテナアプリケーションによってデプロイされ、複数のコンテナをグループ管理するには Kubernetes などのオーケストレーションアプリが必要です。
ストレージ:VM は独立した仮想ハードディスクか、複数のサーバー間で共有される単一のストレージプール(例:サーバーメッセージブロック、SMB)を利用します。一方で、コンテナは、ホストサーバーの物理的なハードディスクをストレージとして使用します。
ロードバランシング:仮想化環境では、ロードバランシングのためにフェイルオーバークラスタを使用します。フェイルオーバークラスタとは、接続されたサーバーやノードのグループで、マシンの 1 台に障害が発生した場合に冗長性を提供します。コンテナは、リソースと負荷のバランスをとるために Kubernetes のような包括的なオーケストレーションアプリケーションを使用します。
仮想ネットワーク:VM は、仮想ネットワークアダプタ(VNA)を介してネットワーク化されており、全ての VM がマスター NIC と接続しています。コンテナでは、VNA を多数の個別ビューに分割し、軽量なネットワーキングを実現します。
コンテナと VM は互いに違いがあるものの、両方を組み合わせて使用することが可能です。例えば、システムオンチップ(SoC)のデプロイメントを実験するために、VM 内のコンテナを実行すると、物理ハードウェアで試す前に仮想マシンでテストできます。
しかし現状は、どちらか一方をメインで使用するケースがほとんどです。どちらを選択するかは、必要なリソースや個別のユースケース、メリットとデメリットの比較により決定されます。
クラウドコンピューティングにおける仮想化
仮想化とコンテナ化は関連していても異なる概念であるように、仮想化とクラウドコンピューティングも関連性はありますが、同じものではありません。
クラウド環境での仮想化により、サーバーオペレーティングシステムとストレージデバイスの抽象化されたエコシステムを構築できます。ユーザーは個別の VM を利用して、ネットワーキングやコンピューティング、ストレージの中から特定のリソースの物理的なインスタンスを共有できます。このように、クラウドでの仮想化は、ワークロードの管理をより柔軟でコスト効果が高く、効率的にすることができます。実際、仮想化はクラウドコンピューティングの重要な基盤技術の一つです。
クラウドコンピューティングでは、データとアプリケーションをクラウドに保存します。一方で仮想化を利用すると、ユーザーは共通のインフラを共有できます。Amazon や Azure のようなクラウドサービスプロバイダが物理サーバーやリソース、その他のハードウェアを扱うため、仮想化とクラウドコンピューティングを組み合わせることでコストを抑えることができます。
クラウド仮想化のメリットには次のとおりです。
- 高効率で柔軟なリソース割り当て
- 生産性の高い開発エコシステム
- IT インフラコストの削減
- データとアプリケーションのへのリモートアクセス
- 高速でシンプルな拡張性
- 従量課金式でコスト効率の高い IT インフラ
- 複数の OS を 1 台のサーバーで同時サポート
仮想化の進化:これまでと将来
オペレーティングシステム(OS)の仮想化が誕生したのは、今から何十年も前のことです。この形態では、ソフトウェアを利用することで、1 台のハードウェアが複数のオペレーティングシステムを同時に実行できるようになります。メインフレームから始まったこの技術によって、IT 管理者は高額な処理能力にお金をかける必要がなくなりました。
1960 年代、仮想化と仮想マシン(VM)はタイムシェアリング性能を備えた、大きくてかさばる複数のメインフレームからスタートしました。こうしたマシンのなかでも、最も顕著な存在が IBM 360/67です。これは、1970 年代になるとメインフレームの世界の定番となりました。その後、1980 年代に仮想マシンがパソコンの中心部分となるまでに、そう時間はかかりませんでした。
しかし、仮想化の導入が主流となったのは、1980 年代後半から 90 年代初期にかけてです。IBM のメインフレーム上の VM のように、現在も一部利用されているものもありますが、かつての人気はなく、メインフレームをビジネスの必需品と見なす企業はごくわずかです。VM を主流にした最初の組織は、Insignia Solutions です。Insignia Solutions は、SoftPC という x86 ベースのソフトウェアエミュレーターを開発しました。この成功によって、Apple、Nutanix、その後には Citrix など、より多くの組織が独自の仮想化製品を構築するようになりました。
関連リソース
まだ仮想化のために費⽤を⽀払い続けていますか?
Nutanix AHV:仮想化レイヤーのセキュリティ(英語)
エンドユーザーコンピューティング入門書
関連製品とソリューション
AHV 仮想化
Nutanixのハイパーバイザー AHVは、オンプレミスとパブリッククラウドでアプリケーションとクラウドネイティブなワークロードのVMとコンテナを強化する、モダンでセキュアな仮想化プラットフォームです。
仮想デスクトップ・インフラストラクチャ
Nutanix VDI は、パブリッククラウドやプライベートクラウドにおいて、コンピューティング、ストレージ、ネットワーク、ハイパーバイザを含むハイブリッドクラウドインフラを統合する包括的なソフトウェアスタックです。
Nutanix クラウドインフラ(NCI)
NCI は、クラウド環境を問わず、あらゆる規模のアプリケーションとデータの利用を可能にするパワフルでセキュアなクラウドインフラストラクチャーです。