JP7181491B2 - Information processing system, access control device, access control method and access control program - Google Patents
Information processing system, access control device, access control method and access control program Download PDFInfo
- Publication number
- JP7181491B2 JP7181491B2 JP2021534503A JP2021534503A JP7181491B2 JP 7181491 B2 JP7181491 B2 JP 7181491B2 JP 2021534503 A JP2021534503 A JP 2021534503A JP 2021534503 A JP2021534503 A JP 2021534503A JP 7181491 B2 JP7181491 B2 JP 7181491B2
- Authority
- JP
- Japan
- Prior art keywords
- plug
- data
- access control
- user
- access
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
- Debugging And Monitoring (AREA)
Description
本発明は情報処理システム、アクセス制御装置、アクセス制御方法およびアクセス制御プログラムに関する。 The present invention relates to an information processing system, an access control device, an access control method and an access control program.
情報処理システムとして、様々な端末装置からイベントメッセージを収集し、情報処理システムが保持するデータをイベントメッセージに応じて更新し、データの更新に応じた情報処理を実行するイベント処理システムがある。例えば、情報処理システムは、スマートフォンや車載装置などの端末装置から、センサデバイスを用いて測定されたセンサデータを含むイベントメッセージを収集し、端末装置の状態を示すステートデータを保持する。例えば、情報処理システムは、ステートデータの更新を検出し、現在の端末装置の状態に応じた情報を提供するという情報サービスを実現する。 As an information processing system, there is an event processing system that collects event messages from various terminal devices, updates data held by the information processing system according to the event messages, and executes information processing according to the updated data. For example, the information processing system collects event messages including sensor data measured using sensor devices from terminal devices such as smartphones and in-vehicle devices, and holds state data indicating the state of the terminal devices. For example, the information processing system realizes an information service that detects update of state data and provides information according to the current state of the terminal device.
なお、複数のエンティティ装置の間でイベントメッセージを転送するイベント転送方法が提案されている。提案のイベント転送方法では、各エンティティ装置は、受信したイベントメッセージの属性情報とルータに登録されたフィルタ情報とを照合し、照合結果に基づいて不要なイベントメッセージの転送を抑止する。また、クライアント装置に接続されたデバイスにサーバ装置からアクセスすることを許容するデバイス管理システムが提案されている。提案のデバイス管理システムでは、クライアント装置は、クライアントアプリケーションとデバイスとの間のデータ通信と、サーバ装置とデバイスとの間のデータ通信を、排他的に実行するよう制御する。また、IoT(Internet of Things)の複数のエンティティ装置の間でイベントメッセージを送信する方法が提案されている。 An event transfer method for transferring event messages between a plurality of entity devices has been proposed. In the proposed event forwarding method, each entity device compares the attribute information of the received event message with the filter information registered in the router, and suppresses the forwarding of unnecessary event messages based on the result of the matching. A device management system has also been proposed that allows a server device to access a device connected to a client device. In the proposed device management system, the client device exclusively controls data communication between the client application and the device and data communication between the server device and the device. Also, a method of transmitting an event message between a plurality of IoT (Internet of Things) entity devices has been proposed.
複数のデータ項目を含むデータを保持する情報処理システムに対して、それら複数のデータ項目の少なくとも一部を利用した新たな情報サービスを追加したいことがある。そこで、あるユーザ(例えば、ある開発者)のプログラムを、データの更新に応じて当該プログラムが実行されるように情報処理システムに登録することが考えられる。 A new information service using at least part of a plurality of data items may be desired to be added to an information processing system that holds data including a plurality of data items. Therefore, it is conceivable to register a program of a certain user (for example, a certain developer) in the information processing system so that the program is executed according to the update of data.
ただし、情報セキュリティの観点から、収集される様々なデータ項目の中には、当該ユーザにアクセスを許可してもよいデータ項目とアクセスを許可したくないデータ項目とが混在することがある。よって、ユーザのプログラムからのデータアクセスの認証が問題となる。この点、プログラムを登録した後に、あるデータ項目に対するアクセスが発生する毎に、ACL(Access Control List)などの認証情報を参照して当該データ項目に対するアクセスの可否を判断する方法も考えられる。しかし、データアクセス毎にアクセス権限を確認するようにすると、オーバヘッドによりデータ処理が遅延するおそれがある。 However, from the viewpoint of information security, among the various data items collected, there may be a mixture of data items to which the user may be permitted to access and data items to which the user should not be permitted to access. Thus, authentication of data access from the user's program becomes a problem. In this regard, a method of referring to authentication information such as an ACL (Access Control List) and determining whether or not to allow access to a data item each time a data item is accessed after program registration is also conceivable. However, if the access authority is confirmed for each data access, data processing may be delayed due to overhead.
1つの側面では、本発明は、追加のプログラムを用いたデータ処理の遅延を抑制できる情報処理システム、アクセス制御装置、アクセス制御方法およびアクセス制御プログラムを提供することを目的とする。 An object of the present invention in one aspect is to provide an information processing system, an access control device, an access control method, and an access control program that can suppress delays in data processing using an additional program.
1つの態様では、データ処理装置とアクセス制御装置とを有する情報処理システムが提供される。データ処理装置は、複数のデータ項目を含むデータを記憶し、登録されたプログラムが存在する場合、データの更新に応じて登録されたプログラムを実行する。アクセス制御装置は、ユーザの対象プログラムを含む登録要求を受け付け、対象プログラムを分析して複数のデータ項目のうち対象プログラムからアクセスされ得るデータ項目を検出し、ユーザがアクセス権限を有するデータ項目またはユーザがアクセス権限を有しないデータ項目を示すアクセス制御情報に基づいて、検出したデータ項目に対するアクセス権限をユーザが有するか判定し、アクセス権限を有すると判定した場合、対象プログラムをデータ処理装置に登録することを許可する。 In one aspect, an information processing system is provided having a data processing device and an access control device. A data processing device stores data including a plurality of data items, and when a registered program exists, executes the registered program according to the update of the data. The access control device accepts a registration request including a user's target program, analyzes the target program, detects data items that can be accessed from the target program from among a plurality of data items, and determines data items to which the user has access authority or user access rights. determines whether the user has access authority to the detected data item based on access control information indicating data items to which the user does not have access authority, and registers the target program in the data processing apparatus when it is determined that the user has access authority Allow
また、1つの態様では、記憶部と処理部とを有するアクセス制御装置が提供される。また、1つの態様では、コンピュータが実行するアクセス制御方法が提供される。また、1つの態様では、コンピュータに実行させるアクセス制御プログラムが提供される。 Also, in one aspect, an access control device having a storage unit and a processing unit is provided. In one aspect, a computer implemented access control method is also provided. Also, in one aspect, an access control program for execution by a computer is provided.
1つの側面では、追加のプログラムを用いたデータ処理の遅延が抑制される。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。In one aspect, data processing delays using additional programs are reduced.
The above and other objects, features and advantages of the present invention will become apparent from the following description taken in conjunction with the accompanying drawings which represent exemplary preferred embodiments of the invention.
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。Hereinafter, this embodiment will be described with reference to the drawings.
[First embodiment]
A first embodiment will be described.
図1は、第1の実施の形態の情報処理システムの例を説明する図である。
第1の実施の形態の情報処理システムは、データ処理装置10およびアクセス制御装置20を含む。データ処理装置10およびアクセス制御装置20は、ネットワークに接続されている。データ処理装置10およびアクセス制御装置20を、コンピュータ、情報処理装置、サーバコンピュータ、サーバ装置などと言うこともできる。FIG. 1 is a diagram illustrating an example of an information processing system according to the first embodiment.
The information processing system of the first embodiment includes a
データ処理装置10は、データを記憶し、データの更新に応じてプログラムを実行するというイベント駆動型の情報処理を行う。第1の実施の形態の情報処理システムを、イベント処理システムと言うこともできる。第1の実施の形態の情報処理システムは、2以上のデータ処理装置を含む並列処理システムであってもよい。データ処理装置10を、ノードと言うこともできる。データ処理装置10に対しては、データの更新に応じて実行される新たなプログラムを登録することができる。アクセス制御装置20は、あるユーザの新たなプログラムをデータ処理装置10に登録する際、当該ユーザのデータへのアクセス権限を確認してプログラムの登録可否を判定する。アクセス制御装置20を、ファイアウォール、ゲートウェイ、セキュリティ装置、プログラム検査装置などと言うこともできる。
The
データ処理装置10は、記憶部11および処理部12を有する。アクセス制御装置20は、記憶部21および処理部22を有する。記憶部11および記憶部21は、RAM(Random Access Memory)などの揮発性半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部12,22は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12,22は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、メモリ(記憶部11,21でもよい)に記憶されたプログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
The
記憶部11は、データ13を記憶する。データ13は、データ項目X,Y,Zなどの複数のデータ項目を含む。複数のデータ項目を、複数のレコードと言うこともできる。データ13は、キーとバリューの組を複数含むキーバリュー形式データであってもよい。データ13は更新されることがある。データ13は、端末装置の状態を示すステートデータであってもよく、端末装置からデータ処理装置10に送信されるイベントメッセージに応じて更新されてもよい。記憶部11は、データ13に対応付けてプログラムを記憶することがある。例えば、記憶部11は、特定のデータ項目に対応付けてプログラムを記憶する。
The
処理部12は、データ13に対してプログラムを登録することがある。このプログラムは、データに対して着脱可能であり、プラグインと言うこともできる。プログラムの登録は、アクセス制御装置20から要求されることも有り得る。プログラムの登録は、データ処理装置10の稼働中に動的に行われてもよい。また、処理部12は、データ13の更新を検出する。例えば、処理部12は、端末装置から受信するイベントメッセージに応じてデータ13を更新する。データ13の更新を検出したときに、登録されたプログラムが存在する場合、処理部12は、登録されたプログラムを起動する。登録されたプログラムが特定のデータ項目に対応付けられている場合、処理部12は、特定のデータ項目の値の更新を検出したときに、登録されたプログラムを起動してもよい。
The
記憶部21は、アクセス制御情報24を記憶する。アクセス制御情報24は、データ項目X,Y,Zなどの複数のデータ項目のうち、あるユーザがアクセス権限を有するデータ項目、または、あるユーザがアクセス権限を有しないデータ項目を示す。アクセス制御情報24を、アクセス制御リスト(ACL)と言うこともできる。アクセス制御情報24は、いわゆるホワイトリストでもよいしブラックリストでもよい。アクセス制御情報24は、例えば、管理者によって予め作成される。
The
処理部22は、あるユーザの対象プログラム23を含む登録要求を受け付ける。登録要求は、データ処理装置10への対象プログラム23の登録の要求を示す。対象プログラム23を、プラグインと言うこともできる。対象プログラム23は、例えば、開発者である当該ユーザにより作成されたものである。アクセス制御装置20は、当該ユーザが使用する開発端末から登録要求を受信してもよい。対象プログラム23は、高水準言語で記述されたソースコードでもよいし、ソースコードから変換されて中間言語で記述された中間コードでもよいし、機械可読なオブジェクトコードでもよい。
The
処理部22は、登録要求に含まれる対象プログラム23を分析して、データ項目X,Y,Zなどの複数のデータ項目のうち、対象プログラム23からアクセスされ得るデータ項目を検出する。例えば、処理部22は、抽象解釈(Abstract Interpretation)などの静的プログラム解析方法を用いて、アクセス先のデータ項目を示す変数の取り得る値を抽出し、アクセス先となり得るデータ項目を特定する。アクセス先のデータ項目を示す変数は、例えば、データ13にアクセスする関数の引数として用いられる変数である。
The
処理部22は、アクセス制御情報24に基づいて、検出したデータ項目に対するアクセス権限を当該ユーザが有するか判定する。検出したデータ項目が2以上ある場合、処理部22は、検出した2以上のデータ項目の全てに対して当該ユーザがアクセス権限を有するか判定する。例えば、対象プログラム23から、アクセスされ得るデータ項目としてデータ項目Yが検出されたとする。これに対して、アクセス制御情報24は、ユーザがデータ項目X,Yに対するアクセス権限を有し、データ項目Zに対するアクセス権限を有しないことを示しているとする。その場合、処理部22は、検出されたデータ項目Yに対するアクセス権限をユーザが有していることを確認する。
Based on the
アクセス権限を有すると判定した場合、処理部22は、対象プログラム23をデータ処理装置10に登録することを許可する。その場合、例えば、アクセス制御装置20は、対象プログラム23を含む登録要求をデータ処理装置10に転送する。これにより、データ処理装置10に対象プログラム23が登録される。例えば、データ処理装置10において、データ13のデータ項目Yが更新されると対象プログラム23が起動される。一方、アクセス権限を有しないと判定した場合、処理部22は、対象プログラム23をデータ処理装置10に登録することを拒否する。その場合、例えば、アクセス制御装置20は、対象プログラム23を含む登録要求をデータ処理装置10に転送することを抑止する。アクセス制御装置20は、開発端末に拒否メッセージを送信してもよい。
When determining that the user has access authority, the
第1の実施の形態の情報処理システムによれば、対象プログラム23をデータ処理装置10に登録する前に、対象プログラム23を分析してアクセスされ得るデータ項目が検出される。そして、アクセス制御情報24に基づいて、検出されたデータ項目に対するアクセス権限をユーザが有するか判定され、アクセス権限を有する場合、データ13の更新に応じて実行されるように対象プログラム23がデータ処理装置10に登録される。データ処理装置10は、登録後に対象プログラム23からデータ13へのアクセスが発生した際には、アクセス先のデータ項目に対するアクセス権限を確認しなくてもよい。
According to the information processing system of the first embodiment, before the
これにより、データ13の中に、あるユーザにアクセスを許可してもよいデータ項目とアクセスを許可したくないデータ項目とが混在していても、データ項目単位のアクセス制御を実現することができ、情報セキュリティを向上させることができる。また、対象プログラム23の登録後は、データ処理装置10においてアクセス権限の確認を省略することができ、アクセス毎にアクセス制御情報24を参照しなくてもよい。これにより、実際のアクセス時にアクセス権限を確認する方法と比べて、アクセス権限の確認のオーバヘッドを削減でき、データ処理装置10のデータ処理の遅延を抑制することができる。
As a result, even if the
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。[Second embodiment]
Next, a second embodiment will be described.
FIG. 2 is a diagram illustrating an example of an information processing system according to the second embodiment.
第2の実施の形態の情報処理システムは、デバイスからデータセンタにイベントメッセージを収集し、イベントメッセージをリアルタイムに処理してイベント駆動型のサービスを提供するリアルタイム動的イベント処理システムである。 The information processing system of the second embodiment is a real-time dynamic event processing system that collects event messages from devices to a data center, processes the event messages in real time, and provides event-driven services.
第2の実施の形態の情報処理システムは、ネットワーク52に接続されたデータセンタ50、デバイス60,60a,60b,60c,60d,60eなどの複数のデバイス、および、開発装置70,70a,70bなどの複数の開発装置を含む。データセンタ50は、ネットワーク51に接続されたファイアウォール100、メッセージサーバ200、ノード300,300a,300bなどの複数のノード、および、業務サーバ400,400a,400bなどの複数の業務サーバを含む。
The information processing system of the second embodiment includes a
ネットワーク51は、例えば、LAN(Local Area Network)などのデータ通信ネットワークである。ネットワーク52は、例えば、インターネットなどの広域データ通信ネットワークである。なお、ファイアウォール100は、第1の実施の形態のアクセス制御装置20に対応し、ノード300は、第1の実施の形態のデータ処理装置10に対応する。
The
デバイス60,60a,60b,60c,60d,60eは、イベントの発生を検出し、イベントを示すイベントメッセージをネットワーク52を介してメッセージサーバ200に送信する端末装置である。デバイス60,60a,60b,60c,60d,60eは、センサを用いて測定されたセンサデータを、イベントメッセージに含めて送信する。
The
デバイス60,60a,60bは、例えば、スマートフォンやタブレット端末などの携帯端末装置である。デバイス60c,60d,60eは、例えば、車両に搭載される車載装置である。デバイス60,60a,60b,60c,60d,60eは、GPS(Global Positioning System)を用いて測定された緯度および経度を含む位置情報を、イベントメッセージに含めて送信してもよい。また、デバイス60,60a,60b,60c,60d,60eは、現在の移動速度を、イベントメッセージに含めて送信してもよい。
開発装置70,70a,70bは、データセンタ50で稼働させるアプリケーションソフトウェアの開発に使用される端末装置である。開発装置70,70a,70bは、アプリケーションソフトウェアの開発者や管理者によって使用される。例えば、開発装置70は管理者によって使用され、開発装置70aは開発者Aによって使用され、開発装置70bは開発装置70aとは異なる開発者である開発者Bによって使用される。
The
開発装置70,70a,70bは、ノード300,300a,300bを停止させずに、着脱可能なアプリケーションプログラムであるプラグインをノード300,300a,300bに追加することができる。また、開発装置70,70a,70bは、ノード300,300a,300bを停止させずに、プラグインをノード300,300a,300bから削除することができる。その際、開発装置70,70a,70bは、プラグインの追加または削除を示す制御メッセージをファイアウォール100に送信する。管理者が使用する開発装置70は、ファイアウォール100に対して、ノード300,300a,300bに配置可能なプラグインの条件を示す制御情報を設定する。
The
ファイアウォール100は、開発装置70,70a,70bから制御メッセージを受信し、プラグインの変更の可否を判定するサーバコンピュータである。ノード300,300a,300bのプラグインの変更は、ファイアウォール100を経由して行われる。ファイアウォール100を、ゲートウェイやセキュリティ装置などと言うこともできる。また、プラグインに関して、開発者や管理者をユーザと言うことができる。
The
ファイアウォール100は、ノード300,300a,300bに配置可能なプラグインの条件を示す制御情報を保持している。ファイアウォール100は、開発装置70,70a,70bから制御メッセージを受信すると、受信した制御メッセージによって要求されるプラグインの追加や削除などのプラグインの変更が、所定のセキュリティ条件を満たすか判定する。所定のセキュリティ条件を満たす場合、ファイアウォール100は、制御メッセージをメッセージサーバ200に転送する。一方、所定のセキュリティ条件を満たさない場合、ファイアウォール100は、制御メッセージの転送を拒否する。
The
メッセージサーバ200は、イベントメッセージや制御メッセージなどのメッセージを転送するサーバコンピュータである。メッセージサーバ200は、受信したメッセージを保持するメッセージキューを有し、各メッセージをノード300,300a,300bの1つに転送する。メッセージサーバ200を、負荷分散装置と言うこともできる。
The
メッセージサーバ200は、デバイス60,60a,60b,60c,60d,60eからイベントメッセージを受信し、ノード300,300a,300bにイベントメッセージを振り分ける。また、メッセージサーバ200は、ファイアウォール100から制御メッセージを受信し、ノード300,300a,300bに制御メッセージを振り分ける。制御メッセージについては、ファイアウォール100によるセキュリティ検査が行われる。そのため、メッセージサーバ200は、開発装置70,70a,70bからメッセージサーバ200に直接送信された制御メッセージなど、ファイアウォール100を経由しない制御メッセージを拒否するようにする。
The
ノード300,300a,300bは、デバイス60,60a,60b,60c,60d,60eのイベントメッセージを分散して処理するサーバコンピュータである。ノード300,300a,300bは、デバイス60,60a,60b,60c,60d,60eの状態を示すステートデータを分散して保持する。
ノード300,300a,300bは、他ノードで管理されているデバイスのイベントメッセージを受信すると、当該他ノードにイベントメッセージを転送する。ノード300,300a,300bは、自ノードで管理しているデバイスのイベントメッセージを受信すると、そのデバイスのステートデータを更新する。例えば、ノード300,300a,300bは、イベントメッセージに含まれるセンサデータをステートデータに上書きする。更新されたステートデータに対してプラグインが対応付けられている場合、ノード300,300a,300bは、対応付けられたプラグインを起動する。
When
ノード300,300a,300bは、プラグインを実行してステートデータを処理し、イベント駆動型の情報サービスを起動する。例えば、ノード300,300a,300bは、緯度および経度を含む位置情報の更新に応じて、所定のエリアに存在する移動端末装置を検出する。また、例えば、ノード300,300a,300bは、移動速度を示す速度情報の更新に応じて、渋滞に巻き込まれている車載装置を検出する。イベント駆動型の情報サービスは、プラグインの追加によって実現することができる。ノード300,300a,300bは、プラグインの実行結果に応じて、外部の業務システムを形成する業務サーバ400,400a,400bを呼び出すことがある。
また、ノード300,300a,300bは、メッセージサーバ200から制御メッセージを受信する。ノード300,300a,300bは、プラグインの変更対象が他ノードである制御メッセージを受信すると、当該他ノードに制御メッセージを転送する。ノード300,300a,300bは、プラグインの変更対象が自ノードである制御メッセージを受信すると、制御メッセージに応じてプラグインの追加または削除を行う。プラグイン自体であるバイナリプログラムは、制御メッセージに含まれて配布される。このため、複数のノードから共通リポジトリへのアクセスの集中を抑制することができる。
業務サーバ400,400a,400bは、リアルタイム動的イベント処理の外部の業務システムを形成するサーバコンピュータである。業務サーバ400,400a,400bは、ノード300,300a,300bからイベント処理結果を受信し、イベント処理結果に基づいて業務アプリケーションを実行し、業務サービスを提供する。
例えば、業務サーバ400は、人事管理システムを形成する。業務サーバ400aは、各種の情報をまとめるダッシュボードシステムを形成する。その場合、業務サーバ400aは、デバイス60,60a,60b,60c,60d,60eに各種の情報を提供してもよいし、所定の管理者に各種の情報を提供してもよい。業務サーバ400bは、運転管理システムを形成する。その場合、業務サーバ400bは、道路交通情報を他のシステムに提供してもよいし、各車両の自動運転制御を実現してもよい。
For example, the
図3は、ファイアウォールのハードウェア例を示すブロック図である。
ファイアウォール100は、CPU101、RAM102、HDD103、画像インタフェース104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。ファイアウォール100の上記ユニットは、バスに接続されている。なお、CPU101は、第1の実施の形態の処理部22に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部21に対応する。デバイス60,60a,60b,60c,60d,60e、開発装置70,70a,70b、メッセージサーバ200、ノード300,300a,300bおよび業務サーバ400,400a,400bも、ファイアウォール100と同様のハードウェアを有する。FIG. 3 is a block diagram showing a hardware example of a firewall.
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、ファイアウォール100は複数のプロセッサを備えてもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
The
RAM102は、CPU101が実行するプログラムやCPU101が演算に使用するデータを一時的に記憶する揮発性の半導体メモリである。なお、ファイアウォール100は、RAM以外の種類のメモリを備えてもよく、複数のメモリを備えてもよい。
The
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。なお、ファイアウォール100は、フラッシュメモリやSSD(Solid State Drive)など他の種類のストレージを備えてもよく、複数のストレージを備えてもよい。
The
画像インタフェース104は、CPU101からの命令に従って、ファイアウォール100に接続された表示装置111に画像を出力する。表示装置111として、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイ、プロジェクタなど、任意の種類の表示装置を使用することができる。また、ファイアウォール100に、プリンタなど表示装置111以外の出力デバイスが接続されてもよい。
The
入力インタフェース105は、ファイアウォール100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112として、マウス、タッチパネル、タッチパッド、キーボードなど、任意の種類の入力デバイスを使用することができる。また、ファイアウォール100に複数種類の入力デバイスが接続されてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、半導体メモリなど、任意の種類の記録媒体を使用することができる。媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
The
通信インタフェース107は、ネットワーク51に接続され、他の情報処理装置と通信する。通信インタフェース107は、例えば、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースである。
The
次に、リアルタイム動的イベント処理について説明する。
図4は、ノードの機能例を示すブロック図である。
ノード300,300a,300bは、以下のソフトウェアモジュールを有する。ノード300は、メッセージ転送部310,310aなどの複数のメッセージ転送部、デバイスオブジェクト320,320aなどの複数のデバイスオブジェクト、および、サービスオブジェクト330などの1以上のサービスオブジェクトを有する。ノード300aは、メッセージ転送部310b,310cなどの複数のメッセージ転送部、デバイスオブジェクト320b,320cなどの複数のデバイスオブジェクト、および、サービスオブジェクト330aなどの1以上のサービスオブジェクトを有する。ノード300bは、メッセージ転送部310d,310eなどの複数のメッセージ転送部、デバイスオブジェクト320d,320eなどの複数のデバイスオブジェクト、および、サービスオブジェクト330bなどの1以上のサービスオブジェクトを有する。Next, real-time dynamic event processing will be described.
FIG. 4 is a block diagram showing an example of functions of a node.
メッセージサーバ200は、イベントメッセージを受信し、メッセージ転送部310,310a,310b,310c,310d,310eにイベントメッセージを振り分けて転送する。イベントメッセージの振り分けは、例えば、ラウンドロビン方式で行う。メッセージ転送部310,310a,310b,310c,310d,310eは、イベントメッセージを送信したデバイスに対応するデバイスオブジェクトを判定し、判定したデバイスオブジェクトに対してイベントメッセージを転送する。このとき、メッセージ転送部310,310a,310b,310c,310d,310eは、何れのデバイスオブジェクトが何れのノードに配置されているかを知っているものとする。転送先のデバイスオブジェクトは、同一ノードにあることもあるし他ノードにあることもある。
The
デバイスオブジェクト320,320a,320b,320c,320d,320eは、デバイスの状態を示すステートデータを管理する。1つのデバイスオブジェクトは1つのデバイスに対応する。具体的には、デバイスオブジェクト320はデバイス60に対応する。デバイスオブジェクト320aはデバイス60aに対応する。デバイスオブジェクト320bはデバイス60bに対応する。デバイスオブジェクト320cはデバイス60cに対応する。デバイスオブジェクト320dはデバイス60dに対応する。デバイスオブジェクト320eはデバイス60eに対応する。
Device objects 320, 320a, 320b, 320c, 320d, and 320e manage state data indicating device states. One device object corresponds to one device. Specifically,
デバイスオブジェクト320,320a,320b,320c,320d,320eは、イベントメッセージを受信すると、イベントメッセージに含まれるセンサデータを用いて自身のステートデータを更新する。ステートデータは、キーとバリューを対応付けたキーバリュー形式データである。デバイスオブジェクト320,320a,320b,320c,320d,320eは、あるキーとバリューの組がイベントメッセージに含まれている場合、当該キーに対応するバリューをステートデータに上書きする。 When the device objects 320, 320a, 320b, 320c, 320d, and 320e receive the event message, they update their own state data using the sensor data included in the event message. State data is key-value format data in which keys and values are associated with each other. The device objects 320, 320a, 320b, 320c, 320d, and 320e overwrite the state data with the value corresponding to the key when the event message includes a key-value pair.
デバイスオブジェクト320,320a,320b,320c,320d,320eでは、ステートデータのキーに対してプラグインを対応付けることが可能である。プラグインを追加する制御メッセージでは、対象のデバイスオブジェクトと対象のキーが指定される。よって、デバイスオブジェクトによって異なるプラグインが配置されることがある。また、同一のデバイスオブジェクトに2以上のプラグインが配置されることがある。それら2以上のプラグインは、同一のキーに対応付けられることもあるし異なるキーに対応付けられることもある。1つのプラグインが2以上のキーに対応付けられることもある。 In device objects 320, 320a, 320b, 320c, 320d, and 320e, plug-ins can be associated with state data keys. The control message to add the plug-in specifies the target device object and the target key. Therefore, different plug-ins may be arranged depending on the device object. Also, two or more plug-ins may be placed in the same device object. These two or more plug-ins may be associated with the same key or with different keys. A single plug-in may be associated with more than one key.
デバイスオブジェクト320,320a,320b,320c,320d,320eは、バリューが更新されたキーにプラグインが対応付けられている場合、そのプラグインを起動する。デバイスオブジェクト320,320a,320b,320c,320d,320eは、プラグインに従って、ステートデータの参照または更新を行うことがあり、他のイベントメッセージを生成して何れかのサービスオブジェクトに送信することがある。 The device objects 320, 320a, 320b, 320c, 320d, and 320e activate the plug-in when the key whose value has been updated is associated with the plug-in. Device objects 320, 320a, 320b, 320c, 320d, and 320e may reference or update state data, and may generate and send other event messages to any of the service objects, depending on the plug-in. .
サービスオブジェクト330,330a,330bは、情報サービスに対応するオブジェクトである。例えば、サービスオブジェクト330,330a,330bは、所定のエリアに存在するデバイスの検出、移動速度が閾値未満のデバイスの検出、移動速度が閾値を超えるデバイスの検出などを行う。サービスオブジェクト330,330a,330bは、プラグインの実行に伴ってデバイスオブジェクト320,320a,320b,320c,320d,320eからイベントメッセージを受信することがある。 Service objects 330, 330a, and 330b are objects corresponding to information services. For example, the service objects 330, 330a, and 330b detect devices existing in a predetermined area, detect devices whose moving speed is less than a threshold value, detect devices whose moving speed exceeds a threshold value, and the like. The service objects 330, 330a, 330b may receive event messages from the device objects 320, 320a, 320b, 320c, 320d, 320e as the plug-ins are executed.
イベントメッセージの送信元のデバイスオブジェクトは、同一ノードにあることもあるし他ノードにあることもある。何れのデバイスオブジェクトが何れのサービスオブジェクトにイベントメッセージを送信するかは、プラグインの実装による。サービスオブジェクト330,330a,330bは、ステートデータを保持することがある。サービスオブジェクト330,330a,330bは、受信したイベントメッセージおよびステートデータに基づいてデータ処理を行う。その結果、サービスオブジェクト330,330a,330bは、何れかの業務サーバにメッセージを送信することがある。 The device object that sent the event message may be in the same node or in another node. Which device object sends the event message to which service object depends on the implementation of the plug-in. Service objects 330, 330a, 330b may hold state data. Service objects 330, 330a, 330b perform data processing based on received event messages and state data. As a result, service objects 330, 330a, 330b may send messages to any business server.
また、メッセージサーバ200は、制御メッセージをファイアウォール100から受信し、メッセージ転送部310,310a,310b,310c,310d,310eに制御メッセージを振り分けて転送する。メッセージ転送部310,310a,310b,310c,310d,310eは、プラグイン変更の対象となるデバイスオブジェクトを判定し、判定したデバイスオブジェクトに対して制御メッセージを転送する。
Also, the
デバイスオブジェクト320,320a,320b,320c,320d,320eは、プラグイン追加の制御メッセージを受信すると、制御メッセージに含まれるプラグインを、制御メッセージで指定されたキーに対応付けて保存する。これにより、そのキーに対応するバリューの更新時にそのプラグインが実行されることになる。また、デバイスオブジェクト320,320a,320b,320c,320d,320eは、プラグイン削除の制御メッセージを受信すると、制御メッセージで指定されたプラグインを削除する。このように、開発者によって動的にプラグインの追加や削除が可能となる。 When the device objects 320, 320a, 320b, 320c, 320d, and 320e receive the plug-in addition control message, they store the plug-in included in the control message in association with the key specified by the control message. This will cause the plugin to be executed when the value corresponding to that key is updated. When the device objects 320, 320a, 320b, 320c, 320d, and 320e receive the plug-in deletion control message, they delete the plug-in specified by the control message. In this way, developers can dynamically add or remove plug-ins.
図5は、デバイスオブジェクトの機能例を示すブロック図である。
デバイスオブジェクト320は、ステート記憶部321、プラグイン記憶部322、メッセージ判別部323、ステート管理部324、プラグイン管理部325およびプラグイン実行部326を有する。他のデバイスオブジェクトも同様のモジュールを有する。ステート記憶部321およびプラグイン記憶部322には、例えば、RAMの記憶領域のうちデバイスオブジェクト320に割り当てられた記憶領域が使用される。メッセージ判別部323、ステート管理部324、プラグイン管理部325およびプラグイン実行部326は、例えば、プログラムを用いて実装される。FIG. 5 is a block diagram showing an example of functions of a device object.
The
ステート記憶部321は、キーバリュー形式のステートデータを記憶する。ステートデータには、キーとバリューの組が1つ以上含まれる。プラグイン記憶部322は、ステートデータに含まれるキーと対応付けてプラグインを記憶する。デバイスオブジェクト320が受信する制御メッセージには、コンパイル済みのプラグインプログラムが含まれている。プラグインは、デバイスオブジェクト320にて実行可能に配置される。
The
メッセージ判別部323は、何れかのメッセージ転送部からメッセージを受信し、受信したメッセージの種別を判別する。メッセージの種別には、イベントとプラグイン追加とプラグイン削除が含まれる。メッセージ判別部323は、イベントメッセージをステート管理部324に出力する。また、メッセージ判別部323は、プラグイン追加またはプラグイン削除を示す制御メッセージをプラグイン管理部325に出力する。
The
ステート管理部324は、メッセージ判別部323からイベントメッセージを取得する。すると、ステート管理部324は、イベントメッセージからキーとバリューの組を抽出する。1つのイベントメッセージに、キーとバリューの組が2つ以上含まれていることもある。ステート管理部324は、ステート記憶部321に記憶されたステートデータから、イベントメッセージから抽出されたキーを検索し、当該キーに対応するステートデータのバリューを、イベントメッセージから抽出されたバリューに更新する。なお、イベントメッセージから抽出されたキーがステートデータに存在しない場合、ステート管理部324は、抽出されたキーとバリューの組をステートデータに追加すればよい。
The
プラグイン管理部325は、メッセージ判別部323からプラグイン追加の制御メッセージを取得する。すると、プラグイン管理部325は、制御メッセージで指定されたキーと対応付けて、制御メッセージに含まれるプラグインをプラグイン記憶部322に保存する。また、プラグイン管理部325は、メッセージ判別部323からプラグイン削除の制御メッセージを取得する。すると、プラグイン管理部325は、制御メッセージで指定されたプラグインをプラグイン記憶部322から削除する。
The plug-in
プラグイン追加にあたり、プラグイン管理部325は、ステートデータの更新に応答してすぐにプラグインが実行されるように、制御メッセージに含まれるプラグラインのプログラムに対して変換処理を行うことがある。例えば、制御メッセージに含まれるプラグラインのプログラムは、ソースコードからコンパイルされて所定の低水準言語で記述されたバイトコードであることがある。その場合、プラグイン管理部325は、クラスローダを用いて当該バイトコードを実行可能クラスに変換し、変換された当該プラグインをすぐに呼び出し可能な状態に登録することが考えられる。
When adding a plug-in, the plug-in
プラグイン実行部326は、ステート管理部324によってステートデータのキーに対応するバリューが更新されたことを検出する。すると、プラグイン実行部326は、バリューが更新されたキーに対応付けられているプラグインを検索する。プラグイン実行部326は、該当するプラグインが存在する場合、そのプラグインを実行する。なお、あるキーに対応するバリューがイベントメッセージに応じて上書きされても、バリューが上書き前から変化していない場合には、バリューが更新されていないとみなしてもよい。
The plug-in
図6は、ステートテーブルとプラグインテーブルの例を示す図である。
ステートテーブル327は、ステート記憶部321に記憶される。ステートテーブル327には、キーとバリューを対応付けた1以上のレコードが登録される。キーには、例えば、速度、緯度、経度などが含まれる。これらのキーに対応するバリューは、デバイス60がセンサを用いて測定し、イベントメッセージに含めて送信したものである。例えば、デバイス60が、これらのバリューを含むイベントメッセージを定期的に送信する。FIG. 6 is a diagram showing examples of a state table and a plug-in table.
State table 327 is stored in
デバイスオブジェクト320は、「速度」のバリューを含むイベントメッセージを受信すると、「速度」と対応付けてそのバリューをステートテーブル327に上書きする。同様に、デバイスオブジェクト320は、「緯度」のバリューを含むイベントメッセージを受信すると、「緯度」と対応付けてそのバリューをステートテーブル327に上書きする。デバイスオブジェクト320は、「経度」のバリューを含むイベントメッセージを受信すると、「経度」と対応付けてそのバリューをステートテーブル327に上書きする。速度、緯度および経度に対しては、プラグインを追加することができる。
When the
プラグインテーブル328は、プラグイン記憶部322に記憶される。プラグインテーブル328には、1以上のキーに対応付けてプラグインのバイナリプログラム(プラグインバイナリ)が登録される。プラグインテーブル328には、異なる開発者によって作成されたプラグインバイナリを登録することができる。例えば、「速度」に対して、開発者Aによって作成されたプラグインA1が登録され、「緯度」および「経度」に対して、開発者Bによって作成されたプラグインB1が登録される。
A plug-in table 328 is stored in the plug-in
この場合、ステートテーブル327の「速度」のバリューが更新された場合、デバイスオブジェクト320はプラグインA1を起動することになる。ステートテーブル327の「緯度」のバリューが更新された場合、デバイスオブジェクト320はプラグインB1を起動することになる。ステートテーブル327の「経度」のバリューが更新された場合、デバイスオブジェクト320はプラグインB1を起動することになる。
In this case, when the "speed" value in the state table 327 is updated, the
図7は、メッセージのフォーマット例を示す図である。
メッセージ判別部323は、イベントメッセージ61、プラグイン追加の制御メッセージ71、および、プラグイン削除の制御メッセージ72を受信することがある。FIG. 7 is a diagram showing a format example of a message.
The
イベントメッセージ61は、オブジェクトID、種別およびセンサデータを含む。オブジェクトIDは、デバイスオブジェクトを識別する識別子である。オブジェクトIDは、デバイスを識別する識別子であると言うこともできる。オブジェクトIDは、イベントメッセージ61を生成するデバイスによって付与され、イベントメッセージ61の宛先のデバイスオブジェクトを特定するために参照される。イベントメッセージ61の種別は「イベント」である。センサデータは、キーとバリューの組を1つ以上含む。
制御メッセージ71は、オブジェクトID、種別、ユーザID、キー、プラグインIDおよびプラグインバイナリを含む。オブジェクトIDは、プラグインを追加する対象のオブジェクトを識別する識別子である。オブジェクトIDは、制御メッセージ71の宛先のデバイスオブジェクトを特定するために参照される。制御メッセージ71の種別は「追加」である。ユーザIDは、プラグインを作成した開発者または管理者を識別する識別子である。キーは、プラグインを追加する対象のキーを示す。プラグインIDは、プラグインを識別する識別子である。プラグインIDは、プラグインバイナリのハッシュ値など、プラグイン自体から算出される識別子であってもよい。プラグインバイナリは、プラグインのコンパイル済みのバイナリ形式プログラムである。
制御メッセージ72は、オブジェクトID、種別、ユーザID、キーおよびプラグインIDを含む。オブジェクトIDは、プラグインを削除する対象のオブジェクトを識別する識別子である。オブジェクトIDは、制御メッセージ72の宛先のデバイスオブジェクトを特定するために参照される。制御メッセージ72の種別は「削除」である。ユーザIDは、プラグインを削除する開発者または管理者を識別する識別子である。キーは、プラグインを削除する対象のキーを示す。ただし、プラグインが2以上のキーと対応付けられている場合に、一部のキーとの対応付けのみを解除し、他のキーとの対応付けを残す場合もある。プラグインIDは、プラグインを識別する識別子である。
次に、デバイスオブジェクト320,320a,320b,320c,320d,320eが有するステートデータのセキュリティについて説明する。
前述のように、同一のデバイスオブジェクトに対して、異なるユーザのプラグインを混在させて配置することができる。プラグインは、ステートデータからバリューを読み出すことがあり、ステートデータにバリューを書き込むことがある。このとき、ステートデータの中には、情報セキュリティの観点から、あるユーザにアクセスを許可するバリューと当該ユーザにアクセスを許可したくないバリューが存在することがある。そこで、プラグインからステートデータへのアクセスをキー単位で制御することが好ましい。Next, the security of state data possessed by the device objects 320, 320a, 320b, 320c, 320d, and 320e will be described.
As described above, plug-ins of different users can be mixed and arranged for the same device object. A plug-in may read values from state data and write values to state data. At this time, from the viewpoint of information security, the state data may contain a value to which a certain user is permitted to access and a value to which the user should not be permitted to access. Therefore, it is preferable to control access to state data from plug-ins in units of keys.
アクセス制御方法としては、リアルタイム動的イベント処理システムの外部に、アクセス制御リスト(ACL)を保持する集中管理サーバを設け、プラグインからステートデータへのアクセス毎に集中管理サーバにアクセス可否を問い合わせる方法も考えられる。しかし、この方法では、アクセス権限の確認のオーバヘッドが大きくなり、リアルタイム動的イベント処理のスループットが低下するおそれがある。 As an access control method, a centralized management server that holds an access control list (ACL) is provided outside the real-time dynamic event processing system, and an access permission inquiry is made to the centralized management server each time a plug-in accesses state data. is also conceivable. However, this method may increase the overhead of checking access rights and reduce the throughput of real-time dynamic event processing.
また、アクセス制御方法として、ノード300,300a,300bにACLをコピーし、プラグインからステートデータへのアクセス毎にノード内でアクセス権限を確認する方法も考えられる。しかし、この方法でも、アクセス権限の確認のオーバヘッドが大きくなり、リアルタイム動的イベント処理のスループットが低下するおそれがある。また、ACLの更新時に、複数のノードのACLの一貫性を保持することが難しい場合がある。
Also, as an access control method, a method of copying the ACL to the
そこで、第2の実施の形態では、ノード300,300a,300bにプラグインを配置する前に、ファイアウォール100がプラグインを分析してACLに適合していることを確認する。そして、プラグインがACLに適合していることが確認された後は、プラグインからステートデータへのアクセス時にアクセス権限を確認することを省略する。これにより、プラグイン実行時のアクセス制御のオーバヘッドを削減し、リアルタイム動的イベント処理のスループットを向上させることができる。
Therefore, in the second embodiment, the
ただし、アクセス時のアクセス権限の確認が省略されるため、ACLが示すセキュリティポリシーが管理者によって事後的に変更された場合、配置済みの既存プラグインが更新後のACLに適合しなくなることがある。そこで、ファイアウォール100は、管理者がACLを更新する際に、自動的に既存プラグインを再検証するようにする。
However, since the access authority check is omitted when accessing, if the security policy indicated by the ACL is changed after the fact by the administrator, the existing plugins that have already been deployed may not be compatible with the updated ACL. . Therefore, the
図8は、ファイアウォールの機能例を示すブロック図である。
ファイアウォール100は、ACL記憶部121、解析結果データベース122、メッセージ通信部123、プラグイン解析部124、認証部125およびACL更新部126を有する。ACL記憶部121および解析結果データベース122は、例えば、RAM102またはHDD103の記憶領域を用いて実装される。メッセージ通信部123、プラグイン解析部124、認証部125およびACL更新部126は、例えば、CPU101が実行するプログラムを用いて実装される。FIG. 8 is a block diagram showing an example of firewall functions.
ACL記憶部121は、ユーザとオブジェクトとアクセスを許可するキーとを対応付けたアクセス制御リスト(ACL)を記憶する。ACLは、予め管理者によって作成される。ACLは、管理者によって事後的に更新されることもある。あるユーザがプラグインを開発し、あるオブジェクトにそのプラグインを追加しようとする場合、そのプラグインからアクセスされる可能性のあるキーの全てがACLとマッチすれば、そのプラグインの追加が許可されることになる。なお、第2の実施の形態では、アクセスを許可するキーを示すホワイトリスト形式のACLを用いているが、アクセスを許可しないキーを示すブラックリスト形式のACLを用いるようにしてもよい。
The
解析結果データベース122は、ノード300,300a,300bに追加された既存プラグインについての解析結果を記憶する履歴データベースである。解析結果データベース122に記憶された解析結果は、ACLの更新時に既存プラグインの再解析を抑制するために参照される。ただし、ファイアウォール100が解析結果データベース122をもたずに、ACLの更新時に既存プラグインを再解析するようにしてもよい。
The
メッセージ通信部123は、開発装置70,70a,70bから制御メッセージを受信する。メッセージ通信部123は、プラグイン追加の制御メッセージをプラグイン解析部124に出力し、プラグインの認証結果を認証部125から取得する。認証成功、すなわち、プラグイン追加を許可する場合、メッセージ通信部123は、制御メッセージをメッセージサーバ200に転送する。一方、認証失敗、すなわち、プラグイン追加を拒否する場合、メッセージ通信部123は、制御メッセージをメッセージサーバ200に転送せず、制御メッセージを送信した開発装置にエラーを通知する。
なお、ファイアウォール100は、プラグイン削除の制御メッセージについては、認証を行わずにメッセージサーバ200に転送するようにしてもよい。また、ファイアウォール100は、プラグイン削除の制御メッセージについて、削除権限を確認した上でメッセージサーバ200に転送するようにしてもよい。ファイアウォール100は、解析結果データベース122から、削除するプラグインの解析結果を削除するようにしてもよい。
Note that the
プラグイン解析部124は、プラグイン追加の制御メッセージをメッセージ通信部123から取得する。すると、プラグイン解析部124は、制御メッセージに含まれるプラグインバイナリを解析して、プラグインからアクセスされる可能性があるキーを抽出する。キーの抽出には、抽象解釈などの静的プログラム解析方法を利用する。例えば、プラグイン解析部124は、ステートデータにアクセスする関数の引数として使用されている変数を検出し、その変数が取り得る値を、アクセスされる可能性があるキーとして抽出する。
The plug-in
プラグイン解析部124は、解析結果を認証部125に出力する。また、プラグイン解析部124は、認証部125が認証成功と判定した場合、ユーザとオブジェクトとプラグインとアクセス先キーを対応付けた認証結果を解析結果データベース122に保存する。
Plug-in
認証部125は、プラグイン解析部124から解析結果を取得する。すると、認証部125は、アクセスされる可能性があるキーの全てが、ACL記憶部121に記憶されたACLにマッチするか判定する。すなわち、認証部125は、プラグインを作成したユーザおよび対象のオブジェクトに対応するアクセス許可キーをACLから検索する。認証部125は、プラグイン解析部124で抽出されたキーそれぞれが、ACLが示すアクセス許可キーの範囲に属しているか判定する。抽出されたキーの全てがACLにマッチした場合、認証部125は、プラグイン追加を許可し、メッセージ通信部123に認証成功を通知する。一方、抽出されたキーの中にACLにマッチしないものがある場合、認証部125は、プラグイン追加を拒否し、メッセージ通信部123に認証失敗を通知する。
ACL更新部126は、管理者が使用する開発装置70から、新ACLを含むACL更新メッセージを受信する。すると、ACL更新部126は、解析結果データベース122から、ノード300,300a,300bに配置済みの既存プラグインの解析結果を読み出す。ACL更新部126は、認証部125と同様の方法で、既存プラグインからアクセスされる可能性のあるキーが新ACLにマッチするか判定する。
The
旧ACLが新ACLに更新されることにより、旧ACLに適合していた既存プラグインが新ACLに適合しなくなることがある。不適合の既存プラグインが存在する場合、ACL更新部126は、管理者が使用する開発装置70に警告メッセージを送信する。そして、ACL更新部126は、ACL記憶部121の旧ACLを新ACLに置換する。
When the old ACL is updated to the new ACL, existing plug-ins that conform to the old ACL may no longer conform to the new ACL. If there is an existing incompatible plug-in, the
図9は、アクセス制御リストと解析結果テーブルの例を示す図である。
アクセス制御リスト127は、ACL記憶部121に記憶される。アクセス制御リスト127には、ユーザIDとオブジェクトIDとキーを含む1以上のレコードが登録される。ユーザIDは、開発者と管理者を含むユーザを識別する識別子である。オブジェクトIDは、プラグインを配置する対象のデバイスオブジェクトを識別する識別子である。オブジェクトIDとして、「car001」のように、1つのデバイスオブジェクトの識別子を指定してもよい。また、オブジェクトIDとして、「car」のように、デバイスの種類を表すクラス名を用いて、デバイスオブジェクトの識別子の範囲を指定してもよい。また、オブジェクトIDでは、任意の文字列を表すワイルドカード(*)を用いてもよい。FIG. 9 is a diagram showing examples of an access control list and an analysis result table.
The
キーは、プラグインからのアクセスを許可するアクセス許可キーである。アクセス許可キーとして、「速度」のように、特定の1つのキーを指定してもよい。また、アクセス許可キーでは、正規表現を用いてもよく、ワイルドカード(*)を用いてキーの範囲を指定してもよい。ワイルドカードを末尾に付すことで、アクセスを許可するキーのプレフィックスを指定することができる。例えば、「a*」と記載することで、「a」や「aa」や「ab」など、「a」から始まる全てのキーを指定することができる。 The key is an access permission key that allows access from plugins. A specific key, such as "speed", may be specified as an access permission key. Also, in the access permission key, a regular expression may be used, or a wildcard (*) may be used to specify the key range. A trailing wildcard allows you to specify a key prefix for which access is allowed. For example, by writing "a*", all keys beginning with "a" such as "a", "aa", and "ab" can be specified.
なお、リアルタイム動的イベント処理システムによっては、あるオブジェクトに配置されたプラグインが、他のオブジェクトにメッセージを送信することで他のオブジェクトのステートデータにアクセスすることも有り得る。その場合、アクセス制御リスト127を、ユーザIDとアクセス元オブジェクトIDとアクセス先オブジェクトIDとキーとを含むように拡張することが考えられる。アクセス元オブジェクトIDは、プラグインが配置されるオブジェクトを識別する識別子である。アクセス先オブジェクトIDは、アクセス先のステートデータが属するオブジェクトを識別する識別子である。
Note that in some real-time dynamic event processing systems, a plug-in located in one object may access state data in another object by sending messages to the other object. In that case, the
解析結果テーブル128は、解析結果データベース122に記憶される。解析結果テーブル128には、ユーザID、オブジェクトID、プラグインIDおよび解析結果を含む1以上のレコードが登録される。ユーザIDは、プラグインを作成したユーザを識別する識別子である。オブジェクトIDは、プラグインを配置したデバイスオブジェクトを識別する識別子である。プラグインIDは、配置したプラグインを識別する識別子である。解析結果は、プラグインからアクセスされる可能性のあるキーと、アクセス方法がバリューの読み出し(read)であるかバリューの書き込み(write)であるかを示す。
The analysis result table 128 is stored in the
なお、既存プラグインが新ACLに適合しているか検証するという観点からは、解析結果テーブル128がプラグインIDを含まなくてもよい。プラグインIDは、新ACLに適合しない既存プラグインが検出された場合に、不適合の既存プラグインを削除するために使用されることがある。また、解析結果テーブル128を、プラグインIDとキーとアクセス方法とを対応付けたテーブルと、ユーザIDとオブジェクトIDとプラグインIDとを対応付けたテーブルとに分割して正規化してもよい。 Note that the analysis result table 128 may not include the plug-in ID from the viewpoint of verifying whether the existing plug-in conforms to the new ACL. The plug-in ID may be used to remove the non-conforming existing plug-in when an existing plug-in that does not conform to the new ACL is detected. Further, the analysis result table 128 may be normalized by dividing it into a table in which plug-in IDs, keys, and access methods are associated with each other, and a table in which user IDs, object IDs, and plug-in IDs are associated with each other.
次に、プラグインの解析例および認証例について説明する。
図10は、プラグインの解析例を示す図である。
ここでは説明を容易にするため、プラグインをソースコード形式で記述している。実際にはプラグイン解析部124は、コンパイル済みのプラグインバイナリを解析する。Next, an analysis example and an authentication example of a plug-in will be described.
FIG. 10 is a diagram illustrating an example of plug-in analysis.
For ease of explanation, the plug-in is written in source code format. The plug-in
プラグインプログラム131は、プラグインの一例である。プラグインプログラム131では、変数namespaceの初期値が文字列「exampleSumPlugin」に設定される。次に、ループ変数iが0から9まで変化する間、変数namespaceの末尾に「.」とループ変数iの値を追加したものが、変数fieldに代入され、変数fieldの値をキーとしてステートデータから数値が読み出され、その数値が変数sumに加算される。次に、変数sumの値が偶数か判定され、偶数なら変数namespaceの末技に「.output.even」が追加され、奇数なら変数namespaceの末技に「.output.odd」が追加される。最後に、変数namespaceの値をキーとし変数sumの値をバリューとして、ステートデータが更新される。
The plug-in
プラグイン解析部124は、抽象解釈によりプラグインプログラム131を解析する。抽象解釈では、プラグイン解析部124は、変数に値を代入する代入命令を検出し、代入命令毎にその時点で変数が取り得る値を示すアノテーションを付加する。なお、ソースコードにおける変数はバイトコードにおけるレジスタに対応し、プラグインバイナリの解析ではレジスタに値を代入する代入命令毎にアノテーションを付加することになる。
The plug-in
プラグインプログラム131からは、アノテーションを付加したプラグインプログラム132が生成される。プラグインプログラム132では、変数namespaceを初期化する際の変数namespaceの値域は、「exampleSumPlugin」である。ループ内で変数fieldに値を代入する際の変数fieldの値域は、「exampleSumPlugin.*」である。ここで「*」は、任意の文字列を表すワイルドカードである。変数sumの値が偶数であると判定された際の変数namespaceの値域は、「exampleSumPlugin.output.even」である。変数sumの値が奇数であると判定された際の変数namespaceの値域は、「exampleSumPlugin.output.odd」である。最終的な変数namespaceの値域は、「exampleSumPlugin.output.*」である。
A plug-in
次に、プラグイン解析部124は、ステートデータからバリューを読み出す関数getStateと、ステートデータにバリューを書き込む関数setStateを検出する。プラグイン解析部124は、関数getStateや関数setStateからキーを示す引数を抽出し、その時点で引数が取り得る値を特定する。
Next, the plug-in
プラグインプログラム132からは、プラグインプログラム133が生成される。プラグインプログラム133では、変数fieldの値をキーとしてステートデータからバリューが読み出されている。この時点における変数fieldの値域は「exampleSumPlugin.*」である。よって、プラグインプログラム131では、「exampleSumPlugin.*」というキーに対してread処理が行われると判定される。また、プラグインプログラム133では、変数namespaceの値をキーとしてステートデータにバリューが書き込まれている。この時点における変数namespaceの値域は「exampleSumPlugin.output.*」である。よって、プラグインプログラム131では、「exampleSumPlugin.output.*」というキーに対してwrite処理が行われると判定される。
A plug-in
図11は、プラグインの認証例を示す図である。
プラグインの解析結果やアクセス制御リスト127では、キーの指定にワイルドカードが使用され得る。このため、認証部125は、キーの範囲の包含関係を判定する。プラグインの解析結果が示すキー範囲の全体が、アクセス制御リスト127が示すキー範囲に包含されている場合、そのプラグインの追加が許可される。一方、プラグインの解析結果が示すキー範囲の少なくとも一部分が、アクセス制御リスト127が示すキー範囲に包含されていない場合、そのプラグインの追加が拒否される。FIG. 11 is a diagram illustrating an example of plug-in authentication.
Wildcards can be used to specify keys in the plug-in analysis results and the
プラグインプログラム134,135,136は、プラグインの一例である。プラグインプログラム134は、キーとして具体的な文字列「a」を指定している。よって、プラグインプログラム134によってアクセスされ得るキーは「a」である。プラグインプログラム135は、キーとして具体的な文字列「a」を指定することがあり、その文字列に1以上の「c」を付加したものをキーとして指定することもある。よって、プラグインプログラム135によってアクセスされ得るキーは「a*」である。プラグインプログラム136は、キーとして関数の戻り値を使用している。よって、プラグインプログラム136によってアクセスされ得るキーは「*」であり不明である。
Plug-in
プラグインを作成したユーザが開発者Aであり、追加先のデバイスオブジェクトが「car001」であり、アクセス制御リスト127には、そのユーザIDおよびオブジェクトIDに対応付けてアクセス許可キー「a*」が登録されているとする。「a」は「a*」に包含されるため、プラグインプログラム134の追加は許可される。また、「a*」は「a*」に包含されるため、プラグインプログラム135の追加は許可される。一方、「*」は「a*」に包含されないため、プラグインプログラム136の追加は拒否される。このように、キーの範囲の包含関係に基づいてプラグインの追加可否が判定される。
The user who created the plug-in is developer A, the device object to which it is added is "car001", and the
図12は、ファイアウォールを通じたプラグインの配置例を示す図である。
ファイアウォール100は、プラグイン追加の制御メッセージ141,142を受信する。制御メッセージ141は、開発者Bが作成したプラグイン143(プラグインB1)を、デバイスオブジェクト「car001」に追加することを要求する。制御メッセージ142は、開発者Bが作成したプラグイン144(プラグインB2)を、デバイスオブジェクト「car001」に追加することを要求する。FIG. 12 is a diagram showing an example of placement of plug-ins through a firewall.
ファイアウォール100は、プラグイン143を解析し、プラグイン143からアクセスされる可能性のあるキーが「緯度」と「経度」であると判定する。また、ファイアウォール100は、プラグイン144を解析し、プラグイン144からアクセスされる可能性のあるキーが「速度」であると判定する。これに対して、ファイアウォール100が有するアクセス制御リスト127には、開発者Bによるデバイスオブジェクト「car001」のキー「緯度」へのアクセスが許可されることが記載されている。また、アクセス制御リスト127には、開発者Bによるデバイスオブジェクト「car001」のキー「経度」へのアクセスが許可されることが記載されている。
The
すると、ファイアウォール100は、プラグイン143をデバイスオブジェクト「car001」に追加することを許可し、メッセージサーバ200を経由してノード300に制御メッセージ141を転送する。ノード300のデバイスオブジェクト320は、制御メッセージ141を受信し、制御メッセージ141に含まれるプラグイン143を登録する。例えば、デバイスオブジェクト320は、ステートテーブル327のキー「緯度」および「経度」に対応付けてプラグイン143を登録する。これにより、「緯度」または「経度」のバリューが更新されたときにプラグイン143が実行される。プラグイン143がステートテーブル327にアクセスする際はアクセス権限の確認は不要である。
一方、ファイアウォール100は、プラグイン144をデバイスオブジェクト「car001」に追加することを拒否する。この場合、制御メッセージ142はノード300に転送されず、プラグイン144はデバイスオブジェクト320に登録されない。
On the other hand,
次に、第2の実施の形態の情報処理システムの手順例について説明する。
図13は、プラグイン生成の手順例を示すフローチャートである。
プラグイン生成は、開発装置70,70a,70bなどの開発装置で実行される。ここでは、代表して開発装置70が実行するものとして説明する。Next, a procedure example of the information processing system according to the second embodiment will be described.
FIG. 13 is a flow chart showing an example of a plug-in generation procedure.
Plug-in generation is executed by development devices such as
(S10)開発装置70は、ユーザから入力を受け付け、ユーザからの入力に応じてプラグインのソースコードを作成する。ただし、開発装置70は、他の情報処理装置からプラグインのソースコードのファイルを受信してもよい。
(S10) The
(S11)開発装置70は、ステップS10で作成されたプラグインのソースコードをコンパイルし、プラグインバイナリを生成する。例えば、開発装置70は、プラグインのソースコードを、中間言語で記述されたバイトコードに変換する。
(S11) The
(S12)開発装置70は、ステップS11で生成されたプラグインバイナリを含むプラグイン追加の制御メッセージを生成する。制御メッセージのオブジェクトIDは、配置先のデバイスオブジェクトの識別子であり、ユーザから指定される。制御メッセージのユーザIDは、開発装置70を使用するユーザの識別子である。制御メッセージのキーは、プラグインの実行条件とするキーであり、ユーザから指定される。制御メッセージのプラグインIDは、プラグインバイナリから自動的に生成されてもよい。
(S12) The
(S13)開発装置70は、ステップS12で生成された制御メッセージをファイアウォール100に送信する。なお、制御メッセージをメッセージサーバ200に直接送信した場合、メッセージサーバ200でその制御メッセージが拒否され、メッセージサーバ200から開発装置70にエラーが通知されることになる。
(S13) The
図14は、プラグイン認証の手順例を示すフローチャートである。
プラグイン認証は、ファイアウォール100で実行される。
(S20)メッセージ通信部123は、プラグイン追加の制御メッセージを受信する。FIG. 14 is a flow chart showing an example procedure for plug-in authentication.
Plugin authentication is performed at
(S20) The
(S21)プラグイン解析部124は、制御メッセージからプラグインバイナリを抽出する。プラグイン解析部124は、抽象解析などの静的プログラム解析方法を用いてプラグインバイナリを解析し、プラグインの意味解析を行う。例えば、プラグイン解析部124は、プラグインバイナリから、ステートデータからバリューを読み出すリード関数およびステートデータにバリューを書き込むライト関数を検出する。プラグイン解析部124は、リード関数およびライト関数それぞれの引数の取り得る値(値域)を判定する。
(S21) The
(S22)プラグイン解析部124は、ステップS21の解析結果に基づいて、プラグインにおいてリード対象またはライト対象となる可能性があるキーを抽出する。
(S23)認証部125は、ステップS22で抽出されたキーを1つ選択する。(S22) The plug-in
(S23) The
(S24)認証部125は、制御メッセージからユーザIDおよびオブジェクトIDを抽出する。認証部125は、抽出したユーザIDおよびオブジェクトIDと、ステップS23で選択したキーとを用いて、アクセス制御リスト127を検索する。このとき、認証部125は、条件を満たすレコードをアクセス制御リスト127から検索することになる。条件を満たすレコードは、指定のユーザIDおよびオブジェクトIDを含み、かつ、指定のキーを包含するアクセス許可キーを含むレコードである。
(S24) The
(S25)認証部125は、指定のユーザIDおよびオブジェクトIDのもとで、ステップS23で選択したキーのアクセスが許可されているか判断する。ステップS24で該当するレコードがアクセス制御リスト127から検索された場合、アクセスが許可されていると判断される。該当するレコードがアクセス制御リスト127から検索されなかった場合、アクセスが許可されていないと判断される。選択したキーのアクセスが許可されている場合はステップS26に進み、許可されていない場合はステップS30に進む。
(S25) The
(S26)認証部125は、ステップS23において、ステップS22で抽出されたキーを全て選択したか判断する。全てのキーを選択した場合はステップS27に進み、未選択のキーがある場合はステップS23に戻る。
(S26) In step S23, the
(S27)認証部125は、ステップS21の解析結果を参照して、プラグインが所定の禁止API(Application Programming Interface)を使用しているか判断する。禁止APIは、セキュリティの観点からプラグインが使用することは好ましくないライブラリ関数であり、予め管理者によって定義される。例えば、禁止APIには、ローカルファイルシステムにアクセスする関数が含まれる。禁止APIを使用している場合はステップS30に進み、禁止APIを使用していない場合はステップS28に進む。
(S27) The
(S28)プラグイン解析部124は、ステップS21の解析結果を、解析結果データベース122に含まれる解析結果テーブル128に登録する。
(S29)メッセージ通信部123は、ステップS20で受信した制御メッセージをメッセージサーバ200に転送する。そして、プラグイン認証が終了する。(S28) The plug-in
(S29) The
(S30)メッセージ通信部123は、受信した制御メッセージを破棄し、制御メッセージを送信した開発装置に対してプラグイン追加拒否を通知する。
図15は、プラグイン追加の手順例を示すフローチャートである。(S30) The
FIG. 15 is a flow chart showing an example procedure for adding a plug-in.
プラグイン追加は、メッセージサーバ200とノード300,300a,300bとが連携して実行される。ここでは、代表してノード300が実行するものとし、プラグイン追加先がデバイスオブジェクト320であるとして説明する。
Addition of the plug-in is performed by cooperation between the
(S40)メッセージサーバ200は、プラグイン追加の制御メッセージを受信する。なお、メッセージサーバ200は、ファイアウォール100からは制御メッセージを受け付ける一方、他の情報処理装置からは制御メッセージを受け付けない。
(S40) The
(S41)メッセージサーバ200は、ノード300のメッセージ転送部310に制御メッセージを転送する。メッセージサーバ200は、ラウンドロビン方式で転送先を選択してもよい。メッセージ転送部310は、制御メッセージに含まれるオブジェクトIDを参照して、制御メッセージをデバイスオブジェクト320に転送する。
( S<b>41 ) The
(S42)デバイスオブジェクト320のプラグイン管理部325は、制御メッセージからプラグインバイナリを抽出する。プラグイン管理部325は、プラグインバイナリの変換処理を行う。例えば、プラグイン管理部325は、クラスローダを用いてプラグインのバイトコードを実行可能クラスに変換する。
(S42) The plug-in
(S43)プラグイン管理部325は、制御メッセージで指定されたキーに対応するバリューが更新されたときにプラグインが呼び出されるようにプラグインを登録する。プラグイン管理部325は、プラグインテーブル328にプラグインを登録する。
(S43) The plug-in
図16は、ACL更新の手順例を示すフローチャートである。
ACL更新は、ファイアウォール100で実行される。
(S50)ACL更新部126は、新アクセス制御リスト(新ACL)を受信する。新アクセス制御リストは、例えば、管理者が使用する開発装置70から送信される。FIG. 16 is a flowchart illustrating an example procedure for updating an ACL.
ACL updates are performed at
(S50) The
(S51)ACL更新部126は、認証部125において行われるプラグイン認証を一時的に停止する。その間に到着した制御メッセージは保留されることになる。
(S52)ACL更新部126は、解析結果データベース122に含まれる解析結果テーブル128から、既存プラグインのレコードを1つ選択する。(S51) The
(S52) The
(S53)ACL更新部126は、ステップS52で選択したレコードに含まれる解析結果から、リード対象またはライト対象となる可能性があるキーを1つ選択する。
(S54)ACL更新部126は、ステップS52で選択した既存プラグインのレコードからユーザIDおよびオブジェクトIDを抽出する。ACL更新部126は、抽出したユーザIDおよびオブジェクトIDと、ステップS53で選択したキーとを用いて、ステップS50で受信した新アクセス制御リストを検索する。このとき、ACL更新部126は、条件を満たすレコードを新アクセス制御リストから検索することになる。条件を満たすレコードは、指定のユーザIDおよびオブジェクトIDを含み、かつ、指定のキーを包含するアクセス許可キーを含むレコードである。(S53) The
(S54) The
(S55)ACL更新部126は、指定のユーザIDおよびオブジェクトIDのもとで、ステップS53で選択したキーのアクセスが許可されているか判断する。ステップS54で該当するレコードが新アクセス制御リストから検索された場合、アクセスが許可されていると判断される。該当するレコードが新アクセス制御リストから検索されなかった場合、アクセスが許可されていないと判断される。選択したキーのアクセスが許可されている場合はステップS56に進み、許可されていない場合はステップS57に進む。
(S55) The
(S56)ACL更新部126は、ステップS53において、解析結果に含まれるキーを全て選択したか判断する。全てのキーを選択した場合はステップS58に進み、未選択のキーがある場合はステップS53に戻る。
(S56) The
(S57)ACL更新部126は、新アクセス制御リストを送信した開発装置に対して、ステップS52で選択した既存プラグインを不適合プラグインとして通知する。例えば、ACL更新部126は、プラグインIDを開発装置70に送信する。
(S57) The
(S58)ACL更新部126は、ステップS52において、解析結果テーブル128から全ての既存プラグインのレコードを選択したか判断する。全て選択した場合はステップS59に進み、未選択のものがある場合はステップS52に戻る。
(S58) The
(S59)ACL更新部126は、ACL記憶部121に記憶された旧アクセス制御リストを、ステップS50で受信した新アクセス制御リストに置換する。
(S60)ACL更新部126は、ステップS51のプラグイン認証の停止を解除する。これにより、保留されていた制御メッセージの処理が再開される。(S59) The
(S60) The
第2の実施の形態の情報処理システムによれば、デバイスからイベントメッセージが収集され、デバイスに対応するデバイスオブジェクトにおいて、デバイスの状態を示すステートデータが保持される。デバイスオブジェクトに配置されたプラグインがステートデータの更新に応じて起動され、イベント駆動型のデータ処理が行われる。これにより、リアルタイム動的イベント処理を効率的に実行することができる。また、デバイスオブジェクトを停止させずに、デバイスオブジェクトにプラグインを追加することができる。これにより、ステートデータを利用するサービスの追加や更新を動的に行うことができ、リアルタイム動的イベント処理の停止を抑制することができる。 According to the information processing system of the second embodiment, event messages are collected from devices, and state data indicating device states are held in device objects corresponding to the devices. A plug-in placed in the device object is activated according to the update of state data, and event-driven data processing is performed. This allows real-time dynamic event processing to be performed efficiently. Also, plug-ins can be added to the device object without stopping the device object. As a result, it is possible to dynamically add or update services that use state data, and to suppress stoppage of real-time dynamic event processing.
また、同一のデバイスオブジェクトに異なる開発者のプラグインを配置することができる。よって、リアルタイム動的イベント処理システム上に様々なアプリケーションソフトウェアを実装することが可能となる。また、ステートデータに含まれるキー単位で、プラグインからアクセス可能なデータを制限するアクセス制御を行うことができる。よって、デバイスから収集されるステートデータを保護することができる。 Also, plug-ins from different developers can be placed in the same device object. Therefore, it becomes possible to implement various application software on the real-time dynamic event processing system. In addition, access control can be performed to limit data accessible from plug-ins in units of keys included in state data. Therefore, state data collected from the device can be protected.
また、アクセス権限の確認は、プラグインをデバイスオブジェクトに追加する前にプラグインを解析することで行われ、プラグインが配置された後は省略される。よって、プラグインがステートデータにアクセスする毎にアクセス権限を確認しなくてよく、アクセス制御のオーバヘッドが削減され、リアルタイム動的イベント処理のスループットを向上させることができる。例えば、アクセス制御リストを保持する集中管理サーバに、ステートデータへのアクセス毎に問い合わせる方法と比べて、通信オーバヘッドを削減できる。また、例えば、アクセス制御リストを複数のノードに配布する方法と比べて、アクセス制御リストの更新時にアクセス制御リストの一貫性を維持することが容易となる。 Also, checking for access rights is done by parsing the plugin before adding it to the device object, and omitted after the plugin is deployed. Therefore, it is not necessary to confirm the access authority each time the plug-in accesses the state data, thereby reducing the overhead of access control and improving the throughput of real-time dynamic event processing. For example, communication overhead can be reduced compared to a method of inquiring a centralized management server holding an access control list each time state data is accessed. Also, for example, compared to the method of distributing the access control list to a plurality of nodes, it becomes easier to maintain the consistency of the access control list when updating the access control list.
また、プラグインの解析では、抽象解釈などの意味解析が行われる。よって、プラグインが許可されていないキーにアクセスすることを見逃すリスクを低減できる。例えば、プラグインとして、キーを示す変数に初期値を書き込んだ後、その変数の値を事後的に書き換えてアクセス先のキーを変更してしまうプログラムも作成することが可能である。そのようなプラグインに対しても、ソースコードの記述を追跡する単純な静的プログラム解析方法と比べて、許可されていないキーにアクセスするリスクを評価することができる。 Semantic analysis such as abstract interpretation is performed in the plug-in analysis. Therefore, it is possible to reduce the risk of overlooking that the plug-in accesses unauthorized keys. For example, as a plug-in, it is possible to create a program that writes an initial value to a variable indicating a key, and then rewrites the value of that variable ex post facto to change the access destination key. Even for such plugins, the risk of accessing unauthorized keys can be assessed compared to simple static program analysis methods that trace source code descriptions.
また、プラグイン追加時の解析結果が履歴データベースに保存され、アクセス制御リストの更新時には、既存プラグインが新アクセス制御リストに適合しているか自動的に検査される。そして、不適合の既存プラグインが存在する場合には、新アクセス制御リストを作成した管理者に警告が通知される。よって、ステートデータへのアクセス毎にアクセス権限を確認しなくても、事後的にアクセス制御リストに適合しなくなったプラグインを検出でき、ステートデータのセキュリティを維持することができる。 In addition, the analysis results when plug-ins are added are saved in the history database, and when the access control list is updated, existing plug-ins are automatically checked to see if they are compatible with the new access control list. Then, if there is an existing incompatible plug-in, a warning is sent to the administrator who created the new access control list. Therefore, plug-ins that no longer conform to the access control list can be detected ex post facto without confirming the access authority each time the state data is accessed, and the security of the state data can be maintained.
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。 The foregoing merely illustrates the principles of the invention. Furthermore, many variations and modifications will occur to those skilled in the art, and the present invention is not limited to the precise construction and applications shown and described above, and all corresponding variations and equivalents are and the equivalents thereof.
10 データ処理装置
11,21 記憶部
12,22 処理部
13 データ
20 アクセス制御装置
23 対象プログラム
24 アクセス制御情報REFERENCE SIGNS
Claims (8)
ユーザの対象プログラムを含む登録要求を受け付け、前記対象プログラムを分析して前記複数のデータ項目のうち前記対象プログラムからアクセスされ得るデータ項目を検出し、前記ユーザがアクセス権限を有するデータ項目または前記ユーザがアクセス権限を有しないデータ項目を示すアクセス制御情報に基づいて、前記検出したデータ項目に対するアクセス権限を前記ユーザが有するか判定し、アクセス権限を有すると判定した場合、前記対象プログラムを前記データ処理装置に登録することを許可するアクセス制御装置と、
を有する情報処理システム。a data processing device that stores data including a plurality of data items, and executes the registered program in accordance with an update of the data when the registered program exists;
receiving a registration request including a user's target program, analyzing the target program to detect a data item that can be accessed from the target program from among the plurality of data items, and detecting a data item to which the user has access authority or the user determining whether the user has access authority to the detected data item based on access control information indicating data items to which the user does not have access authority; an access control device that permits registration with a device;
An information processing system having
請求項1記載の情報処理システム。After permitting registration of the target program, the access control device accepts a request to update the access control information, and the user has access authority to the detected data item based on the updated access control information. re-determine whether or not, and output a warning message when it is determined that you no longer have access privileges,
The information processing system according to claim 1.
請求項2記載の情報処理システム。The access control device stores an analysis history indicating the detected data items, and uses the analysis history to perform re-determination based on the updated access control information.
3. The information processing system according to claim 2.
請求項1記載の情報処理システム。The access control device receives the registration request, transfers the registration request to the data processing device when permitting registration of the target program, and transfers the registration request when rejecting registration of the target program. suppress the
The information processing system according to claim 1.
前記登録要求は、登録先オブジェクトの指定を含み、前記アクセス制御情報は、オブジェクトとデータ項目の組に対してアクセス権限の有無を示し、
前記アクセス制御装置は、前記アクセス制御情報に基づいて、前記登録先オブジェクトの前記検出したデータ項目に対するアクセス権限を前記ユーザが有するか判定する、
請求項1記載の情報処理システム。The data processing device generates a plurality of objects corresponding to a plurality of terminal devices, causes each of the plurality of objects to hold the data and the registered program,
the registration request includes designation of a registration destination object, the access control information indicates whether or not there is access authority for a set of an object and a data item;
The access control device determines whether the user has access rights to the detected data item of the registration destination object, based on the access control information.
The information processing system according to claim 1.
前記ユーザの対象プログラムを含む登録要求を受け付け、前記対象プログラムを分析して前記複数のデータ項目のうち前記対象プログラムからアクセスされ得るデータ項目を検出し、前記アクセス制御情報に基づいて、前記検出したデータ項目に対するアクセス権限を前記ユーザが有するか判定し、アクセス権限を有すると判定した場合、前記対象プログラムを、前記複数のデータ項目を含むデータの更新に応じて前記対象プログラムが実行されるように情報処理システムに登録することを許可する処理部と、
を有するアクセス制御装置。a storage unit for storing access control information indicating a data item to which a user has access authority or a data item to which the user does not have access authority among a plurality of data items;
receiving a registration request including the user's target program, analyzing the target program to detect a data item that can be accessed from the target program from among the plurality of data items, and determining the detected data item based on the access control information determining whether the user has the access authority to the data item, and if it is determined that the user has the access authority, the target program is executed in accordance with the update of the data including the plurality of data items; a processing unit that permits registration in an information processing system;
an access control device having
ユーザの対象プログラムを含む登録要求を受け付け、前記対象プログラムを分析して複数のデータ項目のうち前記対象プログラムからアクセスされ得るデータ項目を検出し、
前記複数のデータ項目のうち前記ユーザがアクセス権限を有するデータ項目または前記ユーザがアクセス権限を有しないデータ項目を示すアクセス制御情報に基づいて、前記検出したデータ項目に対するアクセス権限を前記ユーザが有するか判定し、
アクセス権限を有すると判定した場合、前記対象プログラムを、前記複数のデータ項目を含むデータの更新に応じて前記対象プログラムが実行されるように情報処理システムに登録することを許可する、
アクセス制御方法。the computer
receiving a registration request including a user's target program, analyzing the target program and detecting data items that can be accessed from the target program among a plurality of data items;
whether the user has access authority to the detected data item based on access control information indicating data items to which the user has access authority or data items to which the user does not have access authority among the plurality of data items; judge,
If it is determined that the access authority is granted, the target program is permitted to be registered in the information processing system so that the target program is executed in accordance with the update of the data including the plurality of data items.
Access control method.
ユーザの対象プログラムを含む登録要求を受け付け、前記対象プログラムを分析して複数のデータ項目のうち前記対象プログラムからアクセスされ得るデータ項目を検出し、
前記複数のデータ項目のうち前記ユーザがアクセス権限を有するデータ項目または前記ユーザがアクセス権限を有しないデータ項目を示すアクセス制御情報に基づいて、前記検出したデータ項目に対するアクセス権限を前記ユーザが有するか判定し、
アクセス権限を有すると判定した場合、前記対象プログラムを、前記複数のデータ項目を含むデータの更新に応じて前記対象プログラムが実行されるように情報処理システムに登録することを許可する、
処理を実行させるアクセス制御プログラム。to the computer,
receiving a registration request including a user's target program, analyzing the target program and detecting data items that can be accessed from the target program among a plurality of data items;
whether the user has access authority to the detected data item based on access control information indicating data items to which the user has access authority or data items to which the user does not have access authority among the plurality of data items; judge,
If it is determined that the access authority is granted, the target program is permitted to be registered in the information processing system so that the target program is executed in accordance with the update of the data including the plurality of data items.
The access control program that causes the action to take place.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/029175 WO2021014633A1 (en) | 2019-07-25 | 2019-07-25 | Information processing system, access control device, access control method, and access control program |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2021014633A1 JPWO2021014633A1 (en) | 2021-01-28 |
JP7181491B2 true JP7181491B2 (en) | 2022-12-01 |
Family
ID=74192556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021534503A Active JP7181491B2 (en) | 2019-07-25 | 2019-07-25 | Information processing system, access control device, access control method and access control program |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7181491B2 (en) |
WO (1) | WO2021014633A1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008243089A (en) | 2007-03-28 | 2008-10-09 | Fujitsu Ltd | Access right control program and access management device |
JP2009271567A (en) | 2008-04-30 | 2009-11-19 | Ricoh Co Ltd | Image forming device, access control method and control program |
US20160232344A1 (en) | 2015-02-11 | 2016-08-11 | Electronics And Telecommunications Research Institute | Method for re-adjusting application permission and user terminal for performing the same method |
JP6149890B2 (en) | 2015-04-10 | 2017-06-21 | カシオ計算機株式会社 | Musical sound generation device and musical sound generation program |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06149890A (en) * | 1992-11-16 | 1994-05-31 | Ricoh Co Ltd | Document information managing device |
-
2019
- 2019-07-25 JP JP2021534503A patent/JP7181491B2/en active Active
- 2019-07-25 WO PCT/JP2019/029175 patent/WO2021014633A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008243089A (en) | 2007-03-28 | 2008-10-09 | Fujitsu Ltd | Access right control program and access management device |
JP2009271567A (en) | 2008-04-30 | 2009-11-19 | Ricoh Co Ltd | Image forming device, access control method and control program |
US20160232344A1 (en) | 2015-02-11 | 2016-08-11 | Electronics And Telecommunications Research Institute | Method for re-adjusting application permission and user terminal for performing the same method |
JP6149890B2 (en) | 2015-04-10 | 2017-06-21 | カシオ計算機株式会社 | Musical sound generation device and musical sound generation program |
Also Published As
Publication number | Publication date |
---|---|
JPWO2021014633A1 (en) | 2021-01-28 |
WO2021014633A1 (en) | 2021-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11985170B2 (en) | Endpoint data loss prevention (DLP) | |
US11334562B2 (en) | Blockchain based data management system and method thereof | |
CN1773417B (en) | System and method of aggregating the knowledge base of antivirus software applications | |
JP5462254B2 (en) | Granting least privilege access for computing processes | |
KR101201118B1 (en) | System and method of aggregating the knowledge base of antivirus software applications | |
WO2019226363A1 (en) | Small-footprint endpoint data loss prevention (dlp) | |
US11403027B2 (en) | Technology for governance of data retention and transfer | |
US20010051515A1 (en) | Mobile application peer-to-peer security system and method | |
US7974985B1 (en) | System and method for duplication of virtual server files | |
US11138311B2 (en) | Distributed security introspection | |
US20060156030A1 (en) | Data processing system and method | |
US9158572B1 (en) | Method to automatically redirect SRB routines to a zIIP eligible enclave | |
US11416631B2 (en) | Dynamic monitoring of movement of data | |
US11489844B2 (en) | On-the-fly creation of transient least privileged roles for serverless functions | |
US8352947B2 (en) | Method to automatically redirect SRB routines to a zIIP eligible enclave | |
US20070038572A1 (en) | Method, system and computer program for metering software usage | |
JP7181491B2 (en) | Information processing system, access control device, access control method and access control program | |
US9229787B2 (en) | Method and system for propagating modification operations in service-oriented architecture | |
KR20030086722A (en) | System for detecting a kernel backdoor, method for detecting a kernel backdoor and method for recovering a kernel data using the same | |
US20180069859A1 (en) | Mobile terminal and control method thereof | |
JP2006106986A (en) | Access management method and information processor | |
EP3915029B1 (en) | Scalable incremental analysis using caller and callee summaries | |
KR20190061831A (en) | System and method of detecting confidential information based on 2-tier for endpoint DLP | |
US20060272005A1 (en) | Security optimization techniques for web applications | |
US20230169046A1 (en) | File Transfer Prioritization During Replication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211110 |
|
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: 20221018 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221031 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7181491 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |