(57)【要約】【課題】サーバを仲介者とするプロセス間通信において、通信元のプロセスが通信先のプロセスに対してアクセス権限があるかを検証して、アクセスの許可／不許可の判断を簡便な方式で実現する、プロセス間通信アクセス制御方式及び方法を提供する。【解決手段】複数のプロセスがサーバを介して通信を行うプロセス間通信システムにおいて、前記プロセスは通信に先立って前記プロセスの属性を保持するファイルであるところの代理オブジェクトを前記サーバが参照可能な一時記憶領域に保存する代理オブジェクト設定装置を備え、前記サーバは前記プロセスからのイベントの送信依頼が有った際に前記一時記憶領域の送信元のプロセスの代理オブジェクトと送信先のプロセスの代理オブジェクトを参照して前記送信元のプロセスが前記送信先のプロセスに対しアクセス可能か否かを判定するアクセス制御装置を備える。【選択図】      図１
2005250649.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセスがサーバを介して通信を行うプロセス間通信システムにおいて、前記プロセスは通信に先立って前記プロセスの属性を保持するファイルであるところの代理オブジェクトを前記サーバが参照可能な一時記憶領域に保存する代理オブジェクト設定装置を備え、前記サーバは前記プロセスからのイベントの送信依頼が有った際に前記一時記憶領域の送信元のプロセスの代理オブジェクトと送信先のプロセスの代理オブジェクトを参照して前記送信元のプロセスが前記送信先のプロセスに対しアクセス可能か否かを判定するアクセス制御装置を備える、ことを特徴とするプロセス間通信アクセス制御方式。
【請求項２】
前記アクセス制御装置は前記プロセスのアクセス権限を示す情報であるところのパーミッション情報を前記プロセスの代理オブジェクトから取得してイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能か否かを判定する、ことを特徴とする請求項１に記載のプロセス間通信アクセス制御方式。
【請求項３】
前記アクセス制御装置はイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能と判定した場合に前記イベントを前記送信先のプロセスに送信する、ことを特徴とする請求項２に記載のプロセス間通信アクセス制御方式。
【請求項４】
前記アクセス制御装置は前記プロセスの代理オブジェクトを前記プロセスのプロセスＩＤによって特定する、ことを特徴とする請求項１から請求項３の何れか１項に記載のプロセス間通信アクセス制御方式。
【請求項５】
複数のプロセスがサーバを介して通信を行うプロセス間通信システムにおいて、前記プロセス間通信システムは前記プロセスの属性を保持するファイルであるところの代理オブジェクトを前記サーバが参照可能な一時記憶領域に予め保存する代理オブジェクト事前設定装置を備え、前記サーバは前記プロセスからのイベントの送信依頼が有った際に前記一時記憶領域の送信元のプロセスの代理オブジェクトと送信先のプロセスの代理オブジェクトを参照して前記送信元のプロセスが前記送信先のプロセスに対しアクセス可能か否かを判定する第２のアクセス制御装置を備える、ことを特徴とするプロセス間通信アクセス制御方式。
【請求項６】
前記第２のアクセス制御装置は前記プロセスのアクセス権限を示す情報であるところのパーミッション情報を前記プロセスの代理オブジェクトから取得してイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能か否かを判定する、ことを特徴とする請求項５に記載のプロセス間通信アクセス制御方式。
【請求項７】
前記第２のアクセス制御装置はイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能と判定した場合に前記イベントを前記送信先のプロセスに送信する、ことを特徴とする請求項６に記載のプロセス間通信アクセス制御方式。
【請求項８】
前記第２のアクセス制御装置は前記プロセスの代理オブジェクトを前記プロセスのプロセスＩＤによって特定する、ことを特徴とする請求項５から請求項７の何れか１項に記載のプロセス間通信アクセス制御方式。
【請求項９】
複数のプロセスがサーバを介して通信を行うプロセス間通信方法において、前記プロセスは通信に先立って前記プロセスの属性を保持するファイルであるところの代理オブジェクトを前記サーバが参照可能な一時記憶領域に保存する保存ステップを実行し、前記サーバは前記プロセスからのイベントの送信依頼が有った際に前記一時記憶領域の送信元のプロセスの代理オブジェクトと送信先のプロセスの代理オブジェクトを参照して前記送信元のプロセスが前記送信先のプロセスに対しアクセス可能か否かを判定する判定ステップを実行する、ことを特徴とするプロセス間通信アクセス制御方法。
【請求項１０】
前記判定ステップにおいては前記プロセスのアクセス権限を示す情報であるところのパーミッション情報を前記プロセスの代理オブジェクトから取得してイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能か否かを判定する、ことを特徴とする請求項９に記載のプロセス間通信アクセス制御方法。
【請求項１１】
前記判定ステップにおいてイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能と判定した場合に前記イベントを前記送信先のプロセスに送信する、ことを特徴とする請求項１０に記載のプロセス間通信アクセス制御方法。
【請求項１２】
前記判定ステップにおいては前記プロセスの代理オブジェクトを前記プロセスのプロセスＩＤによって特定する、ことを特徴とする請求項９から請求項１１の何れか１項に記載のプロセス間通信アクセス制御方法。
【請求項１３】
複数のプロセスがサーバを介して通信を行うプロセス間通信方法において、前記プロセスの属性を保持するファイルであるところの代理オブジェクトを前記サーバが参照可能な一時記憶領域に予め保存する代理オブジェクト事前設定ステップを実行し、前記サーバは前記プロセスからのイベントの送信依頼が有った際に前記一時記憶領域の送信元のプロセスの代理オブジェクトと送信先のプロセスの代理オブジェクトを参照して前記送信元のプロセスが前記送信先のプロセスに対しアクセス可能か否かを判定する第２の判定ステップを実行する、ことを特徴とするプロセス間通信アクセス制御方法。
【請求項１４】
前記第２の判定ステップにおいては前記プロセスのアクセス権限を示す情報であるところのパーミッション情報を前記プロセスの代理オブジェクトから取得してイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能か否かを判定する、ことを特徴とする請求項１３に記載のプロセス間通信アクセス制御方法。
【請求項１５】
前記第２の判定ステップにおいてイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能と判定した場合に前記イベントを前記送信先のプロセスに送信する、ことを特徴とする請求項１４に記載のプロセス間通信アクセス制御方法。
【請求項１６】
前記第２の判定ステップにおいては前記プロセスの代理オブジェクトを前記プロセスのプロセスＩＤによって特定する、ことを特徴とする請求項１３から請求項１５の何れか１項に記載のプロセス間通信アクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセス間通信アクセス制御方式及び方法に関し、特に、サーバを仲介者とするプロセス間通信において、通信元のプロセスが通信先のプロセスに対してアクセス権限があるかを検証して、アクセスの許可／不許可の判断を簡便な方式で実現することを可能とする、プロセス間通信アクセス制御方式及び方法に関する。
【背景技術】
【０００２】
近年の通信ネットワークや情報処理装置の進展に伴い、１つの情報処理装置上の複数のプロセス間、或いは、通信ネットワークを介して接続された複数の情報処理装置上のプロセス間において、多量のデータ交換が行なわれるようになってきている。
【０００３】
しかしながら、これらプロセス間で交換されるデータ量があまりにも多量になってきたため、データ交換を行なう上での通信負荷を軽減する必要性が増大してきている。そして、プロセス間の通信負荷を軽減するための情報処理装置も提案されるようになってきている（例えば、特許文献１参照。）。
【０００４】
上述した特許文献１の「プロセス間通信処理装置」には、以下のような計算機システムが記載されている。
【０００５】
すなわち、いずれかのプロセスオブジェクトが、他の計算機上で動作するプロセスオブジェクトに所定の手続依頼を行なう場合、予め同一計算機内に通信代理オブジェクトを生成する。この通信代理オブジェクトは、プロセスオブジェクトとは独立にプロセスオブジェクトに代わってメッセージ通信を実行する。その際のメッセージ通信処理は、相手のプロセスオブジェクトが同一計算機上に存在すれば、共有メモリ空間を利用した高速な通信を行なう。一方、相手のプロセスオブジェクトが異なった計算機上に存在すれば、ネットワークを介した通信を行なう。この結果、メッセージの送信元プロセスオブジェクトでは、そのメッセージの受信を行うプロセスオブジェクトの存在場所を意識することなく、同一のプロセス間通信記述を行うことができる。
【０００６】
このことにより、通信負荷の軽減及び通信処理のプログラミングの効率化を図ることができるようになる、としている。
【０００７】
また、プロセス間でのデータ送受信を、サーバを仲介して行うシステムも提案されるようになっている（例えば、特許文献２参照。）。
【０００８】
上述した特許文献２の「データ受信制御装置」には、以下のような問題点を解消するデータ受信制御装置が記載されている。
【０００９】
すなわち、通常、アプリケーションプログラム内の特定のプロセス間でデータを送受信する場合には、送信側プロセスと受信側プロセスとの間でデータを共有するための共有格納領域を用意し、そこでデータの受け渡しを行うようにしている。このとき、従来の装置では、データを受信する側のプロセスで共有格納領域にデータが書き込まれているかどうかを常に監視していた。あるいは、送信側プロセスで共有格納領域にデータを書き込んだとき、そのことを受信側プロセスに通知していた。このような従来の方式では、受信側プロセスにおいて又は送信側プロセス及び受信側プロセスにおいて、データ送受信に付随する余分な作業を実行しなければならないという問題があった。そこで、特許文献２のデータ受信制御装置においては、共有記憶領域にデータが書き込まれることを入力イベントとして認識するように、Ｘサーバに指示しておく。そして、この入力イベントが発生したとき、Ｘサーバはこれを受信側プロセスに通知し、この通知を受けた受信側プロセスは共通記憶領域からデータを読み出して処理することとしている。
【００１０】
このことにより、Ｘウィンドウシステム上で動作するアプリケーションプログラムの二つのプロセス間でのデータ送受信を、簡単かつ迅速に行えるようになる、としている。
【００１１】
一方、最近の情報処理装置に実装されるソフトウェアは、その機能の多様化によって大規模化・複雑化してきており、それに伴ってソフトウェアのセキュリティの重要性が唱えられるようになってきている。
【００１２】
例えば、悪意のあるアプリケーション・ソフトウェアが、他のアプリケーション・ソフトウェアやプロセスに対して処理しきれないほどの大量のイベントを送りつづけることによって、他のアプリケーション・ソフトウェアやプロセスの処理作業を妨害する、といった事態を挙げることができる。
【００１３】
上述したような事態を回避するための一手段として、アクセス制御を行うことも重要となってきており、通信ネットワーク内のセキュリティを確保するためのアクセス制御装置なども提案されるようになってきている（例えば、特許文献３参照。）。
【００１４】
上述した特許文献３の「アクセス制御装置、ネットワークシステム、アクセス制御方法およびプログラム」には、以下のようなシステムが記載されている。
【００１５】
すなわち、クライアント端末からＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：ラン）を介してサーバに送信データを送信しようとする場合、ＬＡＮとサーバの間に位置するアクセス制御装置のアクセス制御用ソフトウェアは、受信した送信データ（データパケット）を解析し、発信アドレス（ＭＡＣアドレス（物理アドレス））及びＩＤを抽出する。そして、アクセス管理データベースを参照して、発信アドレス及びＩＤの組合せが、アクセスを許可されているデータ（許可データ）であるか否かを判別する。許可データである場合に、アクセス制御用ソフトウェアは、送信データをサーバに向けて送信するようにし、許可データでない場合には、送信データ（データパケット）を破棄する。
【００１６】
このように、アクセス制御装置によってサーバへのアクセス制御を行なうことにより、ネットワーク内のセキュリティが確保できるようになる、としている。
【００１７】
【特許文献１】特開平８−２１２１８０号公報（第３−５頁、図１−５）
【特許文献２】特開平７−００６０４２号公報（第２−３頁、図１−２）
【特許文献３】特開２００３−１６２５０５号公報（第７−１０頁、図１−８）
【発明の開示】
【発明が解決しようとする課題】
【００１８】
上述したように、悪意のあるアプリケーション・ソフトウェアからの他のプロセスに対する攻撃を回避するため、或いは、ソフトウェアのバグなどにより他のプロセスに対する不正なアクセスを行わせないようにして、ソフトウェアのセキュリティを向上させるためには、プロセス間通信のアクセス制御を行うことが重要となってくる。しかし、上述の特許文献３に記載のアクセス制御装置は、プロセス間通信のアクセス制御を行うものではなく、また、上述の特許文献２に記載のデータ受信制御装置は、アクセス制御を行っていない。特許文献２に記載のデータ受信制御装置においてアクセス制御を行おうとする場合には、Ｘサーバに対して多大な修正を行うことが必要となってしまう。さらに、上述の特許文献１に記載のプロセス間通信処理装置においても、アクセス制御は行っていない。
【００１９】
本発明は上述した事情を改善するために成されたものであり、従って本発明の目的は、サーバを仲介者とするプロセス間通信において、通信元のプロセスが通信先のプロセスに対してアクセス権限があるかを検証して、アクセスの許可／不許可の判断を簡便な方式で実現することを可能とする、プロセス間通信アクセス制御方式及び方法を提供することにある。
【課題を解決するための手段】
【００２０】
本発明のプロセス間通信アクセス制御方式は、複数のプロセスがサーバを介して通信を行うプロセス間通信システムにおいて、前記プロセスは通信に先立って前記プロセスの属性を保持するファイルであるところの代理オブジェクトを前記サーバが参照可能な一時記憶領域に保存する代理オブジェクト設定装置を備え、前記サーバは前記プロセスからのイベントの送信依頼が有った際に前記一時記憶領域の送信元のプロセスの代理オブジェクトと送信先のプロセスの代理オブジェクトを参照して前記送信元のプロセスが前記送信先のプロセスに対しアクセス可能か否かを判定するアクセス制御装置を備える、ことを特徴とする。
【００２１】
また、前記アクセス制御装置は前記プロセスのアクセス権限を示す情報であるところのパーミッション情報を前記プロセスの代理オブジェクトから取得してイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能か否かを判定する、ことを特徴とする。
【００２２】
さらに、前記アクセス制御装置はイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能と判定した場合に前記イベントを前記送信先のプロセスに送信する、ことを特徴とする。
【００２３】
また、前記アクセス制御装置は前記プロセスの代理オブジェクトを前記プロセスのプロセスＩＤによって特定する、ことを特徴とする。
【００２４】
さらに、複数のプロセスがサーバを介して通信を行うプロセス間通信システムにおいて、前記プロセス間通信システムは前記プロセスの属性を保持するファイルであるところの代理オブジェクトを前記サーバが参照可能な一時記憶領域に予め保存する代理オブジェクト事前設定装置を備え、前記サーバは前記プロセスからのイベントの送信依頼が有った際に前記一時記憶領域の送信元のプロセスの代理オブジェクトと送信先のプロセスの代理オブジェクトを参照して前記送信元のプロセスが前記送信先のプロセスに対しアクセス可能か否かを判定する第２のアクセス制御装置を備える、ことを特徴とする。
【００２５】
また、前記第２のアクセス制御装置は前記プロセスのアクセス権限を示す情報であるところのパーミッション情報を前記プロセスの代理オブジェクトから取得してイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能か否かを判定する、ことを特徴とする。
【００２６】
さらに、前記第２のアクセス制御装置はイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能と判定した場合に前記イベントを前記送信先のプロセスに送信する、ことを特徴とする。
【００２７】
また、前記第２のアクセス制御装置は前記プロセスの代理オブジェクトを前記プロセスのプロセスＩＤによって特定する、ことを特徴とする。
【００２８】
本発明のプロセス間通信アクセス制御方法は、複数のプロセスがサーバを介して通信を行うプロセス間通信方法において、前記プロセスは通信に先立って前記プロセスの属性を保持するファイルであるところの代理オブジェクトを前記サーバが参照可能な一時記憶領域に保存する保存ステップを実行し、前記サーバは前記プロセスからのイベントの送信依頼が有った際に前記一時記憶領域の送信元のプロセスの代理オブジェクトと送信先のプロセスの代理オブジェクトを参照して前記送信元のプロセスが前記送信先のプロセスに対しアクセス可能か否かを判定する判定ステップを実行する、ことを特徴とする。
【００２９】
また、前記判定ステップにおいては前記プロセスのアクセス権限を示す情報であるところのパーミッション情報を前記プロセスの代理オブジェクトから取得してイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能か否かを判定する、ことを特徴とする。
【００３０】
さらに、前記判定ステップにおいてイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能と判定した場合に前記イベントを前記送信先のプロセスに送信する、ことを特徴とする。
【００３１】
また、前記判定ステップにおいては前記プロセスの代理オブジェクトを前記プロセスのプロセスＩＤによって特定する、ことを特徴とする。
【００３２】
さらに、複数のプロセスがサーバを介して通信を行うプロセス間通信方法において、前記プロセスの属性を保持するファイルであるところの代理オブジェクトを前記サーバが参照可能な一時記憶領域に予め保存する代理オブジェクト事前設定ステップを実行し、前記サーバは前記プロセスからのイベントの送信依頼が有った際に前記一時記憶領域の送信元のプロセスの代理オブジェクトと送信先のプロセスの代理オブジェクトを参照して前記送信元のプロセスが前記送信先のプロセスに対しアクセス可能か否かを判定する第２の判定ステップを実行する、ことを特徴とする。
【００３３】
また、前記第２の判定ステップにおいては前記プロセスのアクセス権限を示す情報であるところのパーミッション情報を前記プロセスの代理オブジェクトから取得してイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能か否かを判定する、ことを特徴とする。
【００３４】
さらに、前記第２の判定ステップにおいてイベントの送信元のプロセスが送信先のプロセスに対しアクセス可能と判定した場合に前記イベントを前記送信先のプロセスに送信する、ことを特徴とする。
【００３５】
また、前記第２の判定ステップにおいては前記プロセスの代理オブジェクトを前記プロセスのプロセスＩＤによって特定する、ことを特徴とする。
【発明の効果】
【００３６】
本発明のプロセス間通信アクセス制御方式及び方法は、プロセス毎に代理オブジェクトを生成して一時記憶領域に置き、サーバは、この代理オブジェクトを参照することにより、送信元プロセスが送信先プロセスに対してアクセス権限を有するかを検証して、アクセスの許可／不許可の判断を行っているので、プロセス間通信におけるアクセス制御を簡便な方式で実現できる、という効果を有している。
【発明を実施するための最良の形態】
【００３７】
次に、本発明の実施の形態について図面を参照して説明する。
【００３８】
図１は、本発明のプロセス間通信アクセス制御方式の一実施形態を示すブロック図である。
【００３９】
図１に示す本実施の形態は、情報処理装置１０上にＸサーバシステムが構築されている様子を示している。
【００４０】
すなわち、図１において、情報処理装置１０は、図示を省略するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：オペレーティングシステム）上で動作する、複数のプロセス４０と、プロセス４０間の通信を仲介するＸサーバ３０と、から構成され、かつ、各プロセス４０の代理オブジェクトを記憶する一時記憶領域２０を備えている。なお、本実施形態におけるＯＳは、ＵＮＩＸ（登録商標）系のＯＳであるものとする。
【００４１】
プロセス４０は、情報処理装置１０上に複数存在するが、その一例としてプロセスＡ４０−１及びプロセスＢ４０−２が図示されている。
【００４２】
ここで、本実施形態の概要について予め説明を行っておく。
【００４３】
本実施形態の各プロセス４０はＸサーバ３０を介して相互に通信を行うようになっており、各プロセス４０は通信を開始する前に自身のプロセス情報をＸサーバ３０に通知する。そして、本実施形態では、そのプロセス情報に、プロセス４０を識別することが可能なユニークな値（以下、プロセスＩＤと呼ぶ）を付加してＸサーバ３０に通知し、同時に、プロセスＩＤを元に生成する、プロセス４０の属性を保持するファイル（以下、代理オブジェクトと呼ぶ）を生成して一時記憶領域２０に置く。
【００４４】
以上の準備に成功したプロセス４０が他のプロセス４０に対してＸサーバ３０を介して通信を行う際、Ｘサーバ３０は通信元と通信先のプロセス情報からプロセスＩＤを検索し、さらに代理オブジェクトを検索することが可能である。
【００４５】
本実施形態においては、この代理オブジェクトのパーミッション情報（アクセス権限を示す情報であり、ＵＮＩＸ（登録商標）系ＯＳを基盤とするシステムでは、User、Group 、Other それぞれに対して、読み出し、書き込み、実行のパーミッションが適用される。）を比較し、送信元プロセス４０が送信先プロセス４０に対してアクセス権限があるかを検証することでアクセス制御を行う。これにより、Ｘサーバ３０を介したプロセス間通信のアクセス制御を行うことが可能となる。
【００４６】
これらの作業は、ＯＳが既に保持する機能を使用し、ソースファイルに数十行の追加／改造を行うだけで容易に実現することが可能である。
【００４７】
図１に戻り、各プロセス４０は代理オブジェクト設定装置４１を備えている。代理オブジェクトは、上述したように、プロセス４０の属性を保持するファイルであり、かつ、テンポラリファイルである。代理オブジェクトは各プロセス４０ごとに生成され、そのプロセス４０にあったパーミッション情報を保持する。そして、各プロセス４０の代理オブジェクト設定装置４１は、自身の代理オブジェクトを生成し、これを、一時記憶領域２０内に代理オブジェクト２１として置くようになっている。具体的には、プロセスＡ４０−１の代理オブジェクト設定装置４１−１は、プロセスＡ４０−１の代理オブジェクトを生成し、これを一時記憶領域２０内にプロセスＡの代理オブジェクト２１−１として置き、プロセスＢ４０−２の代理オブジェクト設定装置４１−２は、プロセスＢ４０−２の代理オブジェクトを生成し、これを一時記憶領域２０内にプロセスＢの代理オブジェクト２１−２として置く。
【００４８】
Ｘサーバ３０は、クライアント管理テーブル３１とアクセス制御装置３２とを備えている。
【００４９】
クライアント管理テーブル３１は、Ｘサーバ３０が従来から保持するクライアント情報（各プロセス４０の情報）を管理するテーブルである。そして、本実施形態では、そのクライアント情報にクライアント（プロセス４０）が送信するプロセスＩＤも管理するようにしてある。
【００５０】
アクセス制御装置３２は、送信元プロセス４０がXSendEvent関数を用いてイベントを送信するときに、送信先プロセス４０に対してアクセス権限があるかを検証し、アクセス権限がなければイベント送信を中断し、アクセス権限があればイベントを送信先プロセス４０に送信する。アクセス権限の判断は、代理オブジェクト２１のパーミッション情報をもとに判定する。このパーミッション情報は、クライアント管理テーブル３１で管理しているプロセスＩＤから代理オブジェクト２１を求め、その代理オブジェクト２１のパーミッション情報をもとに判断する。
【００５１】
次に、図２を参照して、図１に示した本実施形態の動作概要について説明する。
【００５２】
図２は、図１の実施形態の動作概要を説明する図である。なお、図２において図１に示す構成要素に対応するものは同一の参照数字または符号を付し、その説明を省略する。
【００５３】
図２において、プロセスＡ４０−１の代理オブジェクト設定装置４１−１は、プロセスＡ４０−１がＸサーバ３０に対して接続を確立するためにXOpenDisplay関数を呼び出すとき、プロセスＡ４０−１のプロセスＩＤ（図中においては、ＰＩＤと記す。）を元に代理オブジェクトを生成し、これを、creat 関数により一時記憶領域２０に代理オブジェクト２１−１として置く（図２のステップＳ１）。さらに、Ｘサーバ３０に送信するデータに自身のプロセスＩＤを付加している（図２のステップＳ２）。なお、プロセスＢ４０−２の代理オブジェクト２１−２も一時記憶領域２０に生成されている。
【００５４】
プロセスＡ４０−１は、プロセスＢ４０−２に対する通信を行うため、XSendEvent関数を用いてイベントをＸサーバ３０へ送信する（図２のステップＳ３）。
【００５５】
Ｘサーバ３０のアクセス制御装置３２は、送信元のプロセスＡ４０−１のプロセスＩＤをクライアント管理テーブル３１から取得すると共に、送信先のプロセスＢ４０−２のプロセスＩＤをも取得する。ここで、図２中においては、送信元のプロセスＡ４０−１のプロセスＩＤを「ＰＩＤＡ」と記載し、送信先のプロセスＢ４０−２のプロセスＩＤを「ＰＩＤＢ」と記載する。
【００５６】
Ｘサーバ３０のアクセス制御装置３２は、取得したプロセスＡ４０−１のプロセスＩＤ、すなわち「ＰＩＤＡ」から一時記憶領域２０内の代理オブジェクト２１−１を参照すると共に、プロセスＢ４０−２のプロセスＩＤ、すなわち「ＰＩＤＢ」から一時記憶領域２０内の代理オブジェクト２１−２を参照する（図２のステップＳ４）。そして、代理オブジェクト２１−１と代理オブジェクト２１−２のパーミッション情報から、プロセスＡ４０−１がプロセスＢ４０−２に対して、アクセス権限があるかを判定する（図２のステップＳ５）。
【００５７】
プロセスＡ４０−１がプロセスＢ４０−２に対するアクセス権限を有しない場合には、プロセスＢ４０−２へのイベントの送信を中断する。アクセス権限を有する場合には、プロセスＢ４０−２へイベントを送信し（図２のステップＳ６）、プロセスＢ４０−２はXNextEvent関数により該イベントを受信する。
【００５８】
以上の処理はすべてＯＳやＸサーバ３０がすでに保持している機能を利用することで実装可能であり、さらにその作業は非常に容易であるため、実装も工数をあまり必要としない。
【００５９】
次に、図３を参照して、図１に示した本実施形態の動作について詳細に説明する。
【００６０】
図３は、図１の実施形態の動作を説明するフローチャートである。なお、図３において、プロセス４０はクライアントプロセスとも称し、Ｘサーバ３０はサーバプロセスとも称するものとする。また、説明の便宜上、イベントの送信元のプロセス４０を、プロセス４０−１と記載し、イベントの送信先のプロセス４０を、プロセス４０−２と記載するものとする。
【００６１】
図３において、任意のプロセス４０−１が他のプロセス４０−２宛てにイベントを送信するために、Ｘサーバ３０へのコネクションを開始する（図３のステップＳ４０１）。これは、XOpenDisplay関数を呼び出すことにより行われる。
【００６２】
次に、プロセス４０の代理オブジェクト設定装置４１において、ＯＳが提供するgetpid関数を使用して、自プロセス４０のプロセスＩＤを取得する（図３のステップＳ４０２）。
【００６３】
そして、ステップＳ４０２で取得したプロセスＩＤをファイル名として、一時記憶領域２０内の/tmpディレクトリ階層に代理オブジェクト２１を生成する（図３のステップＳ４０３）。これは、ＯＳが提供するcreat 関数を使用して行われる。
【００６４】
次に、ステップＳ４０３で生成した代理オブジェクト２１のパーミッション情報を設定する（図３のステップＳ４０４）。これは、ＯＳが提供するchmod 関数を使用して設定する。
【００６５】
また、コネクションを行う際にＸサーバ３０に通知するプロセス情報の中に、プロセスＩＤを付加する（図３のステップＳ４０５）。これは、bind関数やconnect 関数の引数に指定するstruct sockaddr 構造体のメンバsun_pathに設定する。
【００６６】
そして、プロセス４０は実際にＸサーバ３０に対してコネクションを行う（図３のステップＳ４０６）。これは、ＯＳが提供するconnect 関数を使用して設定する。このとき、ステップＳ４０５で指定したstruct sockaddr 構造体型変数を指定する。
【００６７】
次に、ステップＳ４０６でのコネクションに成功した後、他プロセス４０−２に対してイベントを送信する（図３のステップＳ４０７）。これは、XSendEvent関数を使用して送信する。
【００６８】
そして、ステップＳ４０７で送信したイベントの結果を受信する（図３のステップＳ４０８）。これはXSendEvent関数の実行結果であり、送信先のプロセス４０−２に対してアクセス権限がなかった場合、エラーとなり、アクセス権限がある場合は、送信成功となる。
【００６９】
Ｘサーバ３０においては、プロセス４０（クライアントプロセス）がステップＳ４０６で依頼してきたコネクションの処理を行う（図３のステップＳ４１１）。これはＯＳが提供するaccept関数を使用し、このときプロセス４０がステップＳ４０５で付加したプロセスＩＤを取得し、クライアント管理テーブル３１に保存する。
【００７０】
Ｘサーバ３０のアクセス制御装置３２は、プロセス４０がステップＳ４０７で行ったイベント送信の依頼を処理する。すなわち、クライアント管理テーブル３１から該当する情報を検索し、そのクライアント管理テーブル３１に格納されている送信元のプロセス４０−１のプロセスＩＤを取得する。同時に、送信先プロセス４０−２のプロセスＩＤも取得する（図３のステップＳ４１２）。
【００７１】
そして、ステップＳ４１２で取得したプロセスＩＤから、一時記憶領域２０内の代理オブジェクト２１を求める（図３のステップＳ４１３）。次に、ステップＳ４１３で求めた代理オブジェクト２１のパーミッション情報を取得する（図３のステップＳ４１４）。これは、ＯＳが提供するstat関数を使用して取得する。
【００７２】
次に、ステップＳ４１４で取得したパーミッション情報をもとに、プロセス４０−１がプロセス４０−２に対し、アクセス権限があるかを検証する（図３のステップＳ４１５）。
【００７３】
図３のステップＳ４１６では、ステップＳ４１５での検証結果により、以降の処理を分岐する。
【００７４】
すなわち、アクセス権限があった場合に（ステップＳ４１６でアクセス権限あり）、送信元プロセス４０−１が送信しようとしているイベントを、送信先プロセス４０−２に送信する（図３のステップＳ４１７）。
【００７５】
そして、送信先プロセス４０−２への送信結果をイベントの送信元プロセス４０−１に通知する（図３のステップＳ４１８）。ステップＳ４１８では、イベントの送信元プロセス４０−１にアクセス権限がなかった場合の処理も行うが（ステップＳ４１６でアクセス権限なし）、この場合はエラーを通知することになる。ステップＳ４１８での送信結果は、プロセス４０のステップＳ４０８で受信される。
【００７６】
次に、図４を参照して、図３で説明した本実施形態の動作の総括を行っておく。
【００７７】
図４は、図１の実施形態の動作を総括する図である。そして、図４は、図１に示した実施形態のプロセスＡ４０−１とプロセスＢ４０−２に加えて、プロセスＣ４０−３も図示したものとなっている。従って、図４の一時記憶領域２０内には、プロセスＡの代理オブジェクト２１−１とプロセスＢの代理オブジェクト２１−２に加えて、プロセスＣの代理オブジェクト２１−３が図示されている。なお、図４において図１に示す構成要素に対応するものは同一の参照数字または符号を付し、その説明を省略するものとする。
【００７８】
図４において、プロセスＡ４０−１が他のプロセス４０、すなわち、プロセスＢ４０−２及びプロセスＣ４０−３に対してイベントを送信しようとしたものとする。
【００７９】
Ｘサーバ３０は、該イベントの送信権限を判定するために、先ず、プロセスＡ４０−１のプロセスＩＤを取得し、また、イベントの送信先であるプロセスＢ４０−２とプロセスＣ４０−３のプロセスＩＤを取得する。そして、取得したプロセスＩＤを元にプロセスＡの代理オブジェクト２１−１、プロセスＢの代理オブジェクト２１−２、プロセスＣの代理オブジェクト２１−３を参照する。次に、プロセスＡの代理オブジェクト２１−１とプロセスＢの代理オブジェクト２１−２のパーミッション情報を参照し、プロセスＡ４０−１がプロセスＢ４０−２に対するアクセス権限を有するかを判定する。ここで、アクセス権限が無いと判定されたものとすると、プロセスＡ４０−１からのイベントは、プロセスＢ４０−２には送信されない。また、プロセスＡの代理オブジェクト２１−１とプロセスＣの代理オブジェクト２１−３のパーミッション情報を参照し、プロセスＡ４０−１がプロセスＣ４０−３に対するアクセス権限を有するかを判定する。ここで、アクセス権限があると判定されたものとすると、プロセスＡ４０−１からのイベントは、プロセスＣ４０−３に送信される。
【００８０】
以上説明したように、本実施形態のプロセス間通信アクセス制御方式によれば、プロセス４０毎に代理オブジェクト２１を生成して一時記憶領域２０に置き、この代理オブジェクト２１のパーミッションを比較して、送信元プロセス４０が送信先プロセス４０に対するアクセス権限を有するかを検証して、アクセスの許可／不許可の判断を行っているので、プロセス間通信におけるアクセス制御を簡便な方式で実現できる、という効果を有している。
【００８１】
次に、図５を参照して、本発明の第２の実施形態について説明する。
【００８２】
図５は、本発明のプロセス間通信アクセス制御方式の第２の実施形態の動作概要を説明する図である。
【００８３】
本発明の第２の実施形態の基本的構成は、図１、図２に示した第１の実施形態とほぼ同様であるが、プロセス４０の代理オブジェクト設定装置４１と、Ｘサーバ３０のアクセス制御装置３２についてさらに工夫したものとなっている。第１の実施形態においては、任意のプロセス４０がＸサーバ３０と接続するつど、動的に代理オブジェクト２１を生成していたが、第２の実施形態では、あらかじめプログラムごとに対応する代理オブジェクト２１を静的に用意しておくことを前提としたものである。そして、代理オブジェクト２１は、そのファイル名として、プロセス４０の元になっているプログラム名を使用するものとする。この構成を図５に示す。
【００８４】
すなわち、図５において、プロセス４０としては、ｍａｉｌｅｒプロセス４０−４と、ｂｒｏｗｓｅｒプロセス４０−５が存在しており、ｍａｉｌｅｒ及びｂｒｏｗｓｅｒがプログラム名となっている。そして、ｍａｉｌｅｒプロセス４０−４は、代理オブジェクト設定装置４１−４を備えており、その代理オブジェクト２１−４が予め一時記憶領域２０に置かれている。代理オブジェクト２１−４のファイル名はｍａｉｌｅｒである。また、ｂｒｏｗｓｅｒプロセス４０−５の代理オブジェクト２１−５も予め一時記憶領域２０に置かれており、代理オブジェクト２１−５のファイル名はｂｒｏｗｓｅｒである。
【００８５】
ｍａｉｌｅｒプロセス４０−４の代理オブジェクト設定装置４１−４は、ｍａｉｌｅｒプロセス４０−４がＸサーバ３０に対して接続を確立するためにXOpenDisplay関数を呼び出すとき、Ｘサーバ３０に送信するデータに自身のプロセスＩＤを付加している。
【００８６】
Ｘサーバ３０のクライアント管理テーブル３１は、Ｘサーバ３０が従来から保持するクライアント情報を管理するテーブルであるが、第１の実施形態と同様に、その情報にクライアント（プロセス４０）が送信するプロセスＩＤも管理するようにしてある。
【００８７】
Ｘサーバ３０のアクセス制御装置３２は、送信元プロセスがXSendEvent関数を用いてイベントを送信するときに、送信先プロセスに対してアクセス権限があるかを検証し、アクセス権限がなければイベント送信を中断し、アクセス権限があればイベントを送信する。アクセス権限の判断は、代理オブジェクト２１のパーミッション情報をもとに判定する。このパーミッション情報は、クライアント管理テーブル３１で管理しているプロセスＩＤを/proc/プロセスＩＤ/cmdlineに適用し、そのcmdlineの内容を参照することで得られるプログラム名から代理オブジェクト２１を求め、その代理オブジェクト２１のパーミッション情報をもとに判断する。
【００８８】
次に、図５を再度参照して、第２の実施形態の動作概要について説明する。
【００８９】
図５は、本発明のプロセス間アクセス制御方式の第２の実施形態の動作概要を説明する図である。なお、図５において図２に示す構成要素に対応するものは同一の参照数字または符号を付し、その説明を省略する。
【００９０】
図５において、ｍａｉｌｅｒプロセス４０−４の代理オブジェクト２１−４と、ｂｒｏｗｓｅｒプロセス４０−５の代理オブジェクト２１−５を、予め一時記憶領域２０に用意しておく（図５のステップＳ１−１）。
【００９１】
そして、ｍａｉｌｅｒプロセス４０−４の代理オブジェクト設定装置４１−４は、Ｘサーバ３０に送信するデータに自身のプロセスＩＤを付加して通知する（図５のステップＳ２）。
【００９２】
ｍａｉｌｅｒプロセス４０−４は、ｂｒｏｗｓｅｒプロセス４０−５に対する通信を行うため、XSendEvent関数を用いてイベントをＸサーバ３０へ送信する（図５のステップＳ３）。
【００９３】
Ｘサーバ３０のアクセス制御装置３２は、送信元のｍａｉｌｅｒプロセス４０−４のプロセスＩＤをクライアント管理テーブル３１から取得すると共に、送信先のｂｒｏｗｓｅｒプロセス４０−５のプロセスＩＤをも取得する。そして、取得したｍａｉｌｅｒプロセス４０−４のプロセスＩＤからプログラム名を得て一時記憶領域２０内の代理オブジェクト２１−４を参照すると共に、ｂｒｏｗｓｅｒプロセス４０−５のプロセスＩＤからプログラム名を得て一時記憶領域２０内の代理オブジェクト２１−５を参照する（図５のステップＳ４）。そして、代理オブジェクト２１−４と代理オブジェクト２１−５のパーミッション情報から、ｍａｉｌｅｒプロセス４０−４がｂｒｏｗｓｅｒプロセス４０−５に対して、アクセス権限があるかを判定する（図５のステップＳ５）。
【００９４】
ｍａｉｌｅｒプロセス４０−４がｂｒｏｗｓｅｒプロセス４０−５に対するアクセス権限を有しない場合には、ｂｒｏｗｓｅｒプロセス４０−５へのイベントの送信を中断する。アクセス権限を有する場合には、ｂｒｏｗｓｅｒプロセス４０−５へイベントを送信し（図５のステップＳ６）、ｂｒｏｗｓｅｒプロセス４０−５はXNextEvent関数により該イベントを受信する。
【００９５】
以上の処理は第１の実施形態で述べた利点を踏まえた上で、さらに組み込みなどの、すでに実行するプログラムが決まっている環境などで有効である。また、代理オブジェクト２１のパーミッションをあらかじめ設定するためその設定の自由度が増し、代理オブジェクト２１を生成する仕組みが不要となる利点も挙げられる。
【図面の簡単な説明】
【００９６】
【図１】本発明のプロセス間通信アクセス制御方式の一実施形態を示すブロック図である。
【図２】図１の実施形態の動作概要を説明する図である。
【図３】図１の実施形態の動作を説明するフローチャートである。
【図４】図１の実施形態の動作を総括する図である。
【図５】本発明のプロセス間通信アクセス制御方式の第２の実施形態の動作概要を説明する図である。
【符号の説明】
【００９７】
１０    情報処理装置
２０    一時記憶領域
２１    代理オブジェクト
３０    Ｘサーバ
３１    クライアント管理テーブル
３２    アクセス制御装置
４０    プロセス
４１    代理オブジェクト設定装置
【図１】
2005250649.tif 000003
【図２】
2005250649.tif 000004
【図３】
2005250649.tif 000005
【図４】
2005250649.tif 000006
【図５】
2005250649.tif 000007