JP5398309B2 - 仮想計算機システム、仮想計算機システムの通信制御プログラム及び仮想計算機システムの通信制御方法 - Google Patents

仮想計算機システム、仮想計算機システムの通信制御プログラム及び仮想計算機システムの通信制御方法 Download PDF

Info

Publication number
JP5398309B2
JP5398309B2 JP2009054383A JP2009054383A JP5398309B2 JP 5398309 B2 JP5398309 B2 JP 5398309B2 JP 2009054383 A JP2009054383 A JP 2009054383A JP 2009054383 A JP2009054383 A JP 2009054383A JP 5398309 B2 JP5398309 B2 JP 5398309B2
Authority
JP
Japan
Prior art keywords
virtual machine
virtual
transmission
access right
management table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009054383A
Other languages
English (en)
Other versions
JP2010211339A (ja
Inventor
吉章 片山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2009054383A priority Critical patent/JP5398309B2/ja
Publication of JP2010211339A publication Critical patent/JP2010211339A/ja
Application granted granted Critical
Publication of JP5398309B2 publication Critical patent/JP5398309B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Description

この発明は、1台の計算機において複数の仮想計算機が同時に動作する仮想計算機システムにおいて、各仮想計算機間の通信を制御する技術に関する。
計算機の高性能化に伴い、単一もしくは複数のプロセッサを備える1つの計算機において複数の仮想計算機(VM:Virtual Machine)が実現される。各仮想計算機では、それぞれオペレーティングシステム(OS:Operating System)が動作する。
このような仮想計算機システムにおいては、各VMは独立性が高く、あるゲストOS(VMで動作するOSのことを指す)での障害やウィルスなどの影響は、他のゲストOSに影響しない(非特許文献1,p.18参照)。また、各ゲストOSで動作するアプリケーションプログラム間の通信は、実在するネットワークアダプタをソフトウェアでエミュレートした仮想ネットワークアダプタを介して行うことができる(非特許文献1,p.98−104参照)。
ITpro編「すべてわかる仮想化大全 VMware/Virtual Server」日経BP社、2006年10月30日 David Chisnall著、日本仮想化技術(株)監訳、渡邉了介訳「仮想化技術Xen−概念と内部構造」(株)毎日コミュニケーションズ、2008年8月20日 及川卓也、藤野衛、野坂昌己、上田英邦、森裕史著「Windows NT 3.51完全技術解説」日経BP社、1996年6月20日 坂村健監修、高田広章編「μITRON4.0仕様Ver.4.00.00」(社)トロン協会 ITRON部会、1999年6月30日
従来の仮想計算機システムのVM間通信では、VMをまたぐアプリケーションプログラムの通信には、仮想ネットワークアダプタを介した仮想ネットワーク機能を利用する。そのため、仮想ネットワーク機能を介してあるゲストOSにおけるアプリケーションプログラムから他のゲストOSに対し、DoS(Denial Of Service)攻撃を仕掛けることが可能であるという課題がある。
DoS攻撃とはサーバなどの機器に対してネットワークを介した攻撃を行うことである。DoS攻撃は、ネットワークトラフィックを増大させ、通信を処理している回線やサーバの機能(プロセッサやメモリ等のリソース)を占有する。これにより、サーバで実行しているサービスの提供が不能な状態になる。
非仮想計算機システムにおけるDoS攻撃の対策としては、例えば、物理ネットワークに物理的なルータを配置し、DoS攻撃を実施してくる計算機からの通信を拒否する方法がある。しかし、仮想計算機システムにおいては、同一マシン内に存在するVMから攻撃されるため、物理的なルータを配置しDoS攻撃を実施してくるVMからの通信を拒否することができない。そのため、仮想計算機システムにおいて、DoS攻撃を防ぐことは不可能である。
この発明は、仮想計算機システムにおいて、DoS攻撃を回避可能なVM間通信方式を実現することを目的とする。
この発明に係る仮想計算機システムは、例えば、
1台の計算機において複数の仮想計算機が同時に動作し、前記複数の仮想計算機の各仮想計算機は互いに仮想ネットワークを介して通信する仮想計算機システムであり、
前記各仮想計算機は、
前記複数の仮想計算機の所定の仮想計算機から自己へのデータ送信を許可することを示す許可情報を、前記所定の仮想計算機が送信した送信データを受信する場合に送信権限テーブルに設定する送信権限設定部と、
前記送信権限テーブルに自己から所定の仮想計算機へのデータ送信を許可することを示す許可情報が前記所定の仮想計算機の前記送信権限設定部により設定されているか否かを、前記所定の仮想計算機へ送信データを送信する場合に判定する設定判定部と、
前記許可情報が設定されていると前記設定判定部が判定した場合に、前記所定の仮想計算機へ送信データを送信する送信部と
を備えることを特徴とする。
この発明に係る仮想計算機システムでは、各仮想計算機は、データを受信する場合には許可情報を設定し、データを送信する場合には許可情報が設定されているときに限りデータを送信する。そのため、各仮想計算機は、不要なデータを受信することがなく、Dos攻撃を回避することができる。
実施の形態1に係る仮想計算機システム1の構成図。 VMアクセス権管理表20の一例を示す図。 実施の形態1に係るVM3間通信方式の動作を示すフローチャート(1)。 実施の形態1に係るVM3間通信方式の動作を示すフローチャート(2)。 実施の形態2に係る仮想計算機システム1の構成図。 プロトコルアクセス権管理表24の一例を示す図。 実施の形態2に係るVM3間通信方式の動作を示すフローチャート(1)。 実施の形態2に係るVM3間通信方式の動作を示すフローチャート(2)。 ハードウェア2の構成の一例を示す図。
実施の形態1.
図1は、仮想計算機システム1の構成図である。
仮想計算機システム1は、単一もしくは複数のプロセッサ、メモリなどのハードウェア2を備える。そして、仮想計算機システム1は、複数の独立した仮想的なハードウェア環境を提供するVM3を実現する。ここでは、VM−AとVM−BとのVM3が実現されるものとする。また、ここでは、VM−Aを受信側のVM3とし、VM−Bを送信側のVM3とする。また、仮想計算機システム1は、VM3で動作するOS5などのプログラムの実行を制御する仮想計算機モニタ4を備える。
各VM3は、OS5(OS−A、OS−B)を動作させる。また、各VM3は、OS5においてアプリケーションプログラム6を動作させる。さらに、各VM3は、他のVM3との通信を制御するVM間通信ドライバ7を動作させる。VM間通信ドライバ7は、OS5のデバイスドライバの1つとして実現される。
各VM3のVM間通信ドライバ7は、通信開始要求受付部8、通信初期化処理部9、VMアクセス権設定受付部10、VMアクセス権設定処理部11(送信権限設定部)、受信要求受付部12、受信処理部13、通信終了要求受付部14、通信終了処理部15(送信権限削除部)、送信要求受付部16、送信可否VM判定部17(設定判定部)、送信処理部18(送信部)を備える。なお、図1では、簡単のため、受信側のVM−Aには受信側で使用する機能のみを示し、送信側のVM−Bには送信側で使用する機能のみを示す。
通信開始要求受付部8は、アプリケーションプログラム6からの通信開始(オープン)要求を受け付ける。通信初期化処理部9は、通信開始要求受付部8から実行され、通信の初期化処理を実行する。
VMアクセス権設定受付部10は、アプリケーションプログラム6からのVMアクセス権設定要求を受け付ける。VMアクセス権設定処理部11は、VMアクセス権設定受付部10から実行され、VMアクセス権(許可情報)を後述するVMアクセス権管理表20に設定する。
受信要求受付部12は、アプリケーションプログラム6からの受信(リード)要求を受け付ける。受信処理部13は、受信要求受付部12から実行され、他のVM3から送信された送信データを受信する。
通信終了要求受付部14は、アプリケーションプログラム6からの通信終了(クローズ)要求を受け付ける。通信終了処理部15は、通信終了要求受付部14から実行され、通信の終了処理を実行する。
送信要求受付部16は、アプリケーションプログラム6からの送信(ライト)要求を受け付ける。送信可否VM判定部17は、送信要求受付部16から実行され、他のVM3へ送信データを送信することの可否を判定する。送信処理部18は、送信可否VM判定部17から実行され、他のVM3へ送信データを送信する。
仮想計算機モニタ4は、VM間通信処理部19、VMアクセス権管理表20(送信権限テーブル)を備える。
VM間通信処理部19は、VM3間の通信を実現する仮想ネットワークである。
VMアクセス権管理表20は、VMアクセス権が設定される。VMアクセス権管理表20は、通信初期化処理部9により生成され、VMアクセス権設定処理部11により設定される。また、VMアクセス権管理表20は、通信終了処理部15により削除される。
図2は、VMアクセス権管理表20の一例を示す図である。VMアクセス権管理表20は、VM3の識別情報と、データ送信の許可又は拒否とが記憶される。図2では、VM−Aへのデータ送信の許可と拒否とが、VM3毎に設定されている。図2は、VM−A、VM−CからVM−Aへのデータ送信は拒否し、VM−BからVM−Aへのデータ送信は許可することを示す。
図3,4は、仮想計算機システム1におけるVM3間通信方式の動作を示すフローチャートである。
まず、受信側のVM3の動作を説明する。
異なるVM3に存在するアプリケーションプログラム6同士がデータ通信を行う場合、最初に受信側のアプリケーションプログラム6がOS5を介してVM間通信ドライバ7に対し、通信開始要求を出す(S101)。すると、OS5が持つドライバの管理機能により、VM間通信ドライバ7の通信開始要求受付部8が起動される(S102)。
通信開始要求受付部8は、通信初期化処理部9を呼び出す(S103)。通信初期化処理部9は、VM間通信処理部19を利用するために必要な初期設定を行う。通信初期化処理部9は、例えば、通信データを格納するための共有メモリと、データ到着を通知するためのイベントチャネルの確保・設定を行う(S104)。ここで、共有メモリとは異なるVM3間で共有可能なメモリ領域のことである。また、イベントチャネルとは、何等かの事象(イベント)が発生したことを他のVM3に伝えるための手段である。共有メモリとイベントチャネルとについては非特許文献2に記載があるため、ここでは言及しない。次に、通信初期化処理部9は、VMアクセス権管理表20用の共有メモリを確保する(S105)。通信初期化処理部9は、他のVM3に対してはリードオンリーで共有できるよう設定を行う(S106)。次に、通信初期化処理部9は、確保した共有メモリにVMアクセス権管理表20を生成する(S107)。このとき、生成時のVMアクセス権管理表20の初期内容は拒否でも許可でも構わない。ここでは安全のため、すべてのVMからの送信を拒否するよう設定しておくものとする。また、(S106)での設定により、VMアクセス権管理表20への書き込みは、共有メモリを設定したVM3のみが行え、他のVM3はVMアクセス権管理表20からの読み込みのみ行える。
なお、通信開始要求受付部8および通信初期化処理部9の処理が成功すると、OS5はアプリケーションプログラム6に対し、以降の処理にてVM間通信ドライバ7へアクセスする際に利用する識別子を返す。ここでは、識別子は、UNIX(登録商標)オペレーティングシステムを例とし、ファイルディスクリプタとする。
次に、受信側のアプリケーションプログラム6がOS5を介してVM間通信ドライバ7に対し、VM3を特定する識別子(ID)を指定してVMアクセス権設定要求を出す(S108)。ここでは、送信を許可するVM3の識別子を指定する。なお、アプリケーションプログラム6は、通信開始要求を出した結果、返されたファイルディスクリプタを利用して、通信開始要求受付部8に対し、VMアクセス権設定要求を出す。また、VM3を特定するIDとは、送信を許可するVM3を一意に特定できるものであればよく、例えば整数(VM番号)や文字列(VM名)である。すると、OS5が持つドライバの管理機能により、VM間通信ドライバ7のVMアクセス権設定受付部10が起動される(S109)。
VMアクセス権設定受付部10は、VMアクセス権設定処理部11を呼び出す(S110)。VMアクセス権設定処理部11は、VMアクセス権管理表20のうち、受信側のアプリケーションプログラム6が指定したVM3に該当する部分の設定を許可に変更する(S111)。つまり、VMアクセス権設定処理部11は、アプリケーションプログラム6が指定したVM3から自己へのデータ送信を許可するように、VMアクセス権管理表20の情報を変更する。
次に、受信側のアプリケーションプログラム6がOS5を介してVM間通信ドライバ7に対し、受信要求を出す(S112)。すると、OS5が持つドライバの管理機能により、VM間通信ドライバ7の受信要求受付部12が起動される(S113)。
受信要求受付部12は、受信処理部13を呼び出す(S114)。受信処理部13は、既に受信可能なデータが到着済みか判定する(S115)。受信処理部13は、既にデータが到着していれば(S115でYES)、(S127)へ処理を移す。一方、受信処理部13は、まだデータが到着していなければ(S115でNO)、VM間通信処理部19からデータ到着の通知が来るまで待機する(S116)。ここで、OS5には通常、送受信が完了してから続きの処理を開始・継続する同期I/O(Input/Output)と、送受信が完了していなくても可能な処理を進める非同期I/Oとの2種類のI/O待ちの仕組みが存在する。しかし、ここでいう待機は、どちらの仕組みでも構わない。これらの仕組みについては非特許文献3に記載があるので、ここでは言及しない。また、待機を行う際、あらかじめ指定された時間内に待機を解除する事象が発生しなかった場合にタイムアウトが発生したというエラーで呼び出し元にリターンしてもよい。この仕組みについては非特許文献4に記載があるので、ここでは言及しない。
また、(S115)の処理において、既にデータを受信している場合とは、受信側のアプリケーションプログラム6のOS5への受信要求(S112)よりも先に送信側のアプリケーションプログラム6のOS5への後述する送信要求(S117)の処理が行われた場合のことである。このように、(S112)から(S115)までの処理と、(S117)から(S123)までの処理の順序は問わない。
次に、送信側のVM3の動作について説明する。
送信側のアプリケーションプログラム6も受信側のアプリケーションプログラム6と同様にファイルディスクリプタを利用する。そのため、送信側のアプリケーションプログラム6もOS5を介してVM間通信ドライバ7に対し、通信開始要求を出す。この処理は、(S101)から(S107)の処理と同様のため、ここでは説明を省略する。また、このとき、アプリケーションプログラム6がデータの送信処理しか行わない場合は、送信のみ実施することを指定して通信開始要求を行うことにより、(S103)から(S107)の処理を省略することができる。
送信側のアプリケーションプログラム6がOS5を介してVM間通信ドライバ7に対し、送信先のVM3を特定するIDを指定して送信要求を出す(S117)。すると、OS5が持つドライバの管理機能により、VM間通信ドライバ7の送信要求受付部16が起動される(S118)。
送信要求受付部16は、送信可否VM判定部17を呼び出す(S119)。送信可否VM判定部17はVMアクセス権管理表20を参照して、送信側のアプリケーションプログラム6が指定したVM3に該当する部分の設定を読み取る(S120)。送信可否VM判定部17は、読み取った設定に従い、データ送信が許可されているか拒否されているかを判定する(S121)。ここで許可されていると判定した場合(S121で許可)、送信可否VM判定部17は送信処理部18を呼び出す(S122)。そして、送信処理部18がVM間通信処理部19に対してデータを送信する(S123)。一方、拒否されていると判定した場合(S121で拒否)、送信可否VM判定部17はアクセス違反を意味するエラー値を戻り値とし、送信要求受付部16を介して送信側のアプリケーションプログラム6にエラーとして返す(S126)。
VM間通信処理部19は(S123)で送信されたデータに対し、受信待ちをしているVMが存在するか判定する(S124)。受信待ちをしているVMが存在すれば(S124でYES)、VM間通信ドライバ7は、データが到着したことを受信処理部13に対し通知する(S125)。ここでの通知は例えば前記のイベントチャネルを用いて行うことができる。一方、受信待ちをしているVMが存在しなければ、ここでは通知処理を行わない。
VM間通信処理部19からデータ到着の通知を受けると、受信処理部13は、受信に関わる処理を再開し、データを受信する(S127)。データを受信すると、受信処理部13は、受信成功を意味する値を戻り値とし、受信要求受付部12を介して受信側のアプリケーションプログラム6に返す(S128)。
アプリケーションプログラム6がデータ通信を終えると、受信側のアプリケーションプログラム6からOS5を介してVM間通信ドライバ7に対し、終了処理要求を出す(S129)。すると、OS5が持つドライバの管理機能により、VM間通信ドライバ7の通信終了要求受付部14が起動される(S130)。
通信終了要求受付部14は、通信終了処理部15を呼び出す(S131)。通信終了処理部15は、VMアクセス権管理表20用に確保していたメモリを共有できないように設定する。さらに、その後、通信終了処理部15は、そのメモリを解放することにより、VMアクセス権管理表20を削除する(S132)。受信側のアプリケーションプログラム6と同様に送信側のアプリケーションプログラム6もデータ通信を終えた段階でOS5を介してVM間通信ドライバ7に対し、終了処理要求を出す。そして、(S131)、(S132)を実行する。しかし、上述したように、通信開始要求時に(S103)から(S107)の処理を省略した場合は、VMアクセス権管理表20の削除を行う必要がない。そのため、(S131)、(S132)の処理を省略できる。
以上のようにこの実施の形態に係る仮想計算機システム1は、データ送信前にVMアクセス権管理表20を参照することにより、許可されていないデータ送信に関しては実際のデータ送信処理を避ける。そのため、悪意のあるプログラムがDoS攻撃を仕掛けても、送信先のVM3の処理負荷には影響を与えない。
なお、上記説明では、仮想的なハードウェア環境を提供するシステムを仮想計算機システム1として説明した。しかし、仮想計算機システム1は、これに限らず、仮想的なハードウェア環境を提供しない、いわゆるマルチOS環境であってもよい。いわゆるマルチOS環境においても、同様の効果を得ることができる。
また、前記のようにVMアクセス権管理表20をVM3毎に備えるのではなく、システムに1つのみ備えるとしてもよい。この場合、(S132)では、VMアクセス権管理表20のうち、そのVM3(VMアクセス権管理表20を操作しているVM3)へのデータ送信の可否を示す情報のみを削除する。また、VMアクセス権管理表20をVM3内のプロセス毎に具備してもよい。この場合、(S117)において送信要求を出す際に送信先のプロセスを一意に特定する識別子(例えば、プロセス番号やプロセス名など)を指定し、(S120)においてVMアクセス権管理表20を参照する際に、送信先のプロセスに関連するVMアクセス権管理表20を参照する。
また、上記説明では、受信側のアプリケーションプログラム6のOS5へのVMアクセス権設定要求(S108)とOS5への受信要求(S112)とを別々の処理とした。しかし、受信要求時に受信する特定のVM3を指定し、VM間通信ドライバ7が(S114)の処理を行う前に(S110)、(S111)の処理を行うことにより、VMアクセス権設定要求(S108)とOS5への受信要求(S112)とをまとめて処理してもよい。
また、上記説明では、VM間通信ドライバ7が送信可否VM判定部17を備える。しかし、VM間通信処理部19が送信可否VM判定部17を備えるとしてもよい。この場合、VM間通信ドライバ7は、(S120)から(S122)の処理は行わず、VM間通信処理部19が備える送信可否VM判定部17が(S123)の処理の後であって、(S124)の処理の前に(S120)、(S121)の処理を行う。(S121)での判定の結果、許可されていると判断した場合(S121でYES)、送信可否VM判定部17は(S124)の処理を行う。一方、(S121)での判定の結果、拒否されていると判断した場合(S121でNO)、送信可否VM判定部17は、アクセス違反を意味するエラー値を戻り値とし、送信要求受付部16を介して送信側のアプリケーションプログラム6にエラーで返す(S126)。
また、上記説明では、受信側のアプリケーションプログラム6はOS5へのVMアクセス権設定要求において許可要求を出すと説明した。しかし、アプリケーションプログラム6は、許可要求だけでなく、一旦許可したデータ送信を拒否できる拒否要求を出すことができるとしてもよい。この場合、(S109)から(S111)と原則として同様の処理を行う。但し、VMアクセス権管理表20の該当箇所の設定を許可ではなく、拒否に変更する部分のみ異なる。
実施の形態2.
実施の形態1では、VM3毎にデータ通信を許可するか否かを示すアクセス権の設定を行った。しかし、ネットワーク通信におけるトランスミッションコントロールプロトコル(TCP:Transmission Control Protocol)やユーザデータプロトコル(UDP:User Data Protocol)で定められたようなポート番号を用いてVM3で動作している複数のプログラムのうちの1つのプログラムを通信相手として指定する場合もある。実施の形態1で説明した方法では、このような場合に、各ポート番号による通信を個別に許可や拒否することができない。実施の形態2では、ネットワークプロトコルを指定して、通信を許可や拒否する方法について説明する。
図5は、実施の形態2に係る仮想計算機システム1の構成図である。図5に示す仮想計算機システム1のうち、図1に示す仮想計算機システム1と同一の機能については、同一の符号を付し説明を省略する。
VM間通信ドライバ7は、VMアクセス権設定受付部10、VMアクセス権設定処理部11、送信可否VM判定部17に代え、プロトコルアクセス権設定受付部21、プロトコルアクセス権設定処理部22(送信権限設定部)、送信可否プロトコル判定部23を備える。プロトコルアクセス権設定受付部21は、アプリケーションプログラム6からのプロトコルアクセス権設定要求を受け付ける。プロトコルアクセス権設定処理部22は、プロトコルアクセス権設定受付部21から実行され、プロトコル毎にプロトコルアクセス権(許可情報)を後述するプロトコルアクセス権管理表24に設定する。送信可否プロトコル判定部23は、送信要求受付部16から実行され、他のVM3へ所定のプロトコルにより送信データを送信することの可否を判定する。
仮想計算機モニタ4は、VMアクセス権管理表20に代え、プロトコルアクセス権管理表24(送信権限設定テーブル)を備える。プロトコルアクセス権管理表24は、プロトコル毎にプロトコルアクセス権が設定される。プロトコルアクセス権管理表24は、通信初期化処理部9により生成され、プロトコルアクセス権設定処理部22により設定される。また、プロトコルアクセス権管理表24は、通信終了処理部15により削除される。
図6は、プロトコルアクセス権管理表24の一例を示す図である。プロトコルアクセス権管理表24は、プロトコル名称、送信側アドレス、受信側アドレス、送信側ポート番号、受信側ポート番号等が記憶される。プロトコルアクセス権管理表24に設定された情報と一致する情報を有する送信データのみ送信が許可され、その他の送信データは送信が拒否される。
図7,8は、仮想計算機システム1におけるVM3間通信方式の動作を示すフローチャートである。なお、図3,4に示す実施の形態1に係る仮想計算機システム1におけるVM3間通信方式の動作と同一の部分については説明を省略する。
(S201)から(S204)は、図3の(S101)から(S104)と同一である。(S204)に続き、通信初期化処理部9は、プロトコルアクセス権管理表24用の共有メモリを確保する(S205)。そして、(S106)と同様に、リードオンリーで共有できるよう設定を行う(S206)。次に、通信初期化処理部9は、確保した共有メモリにプロトコルアクセス権管理表24を生成する(S207)。このとき、生成時のプロトコルアクセス権管理表24の初期内容は、所定のプロトコルについての情報が存在する状態であっても、存在しない状態であっても構わない。ここでは安全のため、1つのプロトコルについての情報も存在しない状態とする。つまりすべてのプロトコルについてVM3へのデータ送信を拒否するよう設定しておくものとする。
次に、受信側のアプリケーションプログラム6がOS5を介してVM間通信ドライバ7に対し、自己に対する送信を許可するプロトコルを特定するパラメータを指定してプロトコルアクセス権設定要求を出す(S208)。なお、アプリケーションプログラム6は、通信開始要求を出した結果、返されたファイルディスクリプタを利用して、通信開始要求受付部8に対し、VMアクセス権設定要求を出す。プロトコルを特定するパラメータとは、許可するプロトコル内容を一意に特定できるものであればよく、例えば図5に示したような許可するプロトコル名称(TCPかUDPかなど)、送信側アドレス(送信側インターネットプロトコルアドレス)、受信側アドレス(受信側インターネットプロトコルアドレス)、送信側ポート番号、受信側ポート番号などである。すると、OS5が持つドライバの管理機能により、VM間通信ドライバ7のプロトコルアクセス権設定受付部21が起動される(S209)。
プロトコルアクセス権設定受付部21はプロトコルアクセス権設定処理部22を呼び出す(S210)。プロトコルアクセス権設定処理部22は、プロトコルアクセス権管理表24に、受信側のアプリケーションプログラム6が指定した許可するプロトコル内容を設定(表に追加)する(S211)。
(S212)から(S216)は、図4の(S112)から(S116)と同一である。
次に、送信側のVM3の動作について説明する。
送信側のアプリケーションプログラム6も受信側のアプリケーションプログラム6と同様にファイルディスクリプタを利用する。そのため、送信側のアプリケーションプログラム6もOS5を介してVM間通信ドライバ7に対し、通信開始要求を出す。この処理は、(S201)から(S207)の処理と同様のため、ここでは説明を省略する。また、このとき、アプリケーションプログラム6がデータの送信処理しか行わない場合は、送信のみ実施することを指定して通信開始要求を行うことにより、(S203)から(S207)の処理を省略することができる。
(S217)から(S218)は、図4の(S117)から(S118)と同一である。
送信要求受付部16は、送信可否プロトコル判定部23を呼び出す(S219)。送信可否プロトコル判定部23はプロトコルアクセス権管理表24を参照して(S220)、送信側のアプリケーションプログラム6が利用するプロトコル内容に一致するものが存在するか否かを判定する(S221)。ここで存在すると判定した場合、許可されていると判断し(S221で許可)、送信可否プロトコル判定部23は送信処理部18を呼び出す(S222)。そして、送信処理部18がVM間通信処理部19に対してデータを送信する(S223)。一方、存在しないと判定した場合、拒否されていると判断し(S221で拒否)、送信可否プロトコル判定部23はアクセス違反を意味するエラー値を戻り値とし、送信要求受付部16を介して送信側のアプリケーションプログラム6にエラーで返す(S226)。
(S224)から(S225)は、図4の(S124)から(S125)と同一である。また、(S227)から(S231)は、図4の(S127)から(S131)と同一である。そして、(S231)で呼び出された通信終了処理部15は、プロトコルアクセス権管理表24用に確保していたメモリを共有できないように設定する。さらに、その後、通信終了処理部15は、そのメモリを解放することにより、プロトコルアクセス権管理表24を削除する(S232)。受信側のアプリケーションプログラム6と同様に送信側のアプリケーションプログラム6もデータ通信を終えた段階でOS5を介してVM間通信ドライバ7に対し、終了処理要求を出す。そして、(S231)、(S232)を実行する。しかし、上述したように、通信開始要求時に(S203)から(S207)の処理を省略した場合は、VMアクセス権管理表20の削除を行う必要がない。そのため、(S231)、(S232)の処理を省略できる。
以上のようにこの実施の形態に係る仮想計算機システム1は、自己に対してVM3毎に送信許可するのではなく、指定したネットワークプロトコル名称、送信側アドレス、受信側アドレス、送信側ポート番号、受信側ポート番号が一致するもののみ送信許可する。そのため、VM3間で通信可能なアプリケーションプログラムを限定することができ、システムの安全性を高めることができる。
また、上記説明では、受信側アプリケーションプログラム6はOS5へのプロトコルアクセス権設定要求において許可要求を出すと説明した。しかし、アプリケーションプログラム6は、許可要求だけでなく、一旦許可したデータ送信を拒否できる拒否要求を出すことができるとしてもよい。この場合、(S209)から(S211)と原則として同様の処理を行う。但し、(S211)において、指定したプロトコル内容を追加するのではなく、削除する部分のみ異なる。
また、上記説明では、プロトコルアクセス権管理表24には送信を許可するネットワークプロトコル名称、送信側アドレス、受信側アドレス、送信側ポート番号、受信側ポート番号などのリストを記憶すると説明した。しかし、送信を拒否するネットワークプロトコル名称、送信側アドレス、受信側アドレス、送信側ポート番号、受信側ポート番号などのリストを記憶してもよい。この場合、(S207)でプロトコルアクセス権管理表24を生成した際に初期内容が存在しないとすると、すべてのプロトコルにおいて自己への送信を許可する設定になる。そのため、(S208)では自己への送信を拒否するプロトコルを特定するパラメータを指定してプロトコルアクセス権設定要求を出すことになる。さらに、(S221)で存在しないと判定した場合、許可されていると判断し(S221で許可)、(S222)、(S223)を実行する。一方、(S221)で存在すると判定した場合、拒否されていると判断し(S221で拒否)、送信可否プロトコル判定部23はアクセス違反を意味するエラー値を戻り値とし、送信要求受付部16を介して送信側のアプリケーションプログラム6にエラーで返す(S226)。
また、上記説明では、実施の形態1で説明したVM3毎に自己への送信を許可することについて述べていないが、プロトコルアクセス権設定受付部21、プロトコルアクセス権設定処理部22、送信可否プロトコル判定部23、プロトコルアクセス権管理表24とを、VMアクセス権設定受付部10、VMアクセス権設定処理部11、送信可否VM判定部17、VMアクセス権管理表20と併用することも可能である。つまり、VM3毎、かつプロトコル毎に送信の可否が判断される。この場合、(S205)から(S207)において、VMアクセス権管理表20とプロトコルアクセス権管理表24とを生成する。(S220)においてVMアクセス権管理表20とプロトコルアクセス権管理表24とを参照して、許可か拒否かを判定する。(S232)において、VMアクセス権管理表20とプロトコルアクセス権管理表24と用に確保していたメモリを共有できないように設定して、解放する。これにより、送信可能なVM3を限定しつつ、送信可能なプロトコルを限定することができるため、単独で実施した場合よりも安全性を高められる。
次に、実施の形態における仮想計算機システム1のハードウェア2の構成について説明する。
図9は、仮想計算機システム1のハードウェア2の構成の一例を示す図である。
図9に示すように、ハードウェア2は、プログラムを実行するCPU911(中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、LCD901(Liquid Crystal Display)、キーボード902(K/B)、通信ボード915、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920(固定ディスク装置)の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。磁気ディスク装置920は、所定の固定ディスクインタフェースを介して接続される。
ROM913、磁気ディスク装置920は、不揮発性メモリの一例である。RAM914は、揮発性メモリの一例である。ROM913とRAM914と磁気ディスク装置920とは、メモリ(記憶装置)の一例である。また、キーボード902、通信ボード915は、入力装置の一例である。
磁気ディスク装置920又はROM913などには、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
仮想計算機システム1は、以上のハードウェアを用いて、複数のVM3を実現する。つまり、VM3毎にRAM914の領域を割り当て、VM3毎にCPU911を例えばタイムシェアリングにより割り当て、VM3毎にOSを起動させる。そして、仮想計算機システム1は、VM3毎に、割り当てたハードウェア資源を利用して、アプリケーションプログラム6やVM間通信ドライバ7等のプログラムを実行する。
つまり、プログラム群923には、上記の説明において「仮想計算機モニタ4」(「VM間通信処理部19」)、「アプリケーションプログラム6」、「通信開始要求受付部8」(「VMアクセス権設定処理部11」、「受信要求受付部12」、「受信処理部13」、「通信終了要求受付部14」、「通信終了処理部15」、「送信要求受付部16」、「送信可否VM判定部17」、「送信処理部18」、「プロトコルアクセス権設定受付部21」、「プロトコルアクセス権設定処理部22」、「送信可否プロトコル判定部23」)等として説明した機能を実行するソフトウェアやプログラムやその他のプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、上記の説明において「VMアクセス権管理表20」、「プロトコルアクセス権管理表24」等の情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶される。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPU911の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPU911の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
なお、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、その他光ディスク等の記録媒体やICチップに記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体や電波によりオンライン伝送される。
また、上記の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜装置」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。さらに、「〜処理」として説明するものは「〜ステップ」であっても構わない。すなわち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ROM913等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、上記で述べた「〜部」としてコンピュータ等を機能させるものである。あるいは、上記で述べた「〜部」の手順や方法をコンピュータ等に実行させるものである。
1 仮想計算機システム、2 ハードウェア、3 VM、4 仮想計算機モニタ、5 OS、6 アプリケーションプログラム、7 VM間通信ドライバ、8 通信開始要求受付部、9 通信初期化処理部、10 VMアクセス権設定受付部、11 VMアクセス権設定処理部、12 受信要求受付部、13 受信処理部、14 通信終了要求受付部、15 通信終了処理部、16 送信要求受付部、17 送信可否VM判定部、18 送信処理部、19 VM間通信処理部、20 VMアクセス権管理表、21 プロトコルアクセス権設定受付部、22 プロトコルアクセス権設定処理部、23 送信可否プロトコル判定部、24 プロトコルアクセス権管理表。

Claims (6)

  1. 1台の計算機において複数の仮想計算機が同時に動作し、前記複数の仮想計算機の各仮想計算機は互いに仮想ネットワークを介して通信する仮想計算機システムであって、前記各仮想計算機では、アプリケーションプログラムが動作するとともに、前記アプリケーションプログラムによる他の仮想計算機との通信を制御する通信ドライバが動作する仮想計算機システムであり、
    各仮想計算機について、その仮想計算機へのデータ送信を許可するか否かを、他の仮想計算機毎に記憶する仮想計算機アクセス権管理テーブル
    を備え、
    前記通信ドライバは、
    前記複数の仮想計算機のうちの第1の仮想計算機が送信した送信データを受信する場合、前記第1の仮想計算機から自己へのデータ送信を許可するように前記仮想計算機アクセス権管理テーブルを更新する送信権限設定部と、
    前記アプリケーションプログラムが前記複数の仮想計算機のうちの第2の仮想計算機へ送信データを送信する場合、自己から前記第2の仮想計算機へのデータ送信を許可することが前記仮想計算機アクセス権管理テーブルに記憶されているか否かを判定する設定判定部と、
    記憶されていると前記設定判定部が判定した場合に、前記第2の仮想計算機へ送信データを送信する送信部と
    を備えることを特徴とする仮想計算機システム。
  2. 前記各仮想計算機は、さらに、
    前記第1の仮想計算機の前記送信部が送信した送信データを受信する受信部と、
    前記受信部が前記送信データの受信を完了した場合、前記第1の仮想計算機から自己へのデータ送信を許可しないように前記仮想計算機アクセス権管理テーブルを更新する送信権限削除部と
    を備えることを特徴とする請求項1に記載の仮想計算機システム。
  3. 前記仮想計算機アクセス権管理テーブルは、仮想計算機間で共有する共有メモリに作成され
    ことを特徴とする請求項1又は2に記載の仮想計算機システム。
  4. 前記仮想計算機システムは、さらに、
    各仮想計算機について、その仮想計算機へのデータ送信を許可するか否かを、プロトコル毎に記憶するプロトコルアクセス権管理テーブル
    を備え、
    前記送信権限設定部は、前記複数の仮想計算機のうちの第1の仮想計算機が第1のプロトコルにより送信した送信データを受信する場合、前記第1の仮想計算機から自己へのデータ送信を許可するように前記仮想計算機アクセス権管理テーブルを更新するとともに、前記第1のプロトコルによる自己へのデータ送信を許可するように前記プロトコルアクセス権管理テーブルを更新し、
    前記設定判定部は、前記アプリケーションプログラムが前記複数の仮想計算機のうちの第2の仮想計算機へ第2のプロトコルにより送信データを送信する場合、自己から前記第2の仮想計算機へのデータ送信を許可することが前記仮想計算機アクセス権管理テーブルに記憶されており、かつ、前記第2のプロトコルによる前記第2の仮想計算機へのデータ送信を許可することが前記プロトコルアクセス権管理テーブルに記憶されているか否かを判定し、
    前記送信部は、いずれも記憶されていると前記設定判定部が判定した場合に、前記第2の仮想計算機へ前記第2のプロトコルにより送信データを送信する
    ことを特徴とする請求項1から3までのいずれかに記載の仮想計算機システム。
  5. 1台の計算機において複数の仮想計算機が同時に動作し、前記複数の仮想計算機の各仮想計算機は互いに仮想ネットワークを介して通信する仮想計算機システムであって、前記各仮想計算機では、アプリケーションプログラムが動作する仮想計算機システムの通信制御プログラムであり、
    各仮想計算機について、その仮想計算機へのデータ送信を許可するか否かを、他の仮想計算機毎に記憶する仮想計算機アクセス権管理テーブル
    を用いて、
    前記複数の仮想計算機のうちの第1の仮想計算機が送信した送信データを受信する場合、前記第1の仮想計算機から自己へのデータ送信を許可するように前記仮想計算機アクセス権管理テーブルを更新する送信権限設定処理と、
    前記アプリケーションプログラムが前記複数の仮想計算機のうちの第2の仮想計算機へ送信データを送信する場合、自己から前記第2の仮想計算機へのデータ送信を許可することが前記仮想計算機アクセス権管理テーブルに記憶されているか否かを判定する設定判定処理と、
    記憶されていると前記設定判定処理で判定した場合に、前記第2の仮想計算機へ送信データを送信する送信処理と
    を各仮想計算機に実行させることを特徴とする仮想計算機システムの通信制御プログラム。
  6. 1台の計算機において複数の仮想計算機が同時に動作し、前記複数の仮想計算機の各仮想計算機は互いに仮想ネットワークを介して通信する仮想計算機システムであって、前記各仮想計算機では、アプリケーションプログラムが動作するとともに、前記アプリケーションプログラムによる他の仮想計算機との通信を制御する通信ドライバが動作する仮想計算機システムの通信制御方法であり、
    各仮想計算機について、その仮想計算機へのデータ送信を許可するか否かを、他の仮想計算機毎に記憶する仮想計算機アクセス権管理テーブル
    を用いて、
    前記通信ドライバが、前記複数の仮想計算機のうちの第1の仮想計算機が送信した送信データを受信する場合、前記第1の仮想計算機から自己へのデータ送信を許可するように前記仮想計算機アクセス権管理テーブルを更新する送信権限設定ステップと、
    前記通信ドライバが、前記アプリケーションプログラムが前記複数の仮想計算機のうちの第2の仮想計算機へ送信データを送信する場合、自己から前記第2の仮想計算機へのデータ送信を許可することが前記仮想計算機アクセス権管理テーブルに記憶されているか否かを判定する設定判定ステップと、
    前記通信ドライバが、記憶されていると前記設定判定ステップで判定した場合に、前記第2の仮想計算機へ送信データを送信する送信ステップと
    を備えることを特徴とする仮想計算機システムの通信制御方法。
JP2009054383A 2009-03-09 2009-03-09 仮想計算機システム、仮想計算機システムの通信制御プログラム及び仮想計算機システムの通信制御方法 Active JP5398309B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009054383A JP5398309B2 (ja) 2009-03-09 2009-03-09 仮想計算機システム、仮想計算機システムの通信制御プログラム及び仮想計算機システムの通信制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009054383A JP5398309B2 (ja) 2009-03-09 2009-03-09 仮想計算機システム、仮想計算機システムの通信制御プログラム及び仮想計算機システムの通信制御方法

Publications (2)

Publication Number Publication Date
JP2010211339A JP2010211339A (ja) 2010-09-24
JP5398309B2 true JP5398309B2 (ja) 2014-01-29

Family

ID=42971465

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009054383A Active JP5398309B2 (ja) 2009-03-09 2009-03-09 仮想計算機システム、仮想計算機システムの通信制御プログラム及び仮想計算機システムの通信制御方法

Country Status (1)

Country Link
JP (1) JP5398309B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5491102B2 (ja) * 2009-08-27 2014-05-14 ルネサスエレクトロニクス株式会社 データプロセッサ
WO2012157166A1 (ja) * 2011-05-16 2012-11-22 パナソニック株式会社 仮想計算機システム、仮想計算機システムの制御方法、仮想計算機システムの制御プログラム、及び集積回路
US9699201B2 (en) * 2014-09-25 2017-07-04 International Business Machines Corporation Automated response to detection of threat to cloud virtual machine

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0365734A (ja) * 1989-08-04 1991-03-20 Fujitsu Ltd 仮想計算機システムにおけるvm間通信方式
JP2002073358A (ja) * 2000-09-04 2002-03-12 Hitachi Ltd 仮想計算機主記憶のアクセス制御方法
JP2005293417A (ja) * 2004-04-02 2005-10-20 Sony Corp コンピュータ機器、コンピュータネットワークシステム、プログラム転送方法およびプログラム転送用プログラム
JP4756603B2 (ja) * 2006-10-10 2011-08-24 ルネサスエレクトロニクス株式会社 データプロセッサ
JP2008271339A (ja) * 2007-04-23 2008-11-06 Toshiba Corp セキュリティゲートウェイシステムとその方法およびプログラム
JP5532793B2 (ja) * 2009-09-28 2014-06-25 富士通株式会社 プログラム及び通信制御方法

Also Published As

Publication number Publication date
JP2010211339A (ja) 2010-09-24

Similar Documents

Publication Publication Date Title
US10402341B2 (en) Kernel-assisted inter-process data transfer
US8707417B1 (en) Driver domain as security monitor in virtualization environment
EP1989635B1 (en) Migrating a virtual machine that owns a resource such as a hardware device
US9448783B2 (en) Software delivery for virtual machines
US7634608B2 (en) Bridging network components
US9086907B2 (en) Apparatus and method for managing virtual machine addresses
US9535732B2 (en) Zero copy transmission in virtualization environment
US20090276774A1 (en) Access control for virtual machines in an information system
US10579412B2 (en) Method for operating virtual machines on a virtualization platform and corresponding virtualization platform
WO2016106867A1 (zh) 一种在虚拟化环境中保护根ca证书的方法与系统
US10810036B1 (en) Traffic management on an interconnect
US9904564B2 (en) Policy enforcement by hypervisor paravirtualized ring copying
EP3070633B1 (en) Network interface devices with remote storage control
JP2010282447A (ja) 仮想計算機システム、そのアクセス制御方法及び通信装置
KR20090091148A (ko) 신뢰 플랫폼 모듈(tpm) 공유 방법 및 신뢰 플랫폼 모듈(tpm) 공유 시스템
US10635816B2 (en) Restricting reprogramming of a redirected USB device
EP3516841B1 (en) Remote computing system providing malicious file detection and mitigation features for virtual machines
JP5398309B2 (ja) 仮想計算機システム、仮想計算機システムの通信制御プログラム及び仮想計算機システムの通信制御方法
JP2007323354A (ja) マシン管理システム
JP2011070526A (ja) 制御仮想計算機プログラム、ハイパーバイザプログラム、制御仮想計算機制御方法及び仮想計算機制御方法
US20230035594A1 (en) Managing peripherals in a containerized environment
US11650939B2 (en) Managing access to peripherals in a containerized environment
EP3555787B1 (en) Safe mounting of external media
JP2012093917A (ja) 仮想制御プログラム、情報処理装置及び仮想制御方法
JP2012003302A (ja) ゲストos制御システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110928

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130902

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130924

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131022

R150 Certificate of patent or registration of utility model

Ref document number: 5398309

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250