WO2021014633A1 - 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 PDF

Info

Publication number
WO2021014633A1
WO2021014633A1 PCT/JP2019/029175 JP2019029175W WO2021014633A1 WO 2021014633 A1 WO2021014633 A1 WO 2021014633A1 JP 2019029175 W JP2019029175 W JP 2019029175W WO 2021014633 A1 WO2021014633 A1 WO 2021014633A1
Authority
WO
WIPO (PCT)
Prior art keywords
plug
data
user
access control
target program
Prior art date
Application number
PCT/JP2019/029175
Other languages
French (fr)
Japanese (ja)
Inventor
ユリウス ミヒャエリス
泰彦 金政
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2021534503A priority Critical patent/JP7181491B2/en
Priority to PCT/JP2019/029175 priority patent/WO2021014633A1/en
Publication of WO2021014633A1 publication Critical patent/WO2021014633A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Definitions

  • the present invention relates to an information processing system, an access control device, an access control method, and an access control program.
  • an event processing system that collects event messages from various terminal devices, updates the data held by the information processing system according to the event message, and executes information processing according to the update of the data.
  • an information processing system collects event messages including sensor data measured by using a sensor device from a terminal device such as a smartphone or an in-vehicle device, and holds state data indicating the state of the terminal device.
  • a terminal device such as a smartphone or an in-vehicle device
  • an information processing system realizes an information service that detects an update of state data and provides information according to the current state of a terminal device.
  • an event forwarding method for forwarding an event message between a plurality of entity devices has been proposed.
  • each entity device collates 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 collation result.
  • a device management system that allows a device connected to a client device to be accessed from a server device has been proposed.
  • the client device controls to exclusively execute the data communication between the client application and the device and the data communication between the server device and the device.
  • a method of transmitting an event message between a plurality of entity devices of IoT Internet of Things
  • authentication information such as ACL (Access Control List) every time an access to a certain data item occurs after registering the program to determine whether or not the data item can be accessed.
  • ACL Access Control List
  • an object of the present invention is to provide an information processing system, an access control device, an access control method, and an access control program that can suppress a delay in data processing using an additional program.
  • an information processing system having a data processing device and an access control device.
  • the data processing device stores data including a plurality of data items, and if a registered program exists, executes the registered program in response to the update of the data.
  • the access control device receives a registration request including the user's target program, analyzes the target program to detect a data item that can be accessed from the target program among a plurality of data items, and the data item or the user to which the user has access authority. Determines whether the user has access authority to the detected data item based on the access control information indicating the data item for which does not have access authority, and if it is determined to have access authority, registers the target program in the data processing device. Allow that.
  • an access control device having a storage unit and a processing unit is provided. Also, in one aspect, an access control method executed by a computer is provided. Further, in one aspect, an access control program to be executed by a computer is provided.
  • 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 data processing device 10 and an access control device 20.
  • the data processing device 10 and the access control device 20 are connected to the network.
  • the data processing device 10 and the access control device 20 can also be referred to as a computer, an information processing device, a server computer, a server device, or the like.
  • the data processing device 10 performs event-driven information processing in which data is stored and a program is executed in response to an update of the data.
  • the information processing system of the first embodiment can also be referred to as an event processing system.
  • the information processing system of the first embodiment may be a parallel processing system including two or more data processing devices.
  • the data processing device 10 can also be called a node.
  • a new program to be executed in response to the update of data can be registered in the data processing device 10.
  • the access control device 20 confirms the access authority to the data of the user and determines whether or not the program can be registered.
  • the access control device 20 can also be referred to as a firewall, a gateway, a security device, a program inspection device, or the like.
  • the data processing device 10 has a storage unit 11 and a processing unit 12.
  • the access control device 20 has a storage unit 21 and a processing unit 22.
  • the storage unit 11 and the storage unit 21 may be a volatile semiconductor memory such as a RAM (Random Access Memory) or a non-volatile storage such as an HDD (Hard Disk Drive) or a flash memory.
  • the processing units 12 and 22 are processors such as a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), and a DSP (Digital Signal Processor), for example. However, the processing units 12 and 22 may include electronic circuits for specific purposes such as ASIC (Application Specific Integrated Circuit) and FPGA (Field Programmable Gate Array).
  • the processor executes a program stored in a memory (may be storage units 11 and 21). A collection of multiple processors is sometimes referred to as a "multiprocessor” or simply a "processor.”
  • the storage unit 11 stores the data 13.
  • the data 13 includes a plurality of data items such as data items X, Y, and Z. A plurality of data items can also be referred to as a plurality of records.
  • the data 13 may be key-value format data including a plurality of key / value pairs.
  • Data 13 may be updated.
  • the data 13 may be state data indicating the state of the terminal device, or may be updated in response to an event message transmitted from the terminal device to the data processing device 10.
  • the storage unit 11 may store the program in association with the data 13. For example, the storage unit 11 stores the program in association with a specific data item.
  • the processing unit 12 may register a program for the data 13. This program is removable to data and can be called a plug-in. Program registration may be requested by the access control device 20. The registration of the program may be performed dynamically while the data processing device 10 is in operation. Further, the processing unit 12 detects the update of the data 13. For example, the processing unit 12 updates the data 13 in response to an event message received from the terminal device. If the registered program exists when the update of the data 13 is detected, the processing unit 12 starts the registered program. When the registered program is associated with a specific data item, the processing unit 12 may start the registered program when it detects an update of the value of the specific data item.
  • the storage unit 21 stores the access control information 24.
  • the access control information 24 indicates a data item for which a certain user has access authority or a data item for which a user does not have access authority among a plurality of data items such as data items X, Y, and Z.
  • the access control information 24 can also be referred to as an access control list (ACL).
  • the access control information 24 may be a so-called white list or a black list.
  • the access control information 24 is created in advance by, for example, an administrator.
  • the processing unit 22 receives a registration request including the target program 23 of a certain user.
  • the registration request indicates a request for registration of the target program 23 in the data processing device 10.
  • the target program 23 can also be called a plug-in.
  • the target program 23 is, for example, created by the user who is the developer.
  • the access control device 20 may receive a registration request from the development terminal used by the user.
  • the target program 23 may be a source code written in a high-level language, an intermediate code converted from the source code and written in an intermediate language, or a machine-readable object code.
  • the processing unit 22 analyzes the target program 23 included in the registration request and detects a data item that can be accessed from the target program 23 among a plurality of data items such as data items X, Y, and Z. For example, the processing unit 22 uses a static program analysis method such as Abstract Interpretation to extract possible values of variables indicating data items of access destinations and specify data items that can be access destinations.
  • the variable indicating the data item of the access destination is, for example, a variable used as an argument of the function for accessing the data 13.
  • the processing unit 22 determines whether or not the user has access authority to the detected data item based on the access control information 24. When there are two or more detected data items, the processing unit 22 determines whether or not the user has access authority to all of the two or more detected data items. For example, it is assumed that the data item Y is detected as an accessible data item from the target program 23. On the other hand, it is assumed that the access control information 24 indicates that the user has the access authority to the data items X and Y and does not have the access authority to the data item Z. In that case, the processing unit 22 confirms that the user has the access authority to the detected data item Y.
  • the processing unit 22 permits the target program 23 to be registered in the data processing device 10. In that case, for example, the access control device 20 transfers the registration request including the target program 23 to the data processing device 10. As a result, the target program 23 is registered in the data processing device 10. For example, in the data processing device 10, when the data item Y of the data 13 is updated, the target program 23 is started. On the other hand, if it is determined that the user does not have the access authority, the processing unit 22 refuses to register the target program 23 in the data processing device 10. In that case, for example, the access control device 20 suppresses the transfer of the registration request including the target program 23 to the data processing device 10. The access control device 20 may send a rejection message to the development terminal.
  • the target program 23 before registering the target program 23 in the data processing device 10, the target program 23 is analyzed to detect data items that can be accessed. Then, based on the access control information 24, it is determined whether or not the user has the access authority to the detected data item, and if the user has the access authority, the target program 23 processes the data so as to be executed in response to the update of the data 13. It is registered in the device 10. When the target program 23 accesses the data 13 after registration, the data processing device 10 does not have to confirm the access authority to the data item of the access destination.
  • the data 13 contains a mixture of data items for which access may be permitted to a certain user and data items for which access is not permitted, access control for each data item can be realized. , Information security can be improved. Further, after the target program 23 is registered, the confirmation of the access authority can be omitted in the data processing device 10, and the access control information 24 does not have to be referred to for each access. As a result, the overhead of confirming the access authority can be reduced as compared with the method of confirming the access authority at the time of actual access, and the delay in data processing of the data processing device 10 can be suppressed.
  • FIG. 2 is a diagram showing an example of an information processing system according to the second embodiment.
  • the information processing system of the second embodiment is a real-time dynamic event processing system that collects event messages from a device to a data center, processes the event messages in real time, and provides an event-driven service.
  • the information processing system of the second embodiment includes a data center 50 connected to the network 52, a plurality of devices such as devices 60, 60a, 60b, 60c, 60d, 60e, and development devices 70, 70a, 70b, and the like. Includes multiple development equipment.
  • the data center 50 includes a firewall 100 connected to the network 51, a message server 200, a plurality of nodes such as nodes 300, 300a, 300b, and a plurality of business servers such as business servers 400, 400a, 400b.
  • the network 51 is, for example, a data communication network such as a LAN (Local Area Network).
  • the network 52 is a wide area data communication network such as the Internet.
  • the firewall 100 corresponds to the access control device 20 of the first embodiment, and the node 300 corresponds to the data processing device 10 of the first embodiment.
  • the devices 60, 60a, 60b, 60c, 60d, 60e are terminal devices that detect the occurrence of an event and transmit an event message indicating the event to the message server 200 via the network 52.
  • the devices 60, 60a, 60b, 60c, 60d, 60e include the sensor data measured by the sensor in the event message and transmit it.
  • Devices 60, 60a, 60b are mobile terminal devices such as smartphones and tablet terminals, for example.
  • the devices 60c, 60d, 60e are, for example, in-vehicle devices mounted on a vehicle.
  • the devices 60, 60a, 60b, 60c, 60d, 60e may include the position information including the latitude and longitude measured by GPS (Global Positioning System) in the event message and transmit it. Further, the devices 60, 60a, 60b, 60c, 60d, 60e may include the current moving speed in the event message and transmit it.
  • GPS Global Positioning System
  • the development devices 70, 70a, 70b are terminal devices used for developing application software to be operated in the data center 50.
  • the development devices 70, 70a, 70b are used by application software developers and administrators.
  • the developer 70 is used by an administrator
  • the developer 70a is used by developer A
  • the developer 70b is used by developer B, who is a different developer than the developer 70a.
  • the development devices 70, 70a, 70b can add a plug-in, which is a detachable application program, to the nodes 300, 300a, 300b without stopping the nodes 300, 300a, 300b. Further, the development devices 70, 70a, 70b can delete the plug-in from the nodes 300, 300a, 300b without stopping the nodes 300, 300a, 300b. At that time, the development devices 70, 70a, 70b send a control message indicating the addition or deletion of the plug-in to the firewall 100.
  • the development device 70 used by the administrator sets the firewall 100 with control information indicating the conditions of the plug-ins that can be arranged at the nodes 300, 300a, and 300b.
  • the firewall 100 is a server computer that receives control messages from the development devices 70, 70a, 70b and determines whether or not the plug-in can be changed. Changes to the plug-ins of the nodes 300, 300a, and 300b are performed via the firewall 100.
  • the firewall 100 can also be called a gateway, a security device, or the like. Also, regarding plugins, developers and administrators can be called users.
  • the firewall 100 holds control information indicating the conditions of plug-ins that can be placed on the nodes 300, 300a, and 300b.
  • the firewall 100 determines whether the plug-in change such as the addition or deletion of the plug-in required by the received control message satisfies a predetermined security condition.
  • the firewall 100 forwards the control message to the message server 200.
  • the firewall 100 refuses to transfer the control message.
  • the message server 200 is a server computer that transfers messages such as event messages and control messages.
  • the message server 200 has a message queue for holding received messages, and transfers each message to one of the nodes 300, 300a, and 300b.
  • the message server 200 can also be called a load distribution device.
  • the message server 200 receives the event message from the devices 60, 60a, 60b, 60c, 60d, 60e and distributes the event message to the nodes 300, 300a, 300b. Further, the message server 200 receives the control message from the firewall 100 and distributes the control message to the nodes 300, 300a, 300b. A security check is performed on the control message by the firewall 100. Therefore, the message server 200 rejects control messages that do not pass through the firewall 100, such as control messages directly transmitted from the development devices 70, 70a, and 70b to the message server 200.
  • Nodes 300, 300a, 300b are server computers that distribute and process event messages of devices 60, 60a, 60b, 60c, 60d, 60e.
  • the nodes 300, 300a, 300b disperse and hold state data indicating the states of the devices 60, 60a, 60b, 60c, 60d, 60e.
  • the nodes 300, 300a, 300b When the nodes 300, 300a, 300b receive the event message of the device managed by the other node, the node 300, 300a, 300b forwards the event message to the other node.
  • the nodes 300, 300a, and 300b update the state data of the device. For example, the nodes 300, 300a, 300b overwrite the sensor data included in the event message with the state data.
  • the plug-in When the plug-in is associated with the updated state data, the nodes 300, 300a, and 300b activate the associated plug-in.
  • Nodes 300, 300a, 300b execute a plug-in to process state data and start an event-driven information service.
  • the nodes 300, 300a, 300b detect a mobile terminal device existing in a predetermined area in response to an update of position information including latitude and longitude.
  • the nodes 300, 300a, and 300b detect an in-vehicle device involved in a traffic jam in response to an update of speed information indicating a moving speed.
  • Event-driven information services can be realized by adding plug-ins.
  • the nodes 300, 300a, 300b may call the business servers 400, 400a, 400b forming an external business system according to the execution result of the plug-in.
  • the nodes 300, 300a, 300b receive the control message from the message server 200.
  • the nodes 300, 300a, and 300b forward the control message to the other node.
  • the nodes 300, 300a, and 300b add or delete the plug-in according to the control message.
  • the binary program, which is the plug-in itself, is included in the control message and distributed. Therefore, it is possible to suppress the concentration of access to the common repository from a plurality of nodes.
  • the business servers 400, 400a, 400b are server computers that form an external business system for real-time dynamic event processing.
  • the business servers 400, 400a, 400b receive the event processing result from the nodes 300, 300a, 300b, execute the business application based on the event processing result, and provide the business service.
  • the business server 400 forms a personnel management system.
  • the business server 400a forms a dashboard system that collects various types of information.
  • the business server 400a may provide various information to the devices 60, 60a, 60b, 60c, 60d, 60e, or may provide various information to a predetermined administrator.
  • the business server 400b forms an operation management system.
  • the business server 400b may provide road traffic information to other systems, or may realize automatic driving control of each vehicle.
  • FIG. 3 is a block diagram showing an example of firewall hardware.
  • the firewall 100 includes a CPU 101, a RAM 102, an HDD 103, an image interface 104, an input interface 105, a medium reader 106, and a communication interface 107.
  • the unit of the firewall 100 is connected to the bus.
  • the CPU 101 corresponds to the processing unit 22 of the first embodiment.
  • the RAM 102 or the HDD 103 corresponds to the storage unit 21 of the first embodiment.
  • Devices 60, 60a, 60b, 60c, 60d, 60e, development devices 70, 70a, 70b, message server 200, nodes 300, 300a, 300b and business servers 400, 400a, 400b also have the same hardware as the firewall 100. ..
  • the CPU 101 is a processor that executes program instructions.
  • the CPU 101 loads at least a part of the programs and data stored in the HDD 103 into the RAM 102 and executes the program.
  • the CPU 101 may include a plurality of processor cores, and the firewall 100 may include a plurality of processors.
  • a collection of multiple processors is sometimes referred to as a "multiprocessor” or simply a "processor.”
  • the RAM 102 is a volatile semiconductor memory that temporarily stores a program executed by the CPU 101 and data used by the CPU 101 for calculation.
  • the firewall 100 may include a type of memory other than RAM, or may include a plurality of memories.
  • HDD 103 is a non-volatile storage that stores software programs such as OS (Operating System), middleware, and application software, and data.
  • the firewall 100 may be provided with other types of storage such as a flash memory or an SSD (Solid State Drive), or may be provided with a plurality of storages.
  • the image interface 104 outputs an image to the display device 111 connected to the firewall 100 in accordance with a command from the CPU 101.
  • the display device 111 any kind of display device such as a CRT (Cathode Ray Tube) display, a liquid crystal display (LCD: Liquid Crystal Display), an organic EL (OEL: Organic Electro-Luminescence) display, and a projector can be used. .. Further, an output device other than the display device 111 such as a printer may be connected to the firewall 100.
  • the input interface 105 receives an input signal from the input device 112 connected to the firewall 100.
  • the input device 112 any kind of input device such as a mouse, a touch panel, a touch pad, and a keyboard can be used. Further, a plurality of types of input devices may be connected to the firewall 100.
  • the medium reader 106 is a reading device that reads programs and data recorded on the recording medium 113.
  • the recording medium 113 any kind of recording medium such as a magnetic disk such as a flexible disk (FD) or HDD, an optical disk such as a CD (Compact Disc) or a DVD (Digital Versatile Disc), or a semiconductor memory is used. Can be done.
  • the medium reader 106 for example, copies a program or data read from the recording medium 113 to another recording medium such as the RAM 102 or the HDD 103.
  • the read program is executed by, for example, the CPU 101.
  • the recording medium 113 may be a portable recording medium, and may be used for distribution of programs and data. Further, the recording medium 113 and the HDD 103 may be referred to as a computer-readable recording medium.
  • the communication interface 107 is connected to the network 51 and communicates with other information processing devices.
  • the communication interface 107 is a wired communication interface connected to, for example, a wired communication device such as a switch or a router.
  • FIG. 4 is a block diagram showing a functional example of the node.
  • the nodes 300, 300a, 300b have the following software modules.
  • the node 300 has a plurality of message forwarding units such as message forwarding units 310 and 310a, a plurality of device objects such as device objects 320 and 320a, and one or more service objects such as service object 330.
  • the node 300a has a plurality of message forwarding units such as message forwarding units 310b and 310c, a plurality of device objects such as device objects 320b and 320c, and one or more service objects such as service object 330a.
  • the node 300b has a plurality of message forwarding units such as message forwarding units 310d and 310e, a plurality of device objects such as device objects 320d and 320e, and one or more service objects such as service object 330b.
  • the message server 200 receives the event message, distributes the event message to the message forwarding units 310, 310a, 310b, 310c, 310d, 310e and transfers the event message.
  • Event messages are distributed by, for example, a round robin method.
  • the message forwarding units 310, 310a, 310b, 310c, 310d, 310e determine the device object corresponding to the device that transmitted the event message, and transfer the event message to the determined device object. At this time, it is assumed that the message forwarding units 310, 310a, 310b, 310c, 310d, 310e know which device object is arranged on which node.
  • the transfer destination device object may be on the same node or on another node.
  • the device objects 320, 320a, 320b, 320c, 320d, 320e manage state data indicating the state of the device.
  • One device object corresponds to one device.
  • the device object 320 corresponds to the device 60.
  • the device object 320a corresponds to the device 60a.
  • the device object 320b corresponds to the device 60b.
  • the device object 320c corresponds to the device 60c.
  • the device object 320d corresponds to the device 60d.
  • the device object 320e corresponds to the device 60e.
  • the device objects 320, 320a, 320b, 320c, 320d, 320e When the device objects 320, 320a, 320b, 320c, 320d, 320e receive the event message, they update their own state data using the sensor data included in the event message.
  • the state data is key-value format data in which a key and a value are associated with each other.
  • the device objects 320, 320a, 320b, 320c, 320d, 320e overwrite the value corresponding to the key in the state data.
  • the plug-in In the device objects 320, 320a, 320b, 320c, 320d, 320e, it is possible to associate the plug-in with the key of the state data.
  • the control message that adds the plug-in specifies the target device object and the target key. Therefore, different plug-ins may be placed depending on the device object. Also, two or more plug-ins may be placed on the same device object. The two or more plug-ins may be associated with the same key or different keys. One plugin may be associated with more than one key.
  • the device objects 320, 320a, 320b, 320c, 320d, 320e activate the plug-in when the plug-in is associated with the key whose value has been updated.
  • the device objects 320, 320a, 320b, 320c, 320d, 320e may refer to or update state data according to the plug-in, and may generate other event messages and send them to any service object. ..
  • Service objects 330, 330a, 330b are objects corresponding to information services.
  • the service objects 330, 330a, 330b detect devices existing in a predetermined area, detect devices having a moving speed less than the threshold value, detect devices having a moving speed exceeding the 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-in is executed.
  • the device object from which the event message is sent may be on the same node or on 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. The service objects 330, 330a, 330b perform data processing based on the received event message and state data. As a result, the service objects 330, 330a, 330b may send a message to any of the business servers.
  • the message server 200 receives the control message from the firewall 100, distributes the control message to the message forwarding units 310, 310a, 310b, 310c, 310d, 310e and transfers the control message.
  • the message forwarding units 310, 310a, 310b, 310c, 310d, 310e determine the device object to be changed by the plug-in, and transfer the control message to the determined device object.
  • the device object 320, 320a, 320b, 320c, 320d, 320e When the device objects 320, 320a, 320b, 320c, 320d, 320e receive the control message for adding the plug-in, the device object 320, 320a, 320b, 320c, 320d, 320e saves the plug-in included in the control message in association with the key specified in the control message. This will cause the plugin to run when the value corresponding to that key is updated. Further, when the device objects 320, 320a, 320b, 320c, 320d, 320e receive the control message for deleting the plug-in, the device objects 320, 320a, 320b, 320c, 320d, and 320e delete the plug-in specified in the control message. In this way, the developer can dynamically add or remove plugins.
  • FIG. 5 is a block diagram showing a functional example of the device object.
  • the device object 320 has a state storage unit 321, a plug-in storage unit 322, a message determination unit 323, a state management unit 324, a plug-in management unit 325, and a plug-in execution unit 326.
  • Other device objects have similar modules.
  • the state storage unit 321 and the plug-in storage unit 322 for example, the storage area allocated to the device object 320 in the storage area of the RAM is used.
  • the message determination unit 323, the state management unit 324, the plug-in management unit 325, and the plug-in execution unit 326 are implemented using, for example, a program.
  • the state storage unit 321 stores state data in the key value format. State data contains one or more key / value pairs.
  • the plug-in storage unit 322 stores the plug-in in association with the key included in the state data.
  • the control message received by the device object 320 contains a compiled plug-in program. The plug-in is arranged executablely on the device object 320.
  • the message determination unit 323 receives a message from any of the message forwarding units and determines the type of the received message. Message types include events, add plugins, and delete plugins. The message determination unit 323 outputs an event message to the state management unit 324. Further, the message determination unit 323 outputs a control message indicating the addition or deletion of the plug-in to the plug-in management unit 325.
  • the state management unit 324 acquires an event message from the message determination unit 323. Then, the state management unit 324 extracts the key / value pair from the event message. An event message may contain more than one key / value pair.
  • the state management unit 324 searches the state data stored in the state storage unit 321 for the key extracted from the event message, and updates the value of the state data corresponding to the key to the value extracted from the event message. .. If the key extracted from the event message does not exist in the state data, the state management unit 324 may add the extracted key / value pair to the state data.
  • the plug-in management unit 325 acquires a control message for adding a plug-in from the message determination unit 323. Then, the plug-in management unit 325 stores the plug-in included in the control message in the plug-in storage unit 322 in association with the key specified in the control message. Further, the plug-in management unit 325 acquires a plug-in deletion control message from the message determination unit 323. Then, the plug-in management unit 325 deletes the plug-in specified in the control message from the plug-in storage unit 322.
  • the plug-in management unit 325 may perform conversion processing on the program of the plug-in included in the control message so that the plug-in is executed immediately in response to the update of the state data. ..
  • the plug-line program contained in a control message may be bytecode compiled from source code and written in a given low-level language. In that case, it is conceivable that the plug-in management unit 325 converts the bytecode into an executable class using a class loader, and registers the converted plug-in in a state in which it can be called immediately.
  • the plug-in execution unit 326 detects that the value corresponding to the state data key has been updated by the state management unit 324. Then, the plug-in execution unit 326 searches for the plug-in associated with the key whose value has been updated. If the corresponding plug-in exists, the plug-in execution unit 326 executes the plug-in. Even if the value corresponding to a certain key is overwritten according to the event message, if the value has not changed from before the overwriting, it may be considered that the value has not been updated.
  • FIG. 6 is a diagram showing an example of a state table and a plug-in table.
  • the state table 327 is stored in the state storage unit 321.
  • One or more records in which a key and a value are associated are registered in the state table 327.
  • Keys include, for example, velocity, latitude, longitude, and so on.
  • the value corresponding to these keys is measured by the device 60 using the sensor, included in the event message, and transmitted. For example, the device 60 periodically sends an event message containing these values.
  • the device object 320 When the device object 320 receives the event message including the value of "speed”, it associates with “speed” and overwrites the value in the state table 327. Similarly, when the device object 320 receives the event message including the value of "latitude”, it associates with “latitude” and overwrites the value in the state table 327. When the device object 320 receives the event message including the value of "longitude”, it associates with “longitude” and overwrites the value in the state table 327. Plugins can be added for speed, latitude and longitude.
  • the plug-in table 328 is stored in the plug-in storage unit 322.
  • a binary program (plug-in binary) of a plug-in is registered in the plug-in table 328 in association with one or more keys.
  • Plugin binaries created by different developers can be registered in the plugin table 328. For example, the plug-in A1 created by the developer A is registered for "speed”, and the plug-in B1 created by the developer B is registered for "latitude” and "longitude”.
  • the device object 320 when the value of "speed” in the state table 327 is updated, the device object 320 will activate the plug-in A1. When the value of "latitude” in the state table 327 is updated, the device object 320 will activate the plug-in B1. When the value of "longitude” in the state table 327 is updated, the device object 320 will activate the plug-in B1.
  • FIG. 7 is a diagram showing an example of message format.
  • the message determination unit 323 may receive the event message 61, the plug-in addition control message 71, and the plug-in deletion control message 72.
  • the event message 61 includes an object ID, a type, and sensor data.
  • the object ID is an identifier that identifies the device object.
  • the object ID can also be said to be an identifier that identifies the device.
  • the object ID is given by the device that generates the event message 61 and is referenced to identify the destination device object for the event message 61.
  • the type of event message 61 is "event".
  • the sensor data contains one or more key / value pairs.
  • the control message 71 includes an object ID, a type, a user ID, a key, a plug-in ID, and a plug-in binary.
  • the object ID is an identifier that identifies the object to which the plug-in is added.
  • the object ID is referenced to identify the destination device object for control message 71.
  • the type of control message 71 is "addition".
  • the user ID is an identifier that identifies the developer or administrator who created the plug-in.
  • the key indicates the key to which the plug-in is added.
  • the plug-in ID is an identifier that identifies the plug-in.
  • the plug-in ID may be an identifier calculated from the plug-in itself, such as a hash value of the plug-in binary.
  • a plug-in binary is a pre-compiled binary format program for a plug-in.
  • the control message 72 includes an object ID, a type, a user ID, a key, and a plug-in ID.
  • the object ID is an identifier that identifies the object for which the plug-in is to be deleted.
  • the object ID is referenced to identify the destination device object for control message 72.
  • the type of control message 72 is "delete”.
  • the user ID is an identifier that identifies the developer or administrator who deletes the plug-in.
  • the key indicates the key for which the plug-in is to be deleted. However, when the plug-in is associated with two or more keys, the association with only some keys may be canceled and the association with other keys may be left.
  • the plug-in ID is an identifier that identifies the plug-in.
  • the security of the state data possessed by the device objects 320, 320a, 320b, 320c, 320d, 320e will be described.
  • plug-ins of different users can be mixed and placed on the same device object.
  • the plug-in may read the value from the state data and may write the value to the state data.
  • the state data may have a value that allows access to a certain user and a value that does not want to allow access to the user. Therefore, it is preferable to control access to state data from the plug-in on a key-by-key basis.
  • a centralized management server that holds an access control list (ACL) is provided outside the real-time dynamic event processing system, and the centralized management server is inquired for access availability each time a plug-in accesses state data. Is also possible. However, this method increases the overhead of confirming access authority, and may reduce the throughput of real-time dynamic event processing.
  • the firewall 100 analyzes the plug-in and confirms that it conforms to the ACL before arranging the plug-in on the nodes 300, 300a, and 300b. Then, after it is confirmed that the plug-in conforms to ACL, it is omitted to check the access authority when accessing the state data from the plug-in. As a result, it is possible to reduce the access control overhead when executing the plug-in and improve the throughput of real-time dynamic event processing.
  • the firewall 100 automatically revalidates the existing plug-in when the administrator updates the ACL.
  • FIG. 8 is a block diagram showing a functional example of the firewall.
  • the firewall 100 includes an ACL storage unit 121, an analysis result database 122, a message communication unit 123, a plug-in analysis unit 124, an authentication unit 125, and an ACL update unit 126.
  • the ACL storage unit 121 and the analysis result database 122 are implemented using, for example, the storage area of the RAM 102 or the HDD 103.
  • the message communication unit 123, the plug-in analysis unit 124, the authentication unit 125, and the ACL update unit 126 are implemented using, for example, a program executed by the CPU 101.
  • the ACL storage unit 121 stores an access control list (ACL) in which a user, an object, and a key for permitting access are associated with each other.
  • ACL access control list
  • the ACL is created in advance by the administrator. ACLs may also be updated ex post facto by administrators.
  • the plugin is allowed to be added if all the keys that the plugin can access match the ACL. Will be done.
  • the whitelist type ACL indicating the key for which access is permitted is used, but the blacklist type ACL indicating the key for which access is not permitted may be used.
  • the analysis result database 122 is a history database that stores the analysis results of the existing plug-ins added to the nodes 300, 300a, and 300b.
  • the analysis result stored in the analysis result database 122 is referred to in order to suppress the re-analysis of the existing plug-in when updating the ACL.
  • the firewall 100 may not have the analysis result database 122 and may re-analyze the existing plug-in when updating the ACL.
  • the message communication unit 123 receives a control message from the development devices 70, 70a, 70b.
  • the message communication unit 123 outputs a control message for adding the plug-in to the plug-in analysis unit 124, and acquires the authentication result of the plug-in from the authentication unit 125.
  • the message communication unit 123 forwards the control message to the message server 200.
  • the message communication unit 123 does not forward the control message to the message server 200, but notifies the development device that sent the control message of the error.
  • firewall 100 may forward the plug-in deletion control message to the message server 200 without performing authentication. Further, the firewall 100 may forward the plug-in deletion control message to the message server 200 after confirming the deletion authority. The firewall 100 may delete the analysis result of the plug-in to be deleted from the analysis result database 122.
  • the plug-in analysis unit 124 acquires a control message for adding a plug-in from the message communication unit 123. Then, the plug-in analysis unit 124 analyzes the plug-in binary included in the control message and extracts the key that may be accessed from the plug-in. A static program analysis method such as abstract interpretation is used to extract the key. For example, the plug-in analysis unit 124 detects a variable used as an argument of a function that accesses state data, and extracts a value that the variable can take as a key that may be accessed.
  • the plug-in analysis unit 124 outputs the analysis result to the authentication unit 125. Further, when the authentication unit 125 determines that the authentication is successful, the plug-in analysis unit 124 saves the authentication result in which the user, the object, the plug-in, and the access destination key are associated with each other in the analysis result database 122.
  • the authentication unit 125 acquires the analysis result from the plug-in analysis unit 124. Then, the authentication unit 125 determines whether all the keys that may be accessed match the ACL stored in the ACL storage unit 121. That is, the authentication unit 125 searches the ACL for the access permission key corresponding to the user who created the plug-in and the target object. The authentication unit 125 determines whether each of the keys extracted by the plug-in analysis unit 124 belongs to the range of the access permission key indicated by the ACL. If all of the extracted keys match the ACL, the authentication unit 125 permits the addition of the plug-in and notifies the message communication unit 123 of the successful authentication. On the other hand, if some of the extracted keys do not match the ACL, the authentication unit 125 refuses to add the plug-in and notifies the message communication unit 123 of the authentication failure.
  • the ACL update unit 126 receives an ACL update message including a new ACL from the development device 70 used by the administrator. Then, the ACL update unit 126 reads the analysis result of the existing plug-in arranged in the nodes 300, 300a, 300b from the analysis result database 122. The ACL update unit 126 determines whether the key that may be accessed from the existing plug-in matches the new ACL in the same manner as the authentication unit 125.
  • the existing plug-in that was compatible with the old ACL may not be compatible with the new ACL. If there is a non-conforming existing plug-in, the ACL update unit 126 sends a warning message to the development device 70 used by the administrator. Then, the ACL update unit 126 replaces the old ACL of the ACL storage unit 121 with the new ACL.
  • FIG. 9 is a diagram showing an example of an access control list and an analysis result table.
  • the access control list 127 is stored in the ACL storage unit 121.
  • One or more records including a user ID, an object ID, and a key are registered in the access control list 127.
  • the user ID is an identifier that identifies a user including a developer and an administrator.
  • the object ID is an identifier that identifies the device object on which the plug-in is placed.
  • an identifier of one device object may be specified, such as "car001".
  • the range of the identifier of the device object may be specified by using the class name indicating the type of the device such as "car”.
  • a wild card (*) representing an arbitrary character string may be used.
  • the key is an access permission key that allows access from the plug-in.
  • the access permission key one specific key such as "speed” may be specified.
  • a regular expression may be used, or a wildcard (*) may be used to specify a range of keys. You can specify the prefix of the key to allow access by adding a wildcard at the end. For example, by describing "a *", all keys starting with "a” such as "a”, "aa”, and "ab" can be specified.
  • a plug-in placed in one object may access the state data of another object by sending a message to the other object.
  • the access control list 127 so as to include a user ID, an access source object ID, an access destination object ID, and a key.
  • the access source object ID is an identifier that identifies the object in which the plug-in is placed.
  • the access destination object ID is an identifier that identifies the object to which the access destination state data belongs.
  • the analysis result table 128 is stored in the analysis result database 122.
  • One or more records including a user ID, an object ID, a plug-in ID, and an analysis result are registered in the analysis result table 128.
  • the user ID is an identifier that identifies the user who created the plug-in.
  • the object ID is an identifier that identifies the device object in which the plug-in is placed.
  • the plug-in ID is an identifier that identifies the placed plug-in.
  • the analysis result shows the key that may be accessed from the plug-in and whether the access method is value read (read) or value write (write).
  • the analysis result table 128 does not have to include the plug-in ID.
  • the plug-in ID may be used to remove an existing plug-in that does not conform to the new ACL when an existing plug-in that does not conform to the new ACL is detected.
  • the analysis result table 128 may be divided and normalized into a table in which the plug-in ID, the key, and the access method are associated with each other, and a table in which the user ID, the object ID, and the plug-in ID are associated with each other.
  • FIG. 10 is a diagram showing an analysis example of the plug-in.
  • the plug-in is described in source code format.
  • the plug-in analysis unit 124 analyzes the compiled plug-in binary.
  • the plug-in program 131 is an example of a plug-in.
  • the initial value of the variable namespace is set to the character string "expleSumPlugin”.
  • the loop variable i changes from 0 to 9, the variable namespace with ".”
  • the value of the loop variable i added to the end is assigned to the variable field, and the state data is assigned using the value of the variable field as a key.
  • a numerical value is read from, and the numerical value is added to the variable sum.
  • the plug-in analysis unit 124 analyzes the plug-in program 131 by abstract interpretation.
  • the plug-in analysis unit 124 detects an assignment instruction that assigns a value to a variable, and adds an annotation indicating a value that the variable can take at that time for each assignment instruction.
  • Variables in the source code correspond to registers in the bytecode, and in the analysis of the plug-in binary, annotations are added for each assignment instruction that assigns a value to the register.
  • the plug-in program 132 with annotations is generated.
  • the range of the variable namespace when initializing the variable namespace is "expleSumPlugin".
  • the range of the variable field when assigning a value to the variable field in the loop is "instanceSumPlugin. *".
  • "*" is a wild card representing an arbitrary character string.
  • the range of the variable namespace when it is determined that the value of the variable sum is an even number is "expleSumPrugin.output.even”.
  • the range of the variable namespace when it is determined that the value of the variable sum is an odd number is "explexsumPlugin.output.odd”.
  • the range of the final variable namespace is "sampleSumPlugin.output. *".
  • the plug-in analysis unit 124 detects a function getState that reads the value from the state data and a function setState that writes the value to the state data.
  • the plug-in analysis unit 124 extracts an argument indicating a key from the function getState and the function setState, and specifies a value that the argument can take at that time.
  • the plug-in program 133 is generated from the plug-in program 132.
  • the value is read from the state data using the value of the variable field as a key.
  • the range of the variable field at this point is "instanceSumPlugin. *”. Therefore, in the plug-in program 131, it is determined that the read process is performed on the key "sampleSumPlugin. *”.
  • the value is written in the state data using the value of the variable namespace as a key.
  • the range of the variable namespace at this point is "explexSumPlugin.output. *”. Therefore, in the plug-in program 131, it is determined that the write process is performed on the key "sampleSumPlugin.output. *".
  • FIG. 11 is a diagram showing an example of plug-in authentication. Wildcards can be used to specify keys in plugin analysis results and access control lists 127. Therefore, the authentication unit 125 determines the inclusion relationship of the key range. If the entire key range indicated by the analysis result of the plug-in is included in the key range indicated by the access control list 127, the addition of the plug-in is permitted. On the other hand, if at least a part of the key range indicated by the analysis result of the plug-in is not included in the key range indicated by the access control list 127, the addition of the plug-in is refused.
  • the plug-in programs 134, 135, 136 are examples of plug-ins.
  • the plug-in program 134 specifies a specific character string "a" as a key. Therefore, the key that can be accessed by the plug-in program 134 is "a”.
  • the plug-in program 135 may specify a specific character string "a” as a key, and may specify a character string having one or more "c” added as a key. Therefore, the key that can be accessed by the plug-in program 135 is "a *”.
  • the plug-in program 136 uses the return value of the function as a key. Therefore, the key that can be accessed by the plug-in program 136 is "*" and is unknown.
  • the user who created the plug-in is developer A
  • the device object to be added is "car001”
  • the access control list 127 has an access permission key "a *" associated with the user ID and object ID. It is assumed that it is registered. Since “a” is included in “a *”, the addition of the plug-in program 134 is permitted. Further, since “a *” is included in “a *”, the addition of the plug-in program 135 is permitted. On the other hand, since "*" is not included in “a *", the addition of the plug-in program 136 is rejected. In this way, whether or not the plug-in can be added is determined based on the inclusion relationship of the key range.
  • FIG. 12 is a diagram showing an example of arranging a plug-in through a firewall.
  • the firewall 100 receives control messages 141 and 142 for adding the plug-in.
  • the control message 141 requests that the plug-in 143 (plug-in B1) created by the developer B be added to the device object "car001".
  • the control message 142 requests that the plug-in 144 (plug-in B2) created by the developer B be added to the device object "car001".
  • the firewall 100 analyzes the plug-in 143 and determines that the keys that may be accessed from the plug-in 143 are "latitude” and "longitude”. In addition, the firewall 100 analyzes the plug-in 144 and determines that the key that may be accessed from the plug-in 144 is "speed”. On the other hand, the access control list 127 included in the firewall 100 states that the developer B is allowed to access the key "latitude” of the device object "car001". Further, the access control list 127 describes that the developer B is permitted to access the key "longitude" of the device object "car001".
  • the firewall 100 permits the plug-in 143 to be added to the device object "car001", and transfers the control message 141 to the node 300 via the message server 200.
  • the device object 320 of the node 300 receives the control message 141 and registers the plug-in 143 included in the control message 141.
  • the device object 320 registers the plug-in 143 in association with the keys "latitude” and "longitude” of the state table 327. This causes the plugin 143 to be executed when the "latitude” or "longitude” values are updated.
  • the plug-in 143 accesses the state table 327, it is not necessary to confirm the access authority.
  • the firewall 100 refuses to add the plug-in 144 to the device object "car001".
  • the control message 142 is not forwarded to the node 300 and the plug-in 144 is not registered with the device object 320.
  • FIG. 13 is a flowchart showing an example of a plug-in generation procedure.
  • the plug-in generation is executed by a development device such as the development devices 70, 70a, 70b.
  • a development device such as the development devices 70, 70a, 70b.
  • it will be described as being represented by the development apparatus 70.
  • the development device 70 receives input from the user and creates the source code of the plug-in in response to the input from the user. However, the development device 70 may receive the plug-in source code file from another information processing device.
  • the development device 70 compiles the source code of the plug-in created in step S10 and generates a plug-in binary. For example, the development device 70 converts the source code of the plug-in into a bytecode written in an intermediate language.
  • the development device 70 generates a plug-in addition control message including the plug-in binary generated in step S11.
  • the object ID of the control message is an identifier of the device object to be placed and is specified by the user.
  • the user ID of the control message is an identifier of the user who uses the development device 70.
  • the key of the control message is the key that is the execution condition of the plug-in, and is specified by the user.
  • the plug-in ID of the control message may be automatically generated from the plug-in binary.
  • the development device 70 transmits the control message generated in step S12 to the firewall 100.
  • the control message is directly transmitted to the message server 200, the control message is rejected by the message server 200, and the message server 200 notifies the development device 70 of the error.
  • FIG. 14 is a flowchart showing an example of a plug-in authentication procedure.
  • the plug-in authentication is executed by the firewall 100.
  • the message communication unit 123 receives the control message for adding the plug-in.
  • the plug-in analysis unit 124 extracts the plug-in binary from the control message.
  • the plug-in analysis unit 124 analyzes the plug-in binary by using a static program analysis method such as abstract analysis, and analyzes the meaning of the plug-in. For example, the plug-in analysis unit 124 detects a read function that reads the value from the state data and a write function that writes the value to the state data from the plug-in binary.
  • the plug-in analysis unit 124 determines possible values (ranges) of the arguments of the read function and the write function.
  • the plug-in analysis unit 124 extracts a key that may be a read target or a write target in the plug-in based on the analysis result in step S21.
  • the authentication unit 125 selects one key extracted in step S22.
  • the authentication unit 125 extracts the user ID and the object ID from the control message.
  • the authentication unit 125 searches the access control list 127 by using the extracted user ID and object ID and the key selected in step S23. At this time, the authentication unit 125 searches the access control list 127 for records that satisfy the conditions.
  • the record that satisfies the condition is a record that includes a specified user ID and object ID, and also includes a permission key that includes the specified key.
  • the authentication unit 125 determines whether the access of the key selected in step S23 is permitted under the designated user ID and object ID. When the corresponding record is searched from the access control list 127 in step S24, it is determined that access is permitted. If the corresponding record is not searched from the access control list 127, it is determined that access is not permitted. If the access of the selected key is permitted, the process proceeds to step S26, and if not, the process proceeds to step S30.
  • step S26 The authentication unit 125 determines in step S23 whether all the keys extracted in step S22 have been selected. If all the keys are selected, the process proceeds to step S27, and if there are unselected keys, the process returns to step S23.
  • the authentication unit 125 determines whether or not the plug-in uses a predetermined prohibited API (Application Programming Interface) by referring to the analysis result in step S21.
  • the prohibited API is a library function that is not preferable for the plug-in to use from the viewpoint of security, and is defined in advance by the administrator. For example, the prohibited API contains a function that accesses the local file system. If the prohibited API is used, the process proceeds to step S30, and if the prohibited API is not used, the process proceeds to step S28.
  • the plug-in analysis unit 124 registers the analysis result of step S21 in the analysis result table 128 included in the analysis result database 122.
  • the message communication unit 123 transfers the control message received in step S20 to the message server 200. Then, the plug-in authentication is completed.
  • FIG. 15 is a flowchart showing an example of a procedure for adding a plug-in.
  • the plug-in addition is executed in cooperation with the message server 200 and the nodes 300, 300a, 300b.
  • the node 300 is executed as a representative, and the plug-in addition destination is the device object 320.
  • the message server 200 receives a control message for adding a plug-in.
  • the message server 200 accepts control messages from the firewall 100, but does not accept control messages from other information processing devices.
  • the message server 200 transfers the control message to the message forwarding unit 310 of the node 300.
  • the message server 200 may select a transfer destination by a round robin method.
  • the message forwarding unit 310 transfers the control message to the device object 320 with reference to the object ID included in the control message.
  • the plug-in management unit 325 of the device object 320 extracts the plug-in binary from the control message.
  • the plug-in management unit 325 performs a plug-in binary conversion process.
  • the plug-in management unit 325 uses a class loader to convert the bytecode of the plug-in into an executable class.
  • the plug-in management unit 325 registers the plug-in so that the plug-in is called when the value corresponding to the key specified in the control message is updated.
  • the plug-in management unit 325 registers the plug-in in the plug-in table 328.
  • FIG. 16 is a flowchart showing an example of an ACL update procedure.
  • the ACL update is performed on the firewall 100.
  • the ACL update unit 126 receives the new access control list (new ACL).
  • the new access control list is transmitted, for example, from the development device 70 used by the administrator.
  • the ACL update unit 126 temporarily stops the plug-in authentication performed by the authentication unit 125. Control messages arriving in the meantime will be put on hold.
  • the ACL update unit 126 selects one record of the existing plug-in from the analysis result table 128 included in the analysis result database 122.
  • the ACL update unit 126 selects one key that may be a read target or a write target from the analysis result included in the record selected in step S52.
  • the ACL update unit 126 extracts the user ID and the object ID from the records of the existing plug-in selected in step S52.
  • the ACL update unit 126 searches the new access control list received in step S50 by using the extracted user ID and object ID and the key selected in step S53. At this time, the ACL update unit 126 searches the new access control list for records that satisfy the conditions.
  • the record that satisfies the condition is a record that includes a specified user ID and object ID, and also includes a permission key that includes the specified key.
  • the ACL update unit 126 determines whether the access of the key selected in step S53 is permitted under the designated user ID and object ID. When the corresponding record is searched from the new access control list in step S54, it is determined that access is permitted. If the corresponding record is not searched from the new access control list, it is determined that access is not permitted. If the access of the selected key is permitted, the process proceeds to step S56, and if not, the process proceeds to step S57.
  • step S56 The ACL update unit 126 determines in step S53 whether all the keys included in the analysis result have been selected. If all the keys are selected, the process proceeds to step S58, and if there are unselected keys, the process returns to step S53.
  • the ACL update unit 126 notifies the development device that has transmitted the new access control list of the existing plug-in selected in step S52 as a nonconforming plug-in. For example, the ACL update unit 126 transmits the plug-in ID to the development device 70.
  • step S58 The ACL update unit 126 determines in step S52 whether all the existing plug-in records have been selected from the analysis result table 128. If all are selected, the process proceeds to step S59, and if there are unselected items, the process returns to step S52.
  • the ACL update unit 126 replaces the old access control list stored in the ACL storage unit 121 with the new access control list received in step S50.
  • the ACL update unit 126 releases the suspension of the plug-in authentication in step S51. As a result, the processing of the held control message is resumed.
  • event messages are collected from the device, and state data indicating the state of the device is held in the device object corresponding to the device.
  • the plug-in placed in the device object is started in response to the update of the state data, and event-driven data processing is performed.
  • real-time dynamic event processing can be executed efficiently.
  • services that use state data can be dynamically added or updated, and the stoppage of real-time dynamic event processing can be suppressed.
  • plugins of different developers can be placed on the same device object. Therefore, it is possible to implement various application software on the real-time dynamic event processing system.
  • access control that limits the data that can be accessed from the plug-in can be performed for each key included in the state data. Therefore, the state data collected from the device can be protected.
  • confirmation of access authority is performed by analyzing the plugin before adding the plugin to the device object, and it is omitted after the plugin is placed. Therefore, it is not necessary to check the access authority every time the plug-in accesses the state data, the access control overhead can be reduced, and the throughput of real-time dynamic event processing can be improved.
  • the communication overhead can be reduced as compared with the method of inquiring the centralized management server that holds the access control list for each access to the state data. Further, for example, as compared with the method of distributing the access control list to a plurality of nodes, it becomes easy to maintain the consistency of the access control list when updating the access control list.
  • plug-in analysis semantic analysis such as abstract interpretation is performed. Therefore, it is possible to reduce the risk of missing access to a key that the plugin is not allowed to access. For example, as a plug-in, it is possible to create a program that changes the access destination key by writing the initial value to the variable indicating the key and then rewriting the value of the variable after the fact. Even for such plugins, the risk of accessing unauthorized keys can be assessed compared to a simple static program analysis method that tracks the source code description.
  • the analysis result when the plug-in is added is saved in the history database, and when the access control list is updated, it is automatically checked whether the existing plug-in conforms to the new access control list. Then, if there is a nonconforming existing plug-in, a warning is notified to the administrator who created the new access control list. Therefore, even if the access authority is not confirmed for each access to the state data, the plug-in that does not conform to the access control list after the fact can be detected, and the security of the state data can be maintained.

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)

Abstract

The present invention suppresses a delay in a data process in which an additional program is used. A data processing device stores data including a plurality of data items, and if a recorded program is present, the recorded program is executed in accordance with an update of the data. An access control device receives a registration request including a target program of a user, the target program is analyzed, and data items that can be accessed from the target program, among the plurality of data items, are detected. The access control device assesses whether the user has access rights to the detected data items on the basis of access control information indicating data items to which the user has or does not have access rights. The access control device permits registration of the target program on the data processing device when it has been assessed that the user has access rights.

Description

情報処理システム、アクセス制御装置、アクセス制御方法およびアクセス制御プログラムInformation processing system, access control device, access control method and access control program
 本発明は情報処理システム、アクセス制御装置、アクセス制御方法およびアクセス制御プログラムに関する。 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 the data held by the information processing system according to the event message, and executes information processing according to the update of the data. For example, an information processing system collects event messages including sensor data measured by using a sensor device from a terminal device such as a smartphone or an in-vehicle device, and holds state data indicating the state of the terminal device. For example, an information processing system realizes an information service that detects an update of state data and provides information according to the current state of a terminal device.
 なお、複数のエンティティ装置の間でイベントメッセージを転送するイベント転送方法が提案されている。提案のイベント転送方法では、各エンティティ装置は、受信したイベントメッセージの属性情報とルータに登録されたフィルタ情報とを照合し、照合結果に基づいて不要なイベントメッセージの転送を抑止する。また、クライアント装置に接続されたデバイスにサーバ装置からアクセスすることを許容するデバイス管理システムが提案されている。提案のデバイス管理システムでは、クライアント装置は、クライアントアプリケーションとデバイスとの間のデータ通信と、サーバ装置とデバイスとの間のデータ通信を、排他的に実行するよう制御する。また、IoT(Internet of Things)の複数のエンティティ装置の間でイベントメッセージを送信する方法が提案されている。 It should be noted that an event forwarding method for forwarding an event message between a plurality of entity devices has been proposed. In the proposed event forwarding method, each entity device collates 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 collation result. In addition, a device management system that allows a device connected to a client device to be accessed from a server device has been proposed. In the proposed device management system, the client device controls to exclusively execute the data communication between the client application and the device and the data communication between the server device and the device. Further, a method of transmitting an event message between a plurality of entity devices of IoT (Internet of Things) has been proposed.
特開2004-302960号公報Japanese Unexamined Patent Publication No. 2004-302960 特開2008-4072号公報Japanese Unexamined Patent Publication No. 2008-4072 国際公開第2014/130568号International Publication No. 2014/130568
 複数のデータ項目を含むデータを保持する情報処理システムに対して、それら複数のデータ項目の少なくとも一部を利用した新たな情報サービスを追加したいことがある。そこで、あるユーザ(例えば、ある開発者)のプログラムを、データの更新に応じて当該プログラムが実行されるように情報処理システムに登録することが考えられる。 There are times when you want to add a new information service that uses at least a part of those multiple data items to an information processing system that holds data that includes multiple 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 in response to the update of data.
 ただし、情報セキュリティの観点から、収集される様々なデータ項目の中には、当該ユーザにアクセスを許可してもよいデータ項目とアクセスを許可したくないデータ項目とが混在することがある。よって、ユーザのプログラムからのデータアクセスの認証が問題となる。この点、プログラムを登録した後に、あるデータ項目に対するアクセスが発生する毎に、ACL(Access Control List)などの認証情報を参照して当該データ項目に対するアクセスの可否を判断する方法も考えられる。しかし、データアクセス毎にアクセス権限を確認するようにすると、オーバヘッドによりデータ処理が遅延するおそれがある。 However, from the viewpoint of information security, some data items that the user may be allowed to access and some data items that the user does not want to be allowed to access may coexist in the various data items that are collected. Therefore, authentication of data access from the user's program becomes a problem. In this regard, it is also conceivable to refer to authentication information such as ACL (Access Control List) every time an access to a certain data item occurs after registering the program to determine whether or not the data item can be accessed. However, if the access authority is confirmed for each data access, the data processing may be delayed due to the overhead.
 1つの側面では、本発明は、追加のプログラムを用いたデータ処理の遅延を抑制できる情報処理システム、アクセス制御装置、アクセス制御方法およびアクセス制御プログラムを提供することを目的とする。 In one aspect, an object of the present invention is to provide an information processing system, an access control device, an access control method, and an access control program that can suppress a delay in data processing using an additional program.
 1つの態様では、データ処理装置とアクセス制御装置とを有する情報処理システムが提供される。データ処理装置は、複数のデータ項目を含むデータを記憶し、登録されたプログラムが存在する場合、データの更新に応じて登録されたプログラムを実行する。アクセス制御装置は、ユーザの対象プログラムを含む登録要求を受け付け、対象プログラムを分析して複数のデータ項目のうち対象プログラムからアクセスされ得るデータ項目を検出し、ユーザがアクセス権限を有するデータ項目またはユーザがアクセス権限を有しないデータ項目を示すアクセス制御情報に基づいて、検出したデータ項目に対するアクセス権限をユーザが有するか判定し、アクセス権限を有すると判定した場合、対象プログラムをデータ処理装置に登録することを許可する。 In one aspect, an information processing system having a data processing device and an access control device is provided. The data processing device stores data including a plurality of data items, and if a registered program exists, executes the registered program in response to the update of the data. The access control device receives a registration request including the user's target program, analyzes the target program to detect a data item that can be accessed from the target program among a plurality of data items, and the data item or the user to which the user has access authority. Determines whether the user has access authority to the detected data item based on the access control information indicating the data item for which does not have access authority, and if it is determined to have access authority, registers the target program in the data processing device. Allow that.
 また、1つの態様では、記憶部と処理部とを有するアクセス制御装置が提供される。また、1つの態様では、コンピュータが実行するアクセス制御方法が提供される。また、1つの態様では、コンピュータに実行させるアクセス制御プログラムが提供される。 Further, in one aspect, an access control device having a storage unit and a processing unit is provided. Also, in one aspect, an access control method executed by a computer is provided. Further, in one aspect, an access control program to be executed by a computer is provided.
 1つの側面では、追加のプログラムを用いたデータ処理の遅延が抑制される。
 本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
On one side, delays in data processing with additional programs are suppressed.
The above and other objects, features and advantages of the present invention will become apparent by the following description in connection with the accompanying drawings representing preferred embodiments of the present invention.
第1の実施の形態の情報処理システムの例を説明する図である。It is a figure explaining the example of the information processing system of 1st Embodiment. 第2の実施の形態の情報処理システムの例を示す図である。It is a figure which shows the example of the information processing system of the 2nd Embodiment. ファイアウォールのハードウェア例を示すブロック図である。It is a block diagram which shows the hardware example of a firewall. ノードの機能例を示すブロック図である。It is a block diagram which shows the functional example of a node. デバイスオブジェクトの機能例を示すブロック図である。It is a block diagram which shows the functional example of a device object. ステートテーブルとプラグインテーブルの例を示す図である。It is a figure which shows the example of the state table and the plug-in table. メッセージのフォーマット例を示す図である。It is a figure which shows the format example of a message. ファイアウォールの機能例を示すブロック図である。It is a block diagram which shows the functional example of a firewall. アクセス制御リストと解析結果テーブルの例を示す図である。It is a figure which shows the example of the access control list and the analysis result table. プラグインの解析例を示す図である。It is a figure which shows the analysis example of a plug-in. プラグインの認証例を示す図である。It is a figure which shows the authentication example of a plug-in. ファイアウォールを通じたプラグインの配置例を示す図である。It is a figure which shows the arrangement example of the plug-in through a firewall. プラグイン生成の手順例を示すフローチャートである。It is a flowchart which shows the procedure example of plug-in generation. プラグイン認証の手順例を示すフローチャートである。It is a flowchart which shows the procedure example of plug-in authentication. プラグイン追加の手順例を示すフローチャートである。It is a flowchart which shows the procedure example of a plug-in addition. ACL更新の手順例を示すフローチャートである。It is a flowchart which shows the procedure example of ACL update.
 以下、本実施の形態を図面を参照して説明する。
 [第1の実施の形態]
 第1の実施の形態を説明する。
Hereinafter, the present embodiment will be described with reference to the drawings.
[First Embodiment]
The 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 data processing device 10 and an access control device 20. The data processing device 10 and the access control device 20 are connected to the network. The data processing device 10 and the access control device 20 can also be referred to as a computer, an information processing device, a server computer, a server device, or the like.
 データ処理装置10は、データを記憶し、データの更新に応じてプログラムを実行するというイベント駆動型の情報処理を行う。第1の実施の形態の情報処理システムを、イベント処理システムと言うこともできる。第1の実施の形態の情報処理システムは、2以上のデータ処理装置を含む並列処理システムであってもよい。データ処理装置10を、ノードと言うこともできる。データ処理装置10に対しては、データの更新に応じて実行される新たなプログラムを登録することができる。アクセス制御装置20は、あるユーザの新たなプログラムをデータ処理装置10に登録する際、当該ユーザのデータへのアクセス権限を確認してプログラムの登録可否を判定する。アクセス制御装置20を、ファイアウォール、ゲートウェイ、セキュリティ装置、プログラム検査装置などと言うこともできる。 The data processing device 10 performs event-driven information processing in which data is stored and a program is executed in response to an update of the data. The information processing system of the first embodiment can also be referred to as an event processing system. The information processing system of the first embodiment may be a parallel processing system including two or more data processing devices. The data processing device 10 can also be called a node. A new program to be executed in response to the update of data can be registered in the data processing device 10. When registering a new program of a certain user in the data processing device 10, the access control device 20 confirms the access authority to the data of the user and determines whether or not the program can be registered. The access control device 20 can also be referred to as a firewall, a gateway, a security device, a program inspection device, or the like.
 データ処理装置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 data processing device 10 has a storage unit 11 and a processing unit 12. The access control device 20 has a storage unit 21 and a processing unit 22. The storage unit 11 and the storage unit 21 may be a volatile semiconductor memory such as a RAM (Random Access Memory) or a non-volatile storage such as an HDD (Hard Disk Drive) or a flash memory. The processing units 12 and 22 are processors such as a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), and a DSP (Digital Signal Processor), for example. However, the processing units 12 and 22 may include electronic circuits for specific purposes such as ASIC (Application Specific Integrated Circuit) and FPGA (Field Programmable Gate Array). The processor executes a program stored in a memory (may be storage units 11 and 21). A collection of multiple processors is sometimes referred to as a "multiprocessor" or simply a "processor."
 記憶部11は、データ13を記憶する。データ13は、データ項目X,Y,Zなどの複数のデータ項目を含む。複数のデータ項目を、複数のレコードと言うこともできる。データ13は、キーとバリューの組を複数含むキーバリュー形式データであってもよい。データ13は更新されることがある。データ13は、端末装置の状態を示すステートデータであってもよく、端末装置からデータ処理装置10に送信されるイベントメッセージに応じて更新されてもよい。記憶部11は、データ13に対応付けてプログラムを記憶することがある。例えば、記憶部11は、特定のデータ項目に対応付けてプログラムを記憶する。 The storage unit 11 stores the data 13. The data 13 includes a plurality of data items such as data items X, Y, and Z. A plurality of data items can also be referred to as a plurality of records. The data 13 may be key-value format data including a plurality of key / value pairs. Data 13 may be updated. The data 13 may be state data indicating the state of the terminal device, or may be updated in response to an event message transmitted from the terminal device to the data processing device 10. The storage unit 11 may store the program in association with the data 13. For example, the storage unit 11 stores the program in association with a specific data item.
 処理部12は、データ13に対してプログラムを登録することがある。このプログラムは、データに対して着脱可能であり、プラグインと言うこともできる。プログラムの登録は、アクセス制御装置20から要求されることも有り得る。プログラムの登録は、データ処理装置10の稼働中に動的に行われてもよい。また、処理部12は、データ13の更新を検出する。例えば、処理部12は、端末装置から受信するイベントメッセージに応じてデータ13を更新する。データ13の更新を検出したときに、登録されたプログラムが存在する場合、処理部12は、登録されたプログラムを起動する。登録されたプログラムが特定のデータ項目に対応付けられている場合、処理部12は、特定のデータ項目の値の更新を検出したときに、登録されたプログラムを起動してもよい。 The processing unit 12 may register a program for the data 13. This program is removable to data and can be called a plug-in. Program registration may be requested by the access control device 20. The registration of the program may be performed dynamically while the data processing device 10 is in operation. Further, the processing unit 12 detects the update of the data 13. For example, the processing unit 12 updates the data 13 in response to an event message received from the terminal device. If the registered program exists when the update of the data 13 is detected, the processing unit 12 starts the registered program. When the registered program is associated with a specific data item, the processing unit 12 may start the registered program when it detects an update of the value of the specific data item.
 記憶部21は、アクセス制御情報24を記憶する。アクセス制御情報24は、データ項目X,Y,Zなどの複数のデータ項目のうち、あるユーザがアクセス権限を有するデータ項目、または、あるユーザがアクセス権限を有しないデータ項目を示す。アクセス制御情報24を、アクセス制御リスト(ACL)と言うこともできる。アクセス制御情報24は、いわゆるホワイトリストでもよいしブラックリストでもよい。アクセス制御情報24は、例えば、管理者によって予め作成される。 The storage unit 21 stores the access control information 24. The access control information 24 indicates a data item for which a certain user has access authority or a data item for which a user does not have access authority among a plurality of data items such as data items X, Y, and Z. The access control information 24 can also be referred to as an access control list (ACL). The access control information 24 may be a so-called white list or a black list. The access control information 24 is created in advance by, for example, an administrator.
 処理部22は、あるユーザの対象プログラム23を含む登録要求を受け付ける。登録要求は、データ処理装置10への対象プログラム23の登録の要求を示す。対象プログラム23を、プラグインと言うこともできる。対象プログラム23は、例えば、開発者である当該ユーザにより作成されたものである。アクセス制御装置20は、当該ユーザが使用する開発端末から登録要求を受信してもよい。対象プログラム23は、高水準言語で記述されたソースコードでもよいし、ソースコードから変換されて中間言語で記述された中間コードでもよいし、機械可読なオブジェクトコードでもよい。 The processing unit 22 receives a registration request including the target program 23 of a certain user. The registration request indicates a request for registration of the target program 23 in the data processing device 10. The target program 23 can also be called a plug-in. The target program 23 is, for example, created by the user who is the developer. The access control device 20 may receive a registration request from the development terminal used by the user. The target program 23 may be a source code written in a high-level language, an intermediate code converted from the source code and written in an intermediate language, or a machine-readable object code.
 処理部22は、登録要求に含まれる対象プログラム23を分析して、データ項目X,Y,Zなどの複数のデータ項目のうち、対象プログラム23からアクセスされ得るデータ項目を検出する。例えば、処理部22は、抽象解釈(Abstract Interpretation)などの静的プログラム解析方法を用いて、アクセス先のデータ項目を示す変数の取り得る値を抽出し、アクセス先となり得るデータ項目を特定する。アクセス先のデータ項目を示す変数は、例えば、データ13にアクセスする関数の引数として用いられる変数である。 The processing unit 22 analyzes the target program 23 included in the registration request and detects a data item that can be accessed from the target program 23 among a plurality of data items such as data items X, Y, and Z. For example, the processing unit 22 uses a static program analysis method such as Abstract Interpretation to extract possible values of variables indicating data items of access destinations and specify data items that can be access destinations. The variable indicating the data item of the access destination is, for example, a variable used as an argument of the function for accessing the data 13.
 処理部22は、アクセス制御情報24に基づいて、検出したデータ項目に対するアクセス権限を当該ユーザが有するか判定する。検出したデータ項目が2以上ある場合、処理部22は、検出した2以上のデータ項目の全てに対して当該ユーザがアクセス権限を有するか判定する。例えば、対象プログラム23から、アクセスされ得るデータ項目としてデータ項目Yが検出されたとする。これに対して、アクセス制御情報24は、ユーザがデータ項目X,Yに対するアクセス権限を有し、データ項目Zに対するアクセス権限を有しないことを示しているとする。その場合、処理部22は、検出されたデータ項目Yに対するアクセス権限をユーザが有していることを確認する。 The processing unit 22 determines whether or not the user has access authority to the detected data item based on the access control information 24. When there are two or more detected data items, the processing unit 22 determines whether or not the user has access authority to all of the two or more detected data items. For example, it is assumed that the data item Y is detected as an accessible data item from the target program 23. On the other hand, it is assumed that the access control information 24 indicates that the user has the access authority to the data items X and Y and does not have the access authority to the data item Z. In that case, the processing unit 22 confirms that the user has the access authority to the detected data item Y.
 アクセス権限を有すると判定した場合、処理部22は、対象プログラム23をデータ処理装置10に登録することを許可する。その場合、例えば、アクセス制御装置20は、対象プログラム23を含む登録要求をデータ処理装置10に転送する。これにより、データ処理装置10に対象プログラム23が登録される。例えば、データ処理装置10において、データ13のデータ項目Yが更新されると対象プログラム23が起動される。一方、アクセス権限を有しないと判定した場合、処理部22は、対象プログラム23をデータ処理装置10に登録することを拒否する。その場合、例えば、アクセス制御装置20は、対象プログラム23を含む登録要求をデータ処理装置10に転送することを抑止する。アクセス制御装置20は、開発端末に拒否メッセージを送信してもよい。 If it is determined that the user has access authority, the processing unit 22 permits the target program 23 to be registered in the data processing device 10. In that case, for example, the access control device 20 transfers the registration request including the target program 23 to the data processing device 10. As a result, the target program 23 is registered in the data processing device 10. For example, in the data processing device 10, when the data item Y of the data 13 is updated, the target program 23 is started. On the other hand, if it is determined that the user does not have the access authority, the processing unit 22 refuses to register the target program 23 in the data processing device 10. In that case, for example, the access control device 20 suppresses the transfer of the registration request including the target program 23 to the data processing device 10. The access control device 20 may send a rejection message to the development terminal.
 第1の実施の形態の情報処理システムによれば、対象プログラム23をデータ処理装置10に登録する前に、対象プログラム23を分析してアクセスされ得るデータ項目が検出される。そして、アクセス制御情報24に基づいて、検出されたデータ項目に対するアクセス権限をユーザが有するか判定され、アクセス権限を有する場合、データ13の更新に応じて実行されるように対象プログラム23がデータ処理装置10に登録される。データ処理装置10は、登録後に対象プログラム23からデータ13へのアクセスが発生した際には、アクセス先のデータ項目に対するアクセス権限を確認しなくてもよい。 According to the information processing system of the first embodiment, before registering the target program 23 in the data processing device 10, the target program 23 is analyzed to detect data items that can be accessed. Then, based on the access control information 24, it is determined whether or not the user has the access authority to the detected data item, and if the user has the access authority, the target program 23 processes the data so as to be executed in response to the update of the data 13. It is registered in the device 10. When the target program 23 accesses the data 13 after registration, the data processing device 10 does not have to confirm the access authority to the data item of the access destination.
 これにより、データ13の中に、あるユーザにアクセスを許可してもよいデータ項目とアクセスを許可したくないデータ項目とが混在していても、データ項目単位のアクセス制御を実現することができ、情報セキュリティを向上させることができる。また、対象プログラム23の登録後は、データ処理装置10においてアクセス権限の確認を省略することができ、アクセス毎にアクセス制御情報24を参照しなくてもよい。これにより、実際のアクセス時にアクセス権限を確認する方法と比べて、アクセス権限の確認のオーバヘッドを削減でき、データ処理装置10のデータ処理の遅延を抑制することができる。 As a result, even if the data 13 contains a mixture of data items for which access may be permitted to a certain user and data items for which access is not permitted, access control for each data item can be realized. , Information security can be improved. Further, after the target program 23 is registered, the confirmation of the access authority can be omitted in the data processing device 10, and the access control information 24 does not have to be referred to for each access. As a result, the overhead of confirming the access authority can be reduced as compared with the method of confirming the access authority at the time of actual access, and the delay in data processing of the data processing device 10 can be suppressed.
 [第2の実施の形態]
 次に、第2の実施の形態を説明する。
 図2は、第2の実施の形態の情報処理システムの例を示す図である。
[Second Embodiment]
Next, a second embodiment will be described.
FIG. 2 is a diagram showing 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 a device to a data center, processes the event messages in real time, and provides an event-driven service.
 第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 data center 50 connected to the network 52, a plurality of devices such as devices 60, 60a, 60b, 60c, 60d, 60e, and development devices 70, 70a, 70b, and the like. Includes multiple development equipment. The data center 50 includes a firewall 100 connected to the network 51, a message server 200, a plurality of nodes such as nodes 300, 300a, 300b, and a plurality of business servers such as business servers 400, 400a, 400b.
 ネットワーク51は、例えば、LAN(Local Area Network)などのデータ通信ネットワークである。ネットワーク52は、例えば、インターネットなどの広域データ通信ネットワークである。なお、ファイアウォール100は、第1の実施の形態のアクセス制御装置20に対応し、ノード300は、第1の実施の形態のデータ処理装置10に対応する。 The network 51 is, for example, a data communication network such as a LAN (Local Area Network). The network 52 is a wide area data communication network such as the Internet. The firewall 100 corresponds to the access control device 20 of the first embodiment, and the node 300 corresponds to the data processing device 10 of the first embodiment.
 デバイス60,60a,60b,60c,60d,60eは、イベントの発生を検出し、イベントを示すイベントメッセージをネットワーク52を介してメッセージサーバ200に送信する端末装置である。デバイス60,60a,60b,60c,60d,60eは、センサを用いて測定されたセンサデータを、イベントメッセージに含めて送信する。 The devices 60, 60a, 60b, 60c, 60d, 60e are terminal devices that detect the occurrence of an event and transmit an event message indicating the event to the message server 200 via the network 52. The devices 60, 60a, 60b, 60c, 60d, 60e include the sensor data measured by the sensor in the event message and transmit it.
 デバイス60,60a,60bは、例えば、スマートフォンやタブレット端末などの携帯端末装置である。デバイス60c,60d,60eは、例えば、車両に搭載される車載装置である。デバイス60,60a,60b,60c,60d,60eは、GPS(Global Positioning System)を用いて測定された緯度および経度を含む位置情報を、イベントメッセージに含めて送信してもよい。また、デバイス60,60a,60b,60c,60d,60eは、現在の移動速度を、イベントメッセージに含めて送信してもよい。 Devices 60, 60a, 60b are mobile terminal devices such as smartphones and tablet terminals, for example. The devices 60c, 60d, 60e are, for example, in-vehicle devices mounted on a vehicle. The devices 60, 60a, 60b, 60c, 60d, 60e may include the position information including the latitude and longitude measured by GPS (Global Positioning System) in the event message and transmit it. Further, the devices 60, 60a, 60b, 60c, 60d, 60e may include the current moving speed in the event message and transmit it.
 開発装置70,70a,70bは、データセンタ50で稼働させるアプリケーションソフトウェアの開発に使用される端末装置である。開発装置70,70a,70bは、アプリケーションソフトウェアの開発者や管理者によって使用される。例えば、開発装置70は管理者によって使用され、開発装置70aは開発者Aによって使用され、開発装置70bは開発装置70aとは異なる開発者である開発者Bによって使用される。 The development devices 70, 70a, 70b are terminal devices used for developing application software to be operated in the data center 50. The development devices 70, 70a, 70b are used by application software developers and administrators. For example, the developer 70 is used by an administrator, the developer 70a is used by developer A, and the developer 70b is used by developer B, who is a different developer than the developer 70a.
 開発装置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 development devices 70, 70a, 70b can add a plug-in, which is a detachable application program, to the nodes 300, 300a, 300b without stopping the nodes 300, 300a, 300b. Further, the development devices 70, 70a, 70b can delete the plug-in from the nodes 300, 300a, 300b without stopping the nodes 300, 300a, 300b. At that time, the development devices 70, 70a, 70b send a control message indicating the addition or deletion of the plug-in to the firewall 100. The development device 70 used by the administrator sets the firewall 100 with control information indicating the conditions of the plug-ins that can be arranged at the nodes 300, 300a, and 300b.
 ファイアウォール100は、開発装置70,70a,70bから制御メッセージを受信し、プラグインの変更の可否を判定するサーバコンピュータである。ノード300,300a,300bのプラグインの変更は、ファイアウォール100を経由して行われる。ファイアウォール100を、ゲートウェイやセキュリティ装置などと言うこともできる。また、プラグインに関して、開発者や管理者をユーザと言うことができる。 The firewall 100 is a server computer that receives control messages from the development devices 70, 70a, 70b and determines whether or not the plug-in can be changed. Changes to the plug-ins of the nodes 300, 300a, and 300b are performed via the firewall 100. The firewall 100 can also be called a gateway, a security device, or the like. Also, regarding plugins, developers and administrators can be called users.
 ファイアウォール100は、ノード300,300a,300bに配置可能なプラグインの条件を示す制御情報を保持している。ファイアウォール100は、開発装置70,70a,70bから制御メッセージを受信すると、受信した制御メッセージによって要求されるプラグインの追加や削除などのプラグインの変更が、所定のセキュリティ条件を満たすか判定する。所定のセキュリティ条件を満たす場合、ファイアウォール100は、制御メッセージをメッセージサーバ200に転送する。一方、所定のセキュリティ条件を満たさない場合、ファイアウォール100は、制御メッセージの転送を拒否する。 The firewall 100 holds control information indicating the conditions of plug-ins that can be placed on the nodes 300, 300a, and 300b. When the firewall 100 receives the control message from the development devices 70, 70a, 70b, the firewall 100 determines whether the plug-in change such as the addition or deletion of the plug-in required by the received control message satisfies a predetermined security condition. When the predetermined security condition is satisfied, the firewall 100 forwards the control message to the message server 200. On the other hand, if the predetermined security condition is not satisfied, the firewall 100 refuses to transfer the control message.
 メッセージサーバ200は、イベントメッセージや制御メッセージなどのメッセージを転送するサーバコンピュータである。メッセージサーバ200は、受信したメッセージを保持するメッセージキューを有し、各メッセージをノード300,300a,300bの1つに転送する。メッセージサーバ200を、負荷分散装置と言うこともできる。 The message server 200 is a server computer that transfers messages such as event messages and control messages. The message server 200 has a message queue for holding received messages, and transfers each message to one of the nodes 300, 300a, and 300b. The message server 200 can also be called a load distribution device.
 メッセージサーバ200は、デバイス60,60a,60b,60c,60d,60eからイベントメッセージを受信し、ノード300,300a,300bにイベントメッセージを振り分ける。また、メッセージサーバ200は、ファイアウォール100から制御メッセージを受信し、ノード300,300a,300bに制御メッセージを振り分ける。制御メッセージについては、ファイアウォール100によるセキュリティ検査が行われる。そのため、メッセージサーバ200は、開発装置70,70a,70bからメッセージサーバ200に直接送信された制御メッセージなど、ファイアウォール100を経由しない制御メッセージを拒否するようにする。 The message server 200 receives the event message from the devices 60, 60a, 60b, 60c, 60d, 60e and distributes the event message to the nodes 300, 300a, 300b. Further, the message server 200 receives the control message from the firewall 100 and distributes the control message to the nodes 300, 300a, 300b. A security check is performed on the control message by the firewall 100. Therefore, the message server 200 rejects control messages that do not pass through the firewall 100, such as control messages directly transmitted from the development devices 70, 70a, and 70b to the message server 200.
 ノード300,300a,300bは、デバイス60,60a,60b,60c,60d,60eのイベントメッセージを分散して処理するサーバコンピュータである。ノード300,300a,300bは、デバイス60,60a,60b,60c,60d,60eの状態を示すステートデータを分散して保持する。 Nodes 300, 300a, 300b are server computers that distribute and process event messages of devices 60, 60a, 60b, 60c, 60d, 60e. The nodes 300, 300a, 300b disperse and hold state data indicating the states of the devices 60, 60a, 60b, 60c, 60d, 60e.
 ノード300,300a,300bは、他ノードで管理されているデバイスのイベントメッセージを受信すると、当該他ノードにイベントメッセージを転送する。ノード300,300a,300bは、自ノードで管理しているデバイスのイベントメッセージを受信すると、そのデバイスのステートデータを更新する。例えば、ノード300,300a,300bは、イベントメッセージに含まれるセンサデータをステートデータに上書きする。更新されたステートデータに対してプラグインが対応付けられている場合、ノード300,300a,300bは、対応付けられたプラグインを起動する。 When the nodes 300, 300a, 300b receive the event message of the device managed by the other node, the node 300, 300a, 300b forwards the event message to the other node. When the nodes 300, 300a, and 300b receive the event message of the device managed by the own node, the nodes 300, 300a, and 300b update the state data of the device. For example, the nodes 300, 300a, 300b overwrite the sensor data included in the event message with the state data. When the plug-in is associated with the updated state data, the nodes 300, 300a, and 300b activate the associated plug-in.
 ノード300,300a,300bは、プラグインを実行してステートデータを処理し、イベント駆動型の情報サービスを起動する。例えば、ノード300,300a,300bは、緯度および経度を含む位置情報の更新に応じて、所定のエリアに存在する移動端末装置を検出する。また、例えば、ノード300,300a,300bは、移動速度を示す速度情報の更新に応じて、渋滞に巻き込まれている車載装置を検出する。イベント駆動型の情報サービスは、プラグインの追加によって実現することができる。ノード300,300a,300bは、プラグインの実行結果に応じて、外部の業務システムを形成する業務サーバ400,400a,400bを呼び出すことがある。 Nodes 300, 300a, 300b execute a plug-in to process state data and start an event-driven information service. For example, the nodes 300, 300a, 300b detect a mobile terminal device existing in a predetermined area in response to an update of position information including latitude and longitude. Further, for example, the nodes 300, 300a, and 300b detect an in-vehicle device involved in a traffic jam in response to an update of speed information indicating a moving speed. Event-driven information services can be realized by adding plug-ins. The nodes 300, 300a, 300b may call the business servers 400, 400a, 400b forming an external business system according to the execution result of the plug-in.
 また、ノード300,300a,300bは、メッセージサーバ200から制御メッセージを受信する。ノード300,300a,300bは、プラグインの変更対象が他ノードである制御メッセージを受信すると、当該他ノードに制御メッセージを転送する。ノード300,300a,300bは、プラグインの変更対象が自ノードである制御メッセージを受信すると、制御メッセージに応じてプラグインの追加または削除を行う。プラグイン自体であるバイナリプログラムは、制御メッセージに含まれて配布される。このため、複数のノードから共通リポジトリへのアクセスの集中を抑制することができる。 Further, the nodes 300, 300a, 300b receive the control message from the message server 200. When the nodes 300, 300a, and 300b receive the control message whose plug-in change target is another node, the nodes 300, 300a, and 300b forward the control message to the other node. When the nodes 300, 300a, and 300b receive the control message whose plug-in change target is the own node, the nodes 300, 300a, and 300b add or delete the plug-in according to the control message. The binary program, which is the plug-in itself, is included in the control message and distributed. Therefore, it is possible to suppress the concentration of access to the common repository from a plurality of nodes.
 業務サーバ400,400a,400bは、リアルタイム動的イベント処理の外部の業務システムを形成するサーバコンピュータである。業務サーバ400,400a,400bは、ノード300,300a,300bからイベント処理結果を受信し、イベント処理結果に基づいて業務アプリケーションを実行し、業務サービスを提供する。 The business servers 400, 400a, 400b are server computers that form an external business system for real-time dynamic event processing. The business servers 400, 400a, 400b receive the event processing result from the nodes 300, 300a, 300b, execute the business application based on the event processing result, and provide the business service.
 例えば、業務サーバ400は、人事管理システムを形成する。業務サーバ400aは、各種の情報をまとめるダッシュボードシステムを形成する。その場合、業務サーバ400aは、デバイス60,60a,60b,60c,60d,60eに各種の情報を提供してもよいし、所定の管理者に各種の情報を提供してもよい。業務サーバ400bは、運転管理システムを形成する。その場合、業務サーバ400bは、道路交通情報を他のシステムに提供してもよいし、各車両の自動運転制御を実現してもよい。 For example, the business server 400 forms a personnel management system. The business server 400a forms a dashboard system that collects various types of information. In that case, the business server 400a may provide various information to the devices 60, 60a, 60b, 60c, 60d, 60e, or may provide various information to a predetermined administrator. The business server 400b forms an operation management system. In that case, the business server 400b may provide road traffic information to other systems, or may realize automatic driving control of each vehicle.
 図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 an example of firewall hardware.
The firewall 100 includes a CPU 101, a RAM 102, an HDD 103, an image interface 104, an input interface 105, a medium reader 106, and a communication interface 107. The unit of the firewall 100 is connected to the bus. The CPU 101 corresponds to the processing unit 22 of the first embodiment. The RAM 102 or the HDD 103 corresponds to the storage unit 21 of the first embodiment. Devices 60, 60a, 60b, 60c, 60d, 60e, development devices 70, 70a, 70b, message server 200, nodes 300, 300a, 300b and business servers 400, 400a, 400b also have the same hardware as the firewall 100. ..
 CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、ファイアウォール100は複数のプロセッサを備えてもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。 The CPU 101 is a processor that executes program instructions. The CPU 101 loads at least a part of the programs and data stored in the HDD 103 into the RAM 102 and executes the program. The CPU 101 may include a plurality of processor cores, and the firewall 100 may include a plurality of processors. A collection of multiple processors is sometimes referred to as a "multiprocessor" or simply a "processor."
 RAM102は、CPU101が実行するプログラムやCPU101が演算に使用するデータを一時的に記憶する揮発性の半導体メモリである。なお、ファイアウォール100は、RAM以外の種類のメモリを備えてもよく、複数のメモリを備えてもよい。 The RAM 102 is a volatile semiconductor memory that temporarily stores a program executed by the CPU 101 and data used by the CPU 101 for calculation. The firewall 100 may include a type of memory other than RAM, or may include a plurality of memories.
 HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。なお、ファイアウォール100は、フラッシュメモリやSSD(Solid State Drive)など他の種類のストレージを備えてもよく、複数のストレージを備えてもよい。 HDD 103 is a non-volatile storage that stores software programs such as OS (Operating System), middleware, and application software, and data. The firewall 100 may be provided with other types of storage such as a flash memory or an SSD (Solid State Drive), or may be provided with a plurality of storages.
 画像インタフェース104は、CPU101からの命令に従って、ファイアウォール100に接続された表示装置111に画像を出力する。表示装置111として、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイ、プロジェクタなど、任意の種類の表示装置を使用することができる。また、ファイアウォール100に、プリンタなど表示装置111以外の出力デバイスが接続されてもよい。 The image interface 104 outputs an image to the display device 111 connected to the firewall 100 in accordance with a command from the CPU 101. As the display device 111, any kind of display device such as a CRT (Cathode Ray Tube) display, a liquid crystal display (LCD: Liquid Crystal Display), an organic EL (OEL: Organic Electro-Luminescence) display, and a projector can be used. .. Further, an output device other than the display device 111 such as a printer may be connected to the firewall 100.
 入力インタフェース105は、ファイアウォール100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112として、マウス、タッチパネル、タッチパッド、キーボードなど、任意の種類の入力デバイスを使用することができる。また、ファイアウォール100に複数種類の入力デバイスが接続されてもよい。 The input interface 105 receives an input signal from the input device 112 connected to the firewall 100. As the input device 112, any kind of input device such as a mouse, a touch panel, a touch pad, and a keyboard can be used. Further, a plurality of types of input devices may be connected to the firewall 100.
 媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、半導体メモリなど、任意の種類の記録媒体を使用することができる。媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。 The medium reader 106 is a reading device that reads programs and data recorded on the recording medium 113. As the recording medium 113, any kind of recording medium such as a magnetic disk such as a flexible disk (FD) or HDD, an optical disk such as a CD (Compact Disc) or a DVD (Digital Versatile Disc), or a semiconductor memory is used. Can be done. The medium reader 106, for example, copies a program or data read from the recording medium 113 to another recording medium such as the RAM 102 or the HDD 103. The read program is executed by, for example, the CPU 101. The recording medium 113 may be a portable recording medium, and may be used for distribution of programs and data. Further, the recording medium 113 and the HDD 103 may be referred to as a computer-readable recording medium.
 通信インタフェース107は、ネットワーク51に接続され、他の情報処理装置と通信する。通信インタフェース107は、例えば、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースである。 The communication interface 107 is connected to the network 51 and communicates with other information processing devices. The communication interface 107 is a wired communication interface connected to, for example, a wired communication device such as a switch or a router.
 次に、リアルタイム動的イベント処理について説明する。
 図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 a functional example of the node.
The nodes 300, 300a, 300b have the following software modules. The node 300 has a plurality of message forwarding units such as message forwarding units 310 and 310a, a plurality of device objects such as device objects 320 and 320a, and one or more service objects such as service object 330. The node 300a has a plurality of message forwarding units such as message forwarding units 310b and 310c, a plurality of device objects such as device objects 320b and 320c, and one or more service objects such as service object 330a. The node 300b has a plurality of message forwarding units such as message forwarding units 310d and 310e, a plurality of device objects such as device objects 320d and 320e, and one or more service objects such as service object 330b.
 メッセージサーバ200は、イベントメッセージを受信し、メッセージ転送部310,310a,310b,310c,310d,310eにイベントメッセージを振り分けて転送する。イベントメッセージの振り分けは、例えば、ラウンドロビン方式で行う。メッセージ転送部310,310a,310b,310c,310d,310eは、イベントメッセージを送信したデバイスに対応するデバイスオブジェクトを判定し、判定したデバイスオブジェクトに対してイベントメッセージを転送する。このとき、メッセージ転送部310,310a,310b,310c,310d,310eは、何れのデバイスオブジェクトが何れのノードに配置されているかを知っているものとする。転送先のデバイスオブジェクトは、同一ノードにあることもあるし他ノードにあることもある。 The message server 200 receives the event message, distributes the event message to the message forwarding units 310, 310a, 310b, 310c, 310d, 310e and transfers the event message. Event messages are distributed by, for example, a round robin method. The message forwarding units 310, 310a, 310b, 310c, 310d, 310e determine the device object corresponding to the device that transmitted the event message, and transfer the event message to the determined device object. At this time, it is assumed that the message forwarding units 310, 310a, 310b, 310c, 310d, 310e know which device object is arranged on which node. The transfer destination device object may be on the same node or on another node.
 デバイスオブジェクト320,320a,320b,320c,320d,320eは、デバイスの状態を示すステートデータを管理する。1つのデバイスオブジェクトは1つのデバイスに対応する。具体的には、デバイスオブジェクト320はデバイス60に対応する。デバイスオブジェクト320aはデバイス60aに対応する。デバイスオブジェクト320bはデバイス60bに対応する。デバイスオブジェクト320cはデバイス60cに対応する。デバイスオブジェクト320dはデバイス60dに対応する。デバイスオブジェクト320eはデバイス60eに対応する。 The device objects 320, 320a, 320b, 320c, 320d, 320e manage state data indicating the state of the device. One device object corresponds to one device. Specifically, the device object 320 corresponds to the device 60. The device object 320a corresponds to the device 60a. The device object 320b corresponds to the device 60b. The device object 320c corresponds to the device 60c. The device object 320d corresponds to the device 60d. The device object 320e corresponds to the device 60e.
 デバイスオブジェクト320,320a,320b,320c,320d,320eは、イベントメッセージを受信すると、イベントメッセージに含まれるセンサデータを用いて自身のステートデータを更新する。ステートデータは、キーとバリューを対応付けたキーバリュー形式データである。デバイスオブジェクト320,320a,320b,320c,320d,320eは、あるキーとバリューの組がイベントメッセージに含まれている場合、当該キーに対応するバリューをステートデータに上書きする。 When the device objects 320, 320a, 320b, 320c, 320d, 320e receive the event message, they update their own state data using the sensor data included in the event message. The state data is key-value format data in which a key and a value are associated with each other. When a certain key / value pair is included in the event message, the device objects 320, 320a, 320b, 320c, 320d, 320e overwrite the value corresponding to the key in the state data.
 デバイスオブジェクト320,320a,320b,320c,320d,320eでは、ステートデータのキーに対してプラグインを対応付けることが可能である。プラグインを追加する制御メッセージでは、対象のデバイスオブジェクトと対象のキーが指定される。よって、デバイスオブジェクトによって異なるプラグインが配置されることがある。また、同一のデバイスオブジェクトに2以上のプラグインが配置されることがある。それら2以上のプラグインは、同一のキーに対応付けられることもあるし異なるキーに対応付けられることもある。1つのプラグインが2以上のキーに対応付けられることもある。 In the device objects 320, 320a, 320b, 320c, 320d, 320e, it is possible to associate the plug-in with the key of the state data. The control message that adds the plug-in specifies the target device object and the target key. Therefore, different plug-ins may be placed depending on the device object. Also, two or more plug-ins may be placed on the same device object. The two or more plug-ins may be associated with the same key or different keys. One plugin 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, 320e activate the plug-in when the plug-in is associated with the key whose value has been updated. The device objects 320, 320a, 320b, 320c, 320d, 320e may refer to or update state data according to the plug-in, and may generate other event messages and send them to any service object. ..
 サービスオブジェクト330,330a,330bは、情報サービスに対応するオブジェクトである。例えば、サービスオブジェクト330,330a,330bは、所定のエリアに存在するデバイスの検出、移動速度が閾値未満のデバイスの検出、移動速度が閾値を超えるデバイスの検出などを行う。サービスオブジェクト330,330a,330bは、プラグインの実行に伴ってデバイスオブジェクト320,320a,320b,320c,320d,320eからイベントメッセージを受信することがある。 Service objects 330, 330a, 330b are objects corresponding to information services. For example, the service objects 330, 330a, 330b detect devices existing in a predetermined area, detect devices having a moving speed less than the threshold value, detect devices having a moving speed exceeding the 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-in is executed.
 イベントメッセージの送信元のデバイスオブジェクトは、同一ノードにあることもあるし他ノードにあることもある。何れのデバイスオブジェクトが何れのサービスオブジェクトにイベントメッセージを送信するかは、プラグインの実装による。サービスオブジェクト330,330a,330bは、ステートデータを保持することがある。サービスオブジェクト330,330a,330bは、受信したイベントメッセージおよびステートデータに基づいてデータ処理を行う。その結果、サービスオブジェクト330,330a,330bは、何れかの業務サーバにメッセージを送信することがある。 The device object from which the event message is sent may be on the same node or on 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. The service objects 330, 330a, 330b perform data processing based on the received event message and state data. As a result, the service objects 330, 330a, 330b may send a message to any of the business servers.
 また、メッセージサーバ200は、制御メッセージをファイアウォール100から受信し、メッセージ転送部310,310a,310b,310c,310d,310eに制御メッセージを振り分けて転送する。メッセージ転送部310,310a,310b,310c,310d,310eは、プラグイン変更の対象となるデバイスオブジェクトを判定し、判定したデバイスオブジェクトに対して制御メッセージを転送する。 Further, the message server 200 receives the control message from the firewall 100, distributes the control message to the message forwarding units 310, 310a, 310b, 310c, 310d, 310e and transfers the control message. The message forwarding units 310, 310a, 310b, 310c, 310d, 310e determine the device object to be changed by the plug-in, and transfer the control message to the determined device object.
 デバイスオブジェクト320,320a,320b,320c,320d,320eは、プラグイン追加の制御メッセージを受信すると、制御メッセージに含まれるプラグインを、制御メッセージで指定されたキーに対応付けて保存する。これにより、そのキーに対応するバリューの更新時にそのプラグインが実行されることになる。また、デバイスオブジェクト320,320a,320b,320c,320d,320eは、プラグイン削除の制御メッセージを受信すると、制御メッセージで指定されたプラグインを削除する。このように、開発者によって動的にプラグインの追加や削除が可能となる。 When the device objects 320, 320a, 320b, 320c, 320d, 320e receive the control message for adding the plug-in, the device object 320, 320a, 320b, 320c, 320d, 320e saves the plug-in included in the control message in association with the key specified in the control message. This will cause the plugin to run when the value corresponding to that key is updated. Further, when the device objects 320, 320a, 320b, 320c, 320d, 320e receive the control message for deleting the plug-in, the device objects 320, 320a, 320b, 320c, 320d, and 320e delete the plug-in specified in the control message. In this way, the developer can dynamically add or remove plugins.
 図5は、デバイスオブジェクトの機能例を示すブロック図である。
 デバイスオブジェクト320は、ステート記憶部321、プラグイン記憶部322、メッセージ判別部323、ステート管理部324、プラグイン管理部325およびプラグイン実行部326を有する。他のデバイスオブジェクトも同様のモジュールを有する。ステート記憶部321およびプラグイン記憶部322には、例えば、RAMの記憶領域のうちデバイスオブジェクト320に割り当てられた記憶領域が使用される。メッセージ判別部323、ステート管理部324、プラグイン管理部325およびプラグイン実行部326は、例えば、プログラムを用いて実装される。
FIG. 5 is a block diagram showing a functional example of the device object.
The device object 320 has a state storage unit 321, a plug-in storage unit 322, a message determination unit 323, a state management unit 324, a plug-in management unit 325, and a plug-in execution unit 326. Other device objects have similar modules. For the state storage unit 321 and the plug-in storage unit 322, for example, the storage area allocated to the device object 320 in the storage area of the RAM is used. The message determination unit 323, the state management unit 324, the plug-in management unit 325, and the plug-in execution unit 326 are implemented using, for example, a program.
 ステート記憶部321は、キーバリュー形式のステートデータを記憶する。ステートデータには、キーとバリューの組が1つ以上含まれる。プラグイン記憶部322は、ステートデータに含まれるキーと対応付けてプラグインを記憶する。デバイスオブジェクト320が受信する制御メッセージには、コンパイル済みのプラグインプログラムが含まれている。プラグインは、デバイスオブジェクト320にて実行可能に配置される。 The state storage unit 321 stores state data in the key value format. State data contains one or more key / value pairs. The plug-in storage unit 322 stores the plug-in in association with the key included in the state data. The control message received by the device object 320 contains a compiled plug-in program. The plug-in is arranged executablely on the device object 320.
 メッセージ判別部323は、何れかのメッセージ転送部からメッセージを受信し、受信したメッセージの種別を判別する。メッセージの種別には、イベントとプラグイン追加とプラグイン削除が含まれる。メッセージ判別部323は、イベントメッセージをステート管理部324に出力する。また、メッセージ判別部323は、プラグイン追加またはプラグイン削除を示す制御メッセージをプラグイン管理部325に出力する。 The message determination unit 323 receives a message from any of the message forwarding units and determines the type of the received message. Message types include events, add plugins, and delete plugins. The message determination unit 323 outputs an event message to the state management unit 324. Further, the message determination unit 323 outputs a control message indicating the addition or deletion of the plug-in to the plug-in management unit 325.
 ステート管理部324は、メッセージ判別部323からイベントメッセージを取得する。すると、ステート管理部324は、イベントメッセージからキーとバリューの組を抽出する。1つのイベントメッセージに、キーとバリューの組が2つ以上含まれていることもある。ステート管理部324は、ステート記憶部321に記憶されたステートデータから、イベントメッセージから抽出されたキーを検索し、当該キーに対応するステートデータのバリューを、イベントメッセージから抽出されたバリューに更新する。なお、イベントメッセージから抽出されたキーがステートデータに存在しない場合、ステート管理部324は、抽出されたキーとバリューの組をステートデータに追加すればよい。 The state management unit 324 acquires an event message from the message determination unit 323. Then, the state management unit 324 extracts the key / value pair from the event message. An event message may contain more than one key / value pair. The state management unit 324 searches the state data stored in the state storage unit 321 for the key extracted from the event message, and updates the value of the state data corresponding to the key to the value extracted from the event message. .. If the key extracted from the event message does not exist in the state data, the state management unit 324 may add the extracted key / value pair to the state data.
 プラグイン管理部325は、メッセージ判別部323からプラグイン追加の制御メッセージを取得する。すると、プラグイン管理部325は、制御メッセージで指定されたキーと対応付けて、制御メッセージに含まれるプラグインをプラグイン記憶部322に保存する。また、プラグイン管理部325は、メッセージ判別部323からプラグイン削除の制御メッセージを取得する。すると、プラグイン管理部325は、制御メッセージで指定されたプラグインをプラグイン記憶部322から削除する。 The plug-in management unit 325 acquires a control message for adding a plug-in from the message determination unit 323. Then, the plug-in management unit 325 stores the plug-in included in the control message in the plug-in storage unit 322 in association with the key specified in the control message. Further, the plug-in management unit 325 acquires a plug-in deletion control message from the message determination unit 323. Then, the plug-in management unit 325 deletes the plug-in specified in the control message from the plug-in storage unit 322.
 プラグイン追加にあたり、プラグイン管理部325は、ステートデータの更新に応答してすぐにプラグインが実行されるように、制御メッセージに含まれるプラグラインのプログラムに対して変換処理を行うことがある。例えば、制御メッセージに含まれるプラグラインのプログラムは、ソースコードからコンパイルされて所定の低水準言語で記述されたバイトコードであることがある。その場合、プラグイン管理部325は、クラスローダを用いて当該バイトコードを実行可能クラスに変換し、変換された当該プラグインをすぐに呼び出し可能な状態に登録することが考えられる。 When adding a plug-in, the plug-in management unit 325 may perform conversion processing on the program of the plug-in included in the control message so that the plug-in is executed immediately in response to the update of the state data. .. For example, the plug-line program contained in a control message may be bytecode compiled from source code and written in a given low-level language. In that case, it is conceivable that the plug-in management unit 325 converts the bytecode into an executable class using a class loader, and registers the converted plug-in in a state in which it can be called immediately.
 プラグイン実行部326は、ステート管理部324によってステートデータのキーに対応するバリューが更新されたことを検出する。すると、プラグイン実行部326は、バリューが更新されたキーに対応付けられているプラグインを検索する。プラグイン実行部326は、該当するプラグインが存在する場合、そのプラグインを実行する。なお、あるキーに対応するバリューがイベントメッセージに応じて上書きされても、バリューが上書き前から変化していない場合には、バリューが更新されていないとみなしてもよい。 The plug-in execution unit 326 detects that the value corresponding to the state data key has been updated by the state management unit 324. Then, the plug-in execution unit 326 searches for the plug-in associated with the key whose value has been updated. If the corresponding plug-in exists, the plug-in execution unit 326 executes the plug-in. Even if the value corresponding to a certain key is overwritten according to the event message, if the value has not changed from before the overwriting, it may be considered that the value has not been updated.
 図6は、ステートテーブルとプラグインテーブルの例を示す図である。
 ステートテーブル327は、ステート記憶部321に記憶される。ステートテーブル327には、キーとバリューを対応付けた1以上のレコードが登録される。キーには、例えば、速度、緯度、経度などが含まれる。これらのキーに対応するバリューは、デバイス60がセンサを用いて測定し、イベントメッセージに含めて送信したものである。例えば、デバイス60が、これらのバリューを含むイベントメッセージを定期的に送信する。
FIG. 6 is a diagram showing an example of a state table and a plug-in table.
The state table 327 is stored in the state storage unit 321. One or more records in which a key and a value are associated are registered in the state table 327. Keys include, for example, velocity, latitude, longitude, and so on. The value corresponding to these keys is measured by the device 60 using the sensor, included in the event message, and transmitted. For example, the device 60 periodically sends an event message containing these values.
 デバイスオブジェクト320は、「速度」のバリューを含むイベントメッセージを受信すると、「速度」と対応付けてそのバリューをステートテーブル327に上書きする。同様に、デバイスオブジェクト320は、「緯度」のバリューを含むイベントメッセージを受信すると、「緯度」と対応付けてそのバリューをステートテーブル327に上書きする。デバイスオブジェクト320は、「経度」のバリューを含むイベントメッセージを受信すると、「経度」と対応付けてそのバリューをステートテーブル327に上書きする。速度、緯度および経度に対しては、プラグインを追加することができる。 When the device object 320 receives the event message including the value of "speed", it associates with "speed" and overwrites the value in the state table 327. Similarly, when the device object 320 receives the event message including the value of "latitude", it associates with "latitude" and overwrites the value in the state table 327. When the device object 320 receives the event message including the value of "longitude", it associates with "longitude" and overwrites the value in the state table 327. Plugins can be added for speed, latitude and longitude.
 プラグインテーブル328は、プラグイン記憶部322に記憶される。プラグインテーブル328には、1以上のキーに対応付けてプラグインのバイナリプログラム(プラグインバイナリ)が登録される。プラグインテーブル328には、異なる開発者によって作成されたプラグインバイナリを登録することができる。例えば、「速度」に対して、開発者Aによって作成されたプラグインA1が登録され、「緯度」および「経度」に対して、開発者Bによって作成されたプラグインB1が登録される。 The plug-in table 328 is stored in the plug-in storage unit 322. A binary program (plug-in binary) of a plug-in is registered in the plug-in table 328 in association with one or more keys. Plugin binaries created by different developers can be registered in the plugin table 328. For example, the plug-in A1 created by the developer A is registered for "speed", and the plug-in B1 created by the developer B is registered for "latitude" and "longitude".
 この場合、ステートテーブル327の「速度」のバリューが更新された場合、デバイスオブジェクト320はプラグインA1を起動することになる。ステートテーブル327の「緯度」のバリューが更新された場合、デバイスオブジェクト320はプラグインB1を起動することになる。ステートテーブル327の「経度」のバリューが更新された場合、デバイスオブジェクト320はプラグインB1を起動することになる。 In this case, when the value of "speed" in the state table 327 is updated, the device object 320 will activate the plug-in A1. When the value of "latitude" in the state table 327 is updated, the device object 320 will activate the plug-in B1. When the value of "longitude" in the state table 327 is updated, the device object 320 will activate the plug-in B1.
 図7は、メッセージのフォーマット例を示す図である。
 メッセージ判別部323は、イベントメッセージ61、プラグイン追加の制御メッセージ71、および、プラグイン削除の制御メッセージ72を受信することがある。
FIG. 7 is a diagram showing an example of message format.
The message determination unit 323 may receive the event message 61, the plug-in addition control message 71, and the plug-in deletion control message 72.
 イベントメッセージ61は、オブジェクトID、種別およびセンサデータを含む。オブジェクトIDは、デバイスオブジェクトを識別する識別子である。オブジェクトIDは、デバイスを識別する識別子であると言うこともできる。オブジェクトIDは、イベントメッセージ61を生成するデバイスによって付与され、イベントメッセージ61の宛先のデバイスオブジェクトを特定するために参照される。イベントメッセージ61の種別は「イベント」である。センサデータは、キーとバリューの組を1つ以上含む。 The event message 61 includes an object ID, a type, and sensor data. The object ID is an identifier that identifies the device object. The object ID can also be said to be an identifier that identifies the device. The object ID is given by the device that generates the event message 61 and is referenced to identify the destination device object for the event message 61. The type of event message 61 is "event". The sensor data contains one or more key / value pairs.
 制御メッセージ71は、オブジェクトID、種別、ユーザID、キー、プラグインIDおよびプラグインバイナリを含む。オブジェクトIDは、プラグインを追加する対象のオブジェクトを識別する識別子である。オブジェクトIDは、制御メッセージ71の宛先のデバイスオブジェクトを特定するために参照される。制御メッセージ71の種別は「追加」である。ユーザIDは、プラグインを作成した開発者または管理者を識別する識別子である。キーは、プラグインを追加する対象のキーを示す。プラグインIDは、プラグインを識別する識別子である。プラグインIDは、プラグインバイナリのハッシュ値など、プラグイン自体から算出される識別子であってもよい。プラグインバイナリは、プラグインのコンパイル済みのバイナリ形式プログラムである。 The control message 71 includes an object ID, a type, a user ID, a key, a plug-in ID, and a plug-in binary. The object ID is an identifier that identifies the object to which the plug-in is added. The object ID is referenced to identify the destination device object for control message 71. The type of control message 71 is "addition". The user ID is an identifier that identifies the developer or administrator who created the plug-in. The key indicates the key to which the plug-in is added. The plug-in ID is an identifier that identifies the plug-in. The plug-in ID may be an identifier calculated from the plug-in itself, such as a hash value of the plug-in binary. A plug-in binary is a pre-compiled binary format program for a plug-in.
 制御メッセージ72は、オブジェクトID、種別、ユーザID、キーおよびプラグインIDを含む。オブジェクトIDは、プラグインを削除する対象のオブジェクトを識別する識別子である。オブジェクトIDは、制御メッセージ72の宛先のデバイスオブジェクトを特定するために参照される。制御メッセージ72の種別は「削除」である。ユーザIDは、プラグインを削除する開発者または管理者を識別する識別子である。キーは、プラグインを削除する対象のキーを示す。ただし、プラグインが2以上のキーと対応付けられている場合に、一部のキーとの対応付けのみを解除し、他のキーとの対応付けを残す場合もある。プラグインIDは、プラグインを識別する識別子である。 The control message 72 includes an object ID, a type, a user ID, a key, and a plug-in ID. The object ID is an identifier that identifies the object for which the plug-in is to be deleted. The object ID is referenced to identify the destination device object for control message 72. The type of control message 72 is "delete". The user ID is an identifier that identifies the developer or administrator who deletes the plug-in. The key indicates the key for which the plug-in is to be deleted. However, when the plug-in is associated with two or more keys, the association with only some keys may be canceled and the association with other keys may be left. The plug-in ID is an identifier that identifies the plug-in.
 次に、デバイスオブジェクト320,320a,320b,320c,320d,320eが有するステートデータのセキュリティについて説明する。
 前述のように、同一のデバイスオブジェクトに対して、異なるユーザのプラグインを混在させて配置することができる。プラグインは、ステートデータからバリューを読み出すことがあり、ステートデータにバリューを書き込むことがある。このとき、ステートデータの中には、情報セキュリティの観点から、あるユーザにアクセスを許可するバリューと当該ユーザにアクセスを許可したくないバリューが存在することがある。そこで、プラグインからステートデータへのアクセスをキー単位で制御することが好ましい。
Next, the security of the state data possessed by the device objects 320, 320a, 320b, 320c, 320d, 320e will be described.
As described above, plug-ins of different users can be mixed and placed on the same device object. The plug-in may read the value from the state data and may write the value to the state data. At this time, from the viewpoint of information security, the state data may have a value that allows access to a certain user and a value that does not want to allow access to the user. Therefore, it is preferable to control access to state data from the plug-in on a key-by-key basis.
 アクセス制御方法としては、リアルタイム動的イベント処理システムの外部に、アクセス制御リスト(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 the centralized management server is inquired for access availability each time a plug-in accesses state data. Is also possible. However, this method increases the overhead of confirming access authority, and may reduce the throughput of real-time dynamic event processing.
 また、アクセス制御方法として、ノード300,300a,300bにACLをコピーし、プラグインからステートデータへのアクセス毎にノード内でアクセス権限を確認する方法も考えられる。しかし、この方法でも、アクセス権限の確認のオーバヘッドが大きくなり、リアルタイム動的イベント処理のスループットが低下するおそれがある。また、ACLの更新時に、複数のノードのACLの一貫性を保持することが難しい場合がある。 Also, as an access control method, it is conceivable to copy the ACL to the nodes 300, 300a, 300b and check the access authority in the node every time the plug-in accesses the state data. However, even with this method, the overhead of confirming access authority increases, and the throughput of real-time dynamic event processing may decrease. In addition, it may be difficult to maintain the consistency of ACLs of a plurality of nodes when updating ACLs.
 そこで、第2の実施の形態では、ノード300,300a,300bにプラグインを配置する前に、ファイアウォール100がプラグインを分析してACLに適合していることを確認する。そして、プラグインがACLに適合していることが確認された後は、プラグインからステートデータへのアクセス時にアクセス権限を確認することを省略する。これにより、プラグイン実行時のアクセス制御のオーバヘッドを削減し、リアルタイム動的イベント処理のスループットを向上させることができる。 Therefore, in the second embodiment, the firewall 100 analyzes the plug-in and confirms that it conforms to the ACL before arranging the plug-in on the nodes 300, 300a, and 300b. Then, after it is confirmed that the plug-in conforms to ACL, it is omitted to check the access authority when accessing the state data from the plug-in. As a result, it is possible to reduce the access control overhead when executing the plug-in and improve the throughput of real-time dynamic event processing.
 ただし、アクセス時のアクセス権限の確認が省略されるため、ACLが示すセキュリティポリシーが管理者によって事後的に変更された場合、配置済みの既存プラグインが更新後のACLに適合しなくなることがある。そこで、ファイアウォール100は、管理者がACLを更新する際に、自動的に既存プラグインを再検証するようにする。 However, since confirmation of access authority at the time of access is omitted, if the security policy indicated by ACL is changed after the fact by the administrator, the existing installed plug-in may not conform to the updated ACL. .. Therefore, the firewall 100 automatically revalidates the existing plug-in when the administrator updates the ACL.
 図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 a functional example of the firewall.
The firewall 100 includes an ACL storage unit 121, an analysis result database 122, a message communication unit 123, a plug-in analysis unit 124, an authentication unit 125, and an ACL update unit 126. The ACL storage unit 121 and the analysis result database 122 are implemented using, for example, the storage area of the RAM 102 or the HDD 103. The message communication unit 123, the plug-in analysis unit 124, the authentication unit 125, and the ACL update unit 126 are implemented using, for example, a program executed by the CPU 101.
 ACL記憶部121は、ユーザとオブジェクトとアクセスを許可するキーとを対応付けたアクセス制御リスト(ACL)を記憶する。ACLは、予め管理者によって作成される。ACLは、管理者によって事後的に更新されることもある。あるユーザがプラグインを開発し、あるオブジェクトにそのプラグインを追加しようとする場合、そのプラグインからアクセスされる可能性のあるキーの全てがACLとマッチすれば、そのプラグインの追加が許可されることになる。なお、第2の実施の形態では、アクセスを許可するキーを示すホワイトリスト形式のACLを用いているが、アクセスを許可しないキーを示すブラックリスト形式のACLを用いるようにしてもよい。 The ACL storage unit 121 stores an access control list (ACL) in which a user, an object, and a key for permitting access are associated with each other. The ACL is created in advance by the administrator. ACLs may also be updated ex post facto by administrators. When a user develops a plugin and tries to add it to an object, the plugin is allowed to be added if all the keys that the plugin can access match the ACL. Will be done. In the second embodiment, the whitelist type ACL indicating the key for which access is permitted is used, but the blacklist type ACL indicating the key for which access is not permitted may be used.
 解析結果データベース122は、ノード300,300a,300bに追加された既存プラグインについての解析結果を記憶する履歴データベースである。解析結果データベース122に記憶された解析結果は、ACLの更新時に既存プラグインの再解析を抑制するために参照される。ただし、ファイアウォール100が解析結果データベース122をもたずに、ACLの更新時に既存プラグインを再解析するようにしてもよい。 The analysis result database 122 is a history database that stores the analysis results of the existing plug-ins added to the nodes 300, 300a, and 300b. The analysis result stored in the analysis result database 122 is referred to in order to suppress the re-analysis of the existing plug-in when updating the ACL. However, the firewall 100 may not have the analysis result database 122 and may re-analyze the existing plug-in when updating the ACL.
 メッセージ通信部123は、開発装置70,70a,70bから制御メッセージを受信する。メッセージ通信部123は、プラグイン追加の制御メッセージをプラグイン解析部124に出力し、プラグインの認証結果を認証部125から取得する。認証成功、すなわち、プラグイン追加を許可する場合、メッセージ通信部123は、制御メッセージをメッセージサーバ200に転送する。一方、認証失敗、すなわち、プラグイン追加を拒否する場合、メッセージ通信部123は、制御メッセージをメッセージサーバ200に転送せず、制御メッセージを送信した開発装置にエラーを通知する。 The message communication unit 123 receives a control message from the development devices 70, 70a, 70b. The message communication unit 123 outputs a control message for adding the plug-in to the plug-in analysis unit 124, and acquires the authentication result of the plug-in from the authentication unit 125. When the authentication is successful, that is, when the addition of the plug-in is permitted, the message communication unit 123 forwards the control message to the message server 200. On the other hand, when the authentication fails, that is, when the addition of the plug-in is refused, the message communication unit 123 does not forward the control message to the message server 200, but notifies the development device that sent the control message of the error.
 なお、ファイアウォール100は、プラグイン削除の制御メッセージについては、認証を行わずにメッセージサーバ200に転送するようにしてもよい。また、ファイアウォール100は、プラグイン削除の制御メッセージについて、削除権限を確認した上でメッセージサーバ200に転送するようにしてもよい。ファイアウォール100は、解析結果データベース122から、削除するプラグインの解析結果を削除するようにしてもよい。 Note that the firewall 100 may forward the plug-in deletion control message to the message server 200 without performing authentication. Further, the firewall 100 may forward the plug-in deletion control message to the message server 200 after confirming the deletion authority. The firewall 100 may delete the analysis result of the plug-in to be deleted from the analysis result database 122.
 プラグイン解析部124は、プラグイン追加の制御メッセージをメッセージ通信部123から取得する。すると、プラグイン解析部124は、制御メッセージに含まれるプラグインバイナリを解析して、プラグインからアクセスされる可能性があるキーを抽出する。キーの抽出には、抽象解釈などの静的プログラム解析方法を利用する。例えば、プラグイン解析部124は、ステートデータにアクセスする関数の引数として使用されている変数を検出し、その変数が取り得る値を、アクセスされる可能性があるキーとして抽出する。 The plug-in analysis unit 124 acquires a control message for adding a plug-in from the message communication unit 123. Then, the plug-in analysis unit 124 analyzes the plug-in binary included in the control message and extracts the key that may be accessed from the plug-in. A static program analysis method such as abstract interpretation is used to extract the key. For example, the plug-in analysis unit 124 detects a variable used as an argument of a function that accesses state data, and extracts a value that the variable can take as a key that may be accessed.
 プラグイン解析部124は、解析結果を認証部125に出力する。また、プラグイン解析部124は、認証部125が認証成功と判定した場合、ユーザとオブジェクトとプラグインとアクセス先キーを対応付けた認証結果を解析結果データベース122に保存する。 The plug-in analysis unit 124 outputs the analysis result to the authentication unit 125. Further, when the authentication unit 125 determines that the authentication is successful, the plug-in analysis unit 124 saves the authentication result in which the user, the object, the plug-in, and the access destination key are associated with each other in the analysis result database 122.
 認証部125は、プラグイン解析部124から解析結果を取得する。すると、認証部125は、アクセスされる可能性があるキーの全てが、ACL記憶部121に記憶されたACLにマッチするか判定する。すなわち、認証部125は、プラグインを作成したユーザおよび対象のオブジェクトに対応するアクセス許可キーをACLから検索する。認証部125は、プラグイン解析部124で抽出されたキーそれぞれが、ACLが示すアクセス許可キーの範囲に属しているか判定する。抽出されたキーの全てがACLにマッチした場合、認証部125は、プラグイン追加を許可し、メッセージ通信部123に認証成功を通知する。一方、抽出されたキーの中にACLにマッチしないものがある場合、認証部125は、プラグイン追加を拒否し、メッセージ通信部123に認証失敗を通知する。 The authentication unit 125 acquires the analysis result from the plug-in analysis unit 124. Then, the authentication unit 125 determines whether all the keys that may be accessed match the ACL stored in the ACL storage unit 121. That is, the authentication unit 125 searches the ACL for the access permission key corresponding to the user who created the plug-in and the target object. The authentication unit 125 determines whether each of the keys extracted by the plug-in analysis unit 124 belongs to the range of the access permission key indicated by the ACL. If all of the extracted keys match the ACL, the authentication unit 125 permits the addition of the plug-in and notifies the message communication unit 123 of the successful authentication. On the other hand, if some of the extracted keys do not match the ACL, the authentication unit 125 refuses to add the plug-in and notifies the message communication unit 123 of the authentication failure.
 ACL更新部126は、管理者が使用する開発装置70から、新ACLを含むACL更新メッセージを受信する。すると、ACL更新部126は、解析結果データベース122から、ノード300,300a,300bに配置済みの既存プラグインの解析結果を読み出す。ACL更新部126は、認証部125と同様の方法で、既存プラグインからアクセスされる可能性のあるキーが新ACLにマッチするか判定する。 The ACL update unit 126 receives an ACL update message including a new ACL from the development device 70 used by the administrator. Then, the ACL update unit 126 reads the analysis result of the existing plug-in arranged in the nodes 300, 300a, 300b from the analysis result database 122. The ACL update unit 126 determines whether the key that may be accessed from the existing plug-in matches the new ACL in the same manner as the authentication unit 125.
 旧ACLが新ACLに更新されることにより、旧ACLに適合していた既存プラグインが新ACLに適合しなくなることがある。不適合の既存プラグインが存在する場合、ACL更新部126は、管理者が使用する開発装置70に警告メッセージを送信する。そして、ACL更新部126は、ACL記憶部121の旧ACLを新ACLに置換する。 When the old ACL is updated to the new ACL, the existing plug-in that was compatible with the old ACL may not be compatible with the new ACL. If there is a non-conforming existing plug-in, the ACL update unit 126 sends a warning message to the development device 70 used by the administrator. Then, the ACL update unit 126 replaces the old ACL of the ACL storage unit 121 with the new ACL.
 図9は、アクセス制御リストと解析結果テーブルの例を示す図である。
 アクセス制御リスト127は、ACL記憶部121に記憶される。アクセス制御リスト127には、ユーザIDとオブジェクトIDとキーを含む1以上のレコードが登録される。ユーザIDは、開発者と管理者を含むユーザを識別する識別子である。オブジェクトIDは、プラグインを配置する対象のデバイスオブジェクトを識別する識別子である。オブジェクトIDとして、「car001」のように、1つのデバイスオブジェクトの識別子を指定してもよい。また、オブジェクトIDとして、「car」のように、デバイスの種類を表すクラス名を用いて、デバイスオブジェクトの識別子の範囲を指定してもよい。また、オブジェクトIDでは、任意の文字列を表すワイルドカード(*)を用いてもよい。
FIG. 9 is a diagram showing an example of an access control list and an analysis result table.
The access control list 127 is stored in the ACL storage unit 121. One or more records including a user ID, an object ID, and a key are registered in the access control list 127. The user ID is an identifier that identifies a user including a developer and an administrator. The object ID is an identifier that identifies the device object on which the plug-in is placed. As the object ID, an identifier of one device object may be specified, such as "car001". Further, as the object ID, the range of the identifier of the device object may be specified by using the class name indicating the type of the device such as "car". Further, in the object ID, a wild card (*) representing an arbitrary character string may be used.
 キーは、プラグインからのアクセスを許可するアクセス許可キーである。アクセス許可キーとして、「速度」のように、特定の1つのキーを指定してもよい。また、アクセス許可キーでは、正規表現を用いてもよく、ワイルドカード(*)を用いてキーの範囲を指定してもよい。ワイルドカードを末尾に付すことで、アクセスを許可するキーのプレフィックスを指定することができる。例えば、「a*」と記載することで、「a」や「aa」や「ab」など、「a」から始まる全てのキーを指定することができる。 The key is an access permission key that allows access from the plug-in. As the access permission key, one specific key such as "speed" may be specified. Further, in the access permission key, a regular expression may be used, or a wildcard (*) may be used to specify a range of keys. You can specify the prefix of the key to allow access by adding a wildcard at the end. For example, by describing "a *", all keys starting with "a" such as "a", "aa", and "ab" can be specified.
 なお、リアルタイム動的イベント処理システムによっては、あるオブジェクトに配置されたプラグインが、他のオブジェクトにメッセージを送信することで他のオブジェクトのステートデータにアクセスすることも有り得る。その場合、アクセス制御リスト127を、ユーザIDとアクセス元オブジェクトIDとアクセス先オブジェクトIDとキーとを含むように拡張することが考えられる。アクセス元オブジェクトIDは、プラグインが配置されるオブジェクトを識別する識別子である。アクセス先オブジェクトIDは、アクセス先のステートデータが属するオブジェクトを識別する識別子である。 Depending on the real-time dynamic event processing system, a plug-in placed in one object may access the state data of another object by sending a message to the other object. In that case, it is conceivable to extend the access control list 127 so as to include a user ID, an access source object ID, an access destination object ID, and a key. The access source object ID is an identifier that identifies the object in which the plug-in is placed. The access destination object ID is an identifier that identifies the object to which the access destination state data belongs.
 解析結果テーブル128は、解析結果データベース122に記憶される。解析結果テーブル128には、ユーザID、オブジェクトID、プラグインIDおよび解析結果を含む1以上のレコードが登録される。ユーザIDは、プラグインを作成したユーザを識別する識別子である。オブジェクトIDは、プラグインを配置したデバイスオブジェクトを識別する識別子である。プラグインIDは、配置したプラグインを識別する識別子である。解析結果は、プラグインからアクセスされる可能性のあるキーと、アクセス方法がバリューの読み出し(read)であるかバリューの書き込み(write)であるかを示す。 The analysis result table 128 is stored in the analysis result database 122. One or more records including a user ID, an object ID, a plug-in ID, and an analysis result are registered in the analysis result table 128. The user ID is an identifier that identifies the user who created the plug-in. The object ID is an identifier that identifies the device object in which the plug-in is placed. The plug-in ID is an identifier that identifies the placed plug-in. The analysis result shows the key that may be accessed from the plug-in and whether the access method is value read (read) or value write (write).
 なお、既存プラグインが新ACLに適合しているか検証するという観点からは、解析結果テーブル128がプラグインIDを含まなくてもよい。プラグインIDは、新ACLに適合しない既存プラグインが検出された場合に、不適合の既存プラグインを削除するために使用されることがある。また、解析結果テーブル128を、プラグインIDとキーとアクセス方法とを対応付けたテーブルと、ユーザIDとオブジェクトIDとプラグインIDとを対応付けたテーブルとに分割して正規化してもよい。 From the viewpoint of verifying whether the existing plug-in conforms to the new ACL, the analysis result table 128 does not have to include the plug-in ID. The plug-in ID may be used to remove an existing plug-in that does not conform to the new ACL when an existing plug-in that does not conform to the new ACL is detected. Further, the analysis result table 128 may be divided and normalized into a table in which the plug-in ID, the key, and the access method are associated with each other, and a table in which the user ID, the object ID, and the plug-in ID are associated with each other.
 次に、プラグインの解析例および認証例について説明する。
 図10は、プラグインの解析例を示す図である。
 ここでは説明を容易にするため、プラグインをソースコード形式で記述している。実際にはプラグイン解析部124は、コンパイル済みのプラグインバイナリを解析する。
Next, an analysis example and an authentication example of the plug-in will be described.
FIG. 10 is a diagram showing an analysis example of the plug-in.
Here, for ease of explanation, the plug-in is described in source code format. Actually, the plug-in analysis unit 124 analyzes the compiled plug-in binary.
 プラグインプログラム131は、プラグインの一例である。プラグインプログラム131では、変数namespaceの初期値が文字列「exampleSumPlugin」に設定される。次に、ループ変数iが0から9まで変化する間、変数namespaceの末尾に「.」とループ変数iの値を追加したものが、変数fieldに代入され、変数fieldの値をキーとしてステートデータから数値が読み出され、その数値が変数sumに加算される。次に、変数sumの値が偶数か判定され、偶数なら変数namespaceの末技に「.output.even」が追加され、奇数なら変数namespaceの末技に「.output.odd」が追加される。最後に、変数namespaceの値をキーとし変数sumの値をバリューとして、ステートデータが更新される。 The plug-in program 131 is an example of a plug-in. In the plug-in program 131, the initial value of the variable namespace is set to the character string "expleSumPlugin". Next, while the loop variable i changes from 0 to 9, the variable namespace with "." And the value of the loop variable i added to the end is assigned to the variable field, and the state data is assigned using the value of the variable field as a key. A numerical value is read from, and the numerical value is added to the variable sum. Next, it is determined whether the value of the variable sum is an even number. If it is an even number, ".outut.even" is added to the final skill of the variable namespace, and if it is an odd number, ".outut.odd" is added to the final skill of the variable namespace. Finally, the state data is updated with the value of the variable namespace as the key and the value of the variable sum as the value.
 プラグイン解析部124は、抽象解釈によりプラグインプログラム131を解析する。抽象解釈では、プラグイン解析部124は、変数に値を代入する代入命令を検出し、代入命令毎にその時点で変数が取り得る値を示すアノテーションを付加する。なお、ソースコードにおける変数はバイトコードにおけるレジスタに対応し、プラグインバイナリの解析ではレジスタに値を代入する代入命令毎にアノテーションを付加することになる。 The plug-in analysis unit 124 analyzes the plug-in program 131 by abstract interpretation. In the abstract interpretation, the plug-in analysis unit 124 detects an assignment instruction that assigns a value to a variable, and adds an annotation indicating a value that the variable can take at that time for each assignment instruction. Variables in the source code correspond to registers in the bytecode, and in the analysis of the plug-in binary, annotations are added for each assignment instruction that assigns a value to the register.
 プラグインプログラム131からは、アノテーションを付加したプラグインプログラム132が生成される。プラグインプログラム132では、変数namespaceを初期化する際の変数namespaceの値域は、「exampleSumPlugin」である。ループ内で変数fieldに値を代入する際の変数fieldの値域は、「exampleSumPlugin.*」である。ここで「*」は、任意の文字列を表すワイルドカードである。変数sumの値が偶数であると判定された際の変数namespaceの値域は、「exampleSumPlugin.output.even」である。変数sumの値が奇数であると判定された際の変数namespaceの値域は、「exampleSumPlugin.output.odd」である。最終的な変数namespaceの値域は、「exampleSumPlugin.output.*」である。 From the plug-in program 131, the plug-in program 132 with annotations is generated. In the plug-in program 132, the range of the variable namespace when initializing the variable namespace is "expleSumPlugin". The range of the variable field when assigning a value to the variable field in the loop is "instanceSumPlugin. *". Here, "*" is a wild card representing an arbitrary character string. The range of the variable namespace when it is determined that the value of the variable sum is an even number is "expleSumPrugin.output.even". The range of the variable namespace when it is determined that the value of the variable sum is an odd number is "explexsumPlugin.output.odd". The range of the final variable namespace is "sampleSumPlugin.output. *".
 次に、プラグイン解析部124は、ステートデータからバリューを読み出す関数getStateと、ステートデータにバリューを書き込む関数setStateを検出する。プラグイン解析部124は、関数getStateや関数setStateからキーを示す引数を抽出し、その時点で引数が取り得る値を特定する。 Next, the plug-in analysis unit 124 detects a function getState that reads the value from the state data and a function setState that writes the value to the state data. The plug-in analysis unit 124 extracts an argument indicating a key from the function getState and the function setState, and specifies a value that the argument can take at that time.
 プラグインプログラム132からは、プラグインプログラム133が生成される。プラグインプログラム133では、変数fieldの値をキーとしてステートデータからバリューが読み出されている。この時点における変数fieldの値域は「exampleSumPlugin.*」である。よって、プラグインプログラム131では、「exampleSumPlugin.*」というキーに対してread処理が行われると判定される。また、プラグインプログラム133では、変数namespaceの値をキーとしてステートデータにバリューが書き込まれている。この時点における変数namespaceの値域は「exampleSumPlugin.output.*」である。よって、プラグインプログラム131では、「exampleSumPlugin.output.*」というキーに対してwrite処理が行われると判定される。 The plug-in program 133 is generated from the plug-in program 132. In the plug-in program 133, the value is read from the state data using the value of the variable field as a key. The range of the variable field at this point is "instanceSumPlugin. *". Therefore, in the plug-in program 131, it is determined that the read process is performed on the key "sampleSumPlugin. *". Further, in the plug-in program 133, the value is written in the state data using the value of the variable namespace as a key. The range of the variable namespace at this point is "explexSumPlugin.output. *". Therefore, in the plug-in program 131, it is determined that the write process is performed on the key "sampleSumPlugin.output. *".
 図11は、プラグインの認証例を示す図である。
 プラグインの解析結果やアクセス制御リスト127では、キーの指定にワイルドカードが使用され得る。このため、認証部125は、キーの範囲の包含関係を判定する。プラグインの解析結果が示すキー範囲の全体が、アクセス制御リスト127が示すキー範囲に包含されている場合、そのプラグインの追加が許可される。一方、プラグインの解析結果が示すキー範囲の少なくとも一部分が、アクセス制御リスト127が示すキー範囲に包含されていない場合、そのプラグインの追加が拒否される。
FIG. 11 is a diagram showing an example of plug-in authentication.
Wildcards can be used to specify keys in plugin analysis results and access control lists 127. Therefore, the authentication unit 125 determines the inclusion relationship of the key range. If the entire key range indicated by the analysis result of the plug-in is included in the key range indicated by the access control list 127, the addition of the plug-in is permitted. On the other hand, if at least a part of the key range indicated by the analysis result of the plug-in is not included in the key range indicated by the access control list 127, the addition of the plug-in is refused.
 プラグインプログラム134,135,136は、プラグインの一例である。プラグインプログラム134は、キーとして具体的な文字列「a」を指定している。よって、プラグインプログラム134によってアクセスされ得るキーは「a」である。プラグインプログラム135は、キーとして具体的な文字列「a」を指定することがあり、その文字列に1以上の「c」を付加したものをキーとして指定することもある。よって、プラグインプログラム135によってアクセスされ得るキーは「a*」である。プラグインプログラム136は、キーとして関数の戻り値を使用している。よって、プラグインプログラム136によってアクセスされ得るキーは「*」であり不明である。 The plug-in programs 134, 135, 136 are examples of plug-ins. The plug-in program 134 specifies a specific character string "a" as a key. Therefore, the key that can be accessed by the plug-in program 134 is "a". The plug-in program 135 may specify a specific character string "a" as a key, and may specify a character string having one or more "c" added as a key. Therefore, the key that can be accessed by the plug-in program 135 is "a *". The plug-in program 136 uses the return value of the function as a key. Therefore, the key that can be accessed by the plug-in program 136 is "*" and is unknown.
 プラグインを作成したユーザが開発者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 be added is "car001", and the access control list 127 has an access permission key "a *" associated with the user ID and object ID. It is assumed that it is registered. Since "a" is included in "a *", the addition of the plug-in program 134 is permitted. Further, since "a *" is included in "a *", the addition of the plug-in program 135 is permitted. On the other hand, since "*" is not included in "a *", the addition of the plug-in program 136 is rejected. In this way, whether or not the plug-in can be added is determined based on the inclusion relationship of the key range.
 図12は、ファイアウォールを通じたプラグインの配置例を示す図である。
 ファイアウォール100は、プラグイン追加の制御メッセージ141,142を受信する。制御メッセージ141は、開発者Bが作成したプラグイン143(プラグインB1)を、デバイスオブジェクト「car001」に追加することを要求する。制御メッセージ142は、開発者Bが作成したプラグイン144(プラグインB2)を、デバイスオブジェクト「car001」に追加することを要求する。
FIG. 12 is a diagram showing an example of arranging a plug-in through a firewall.
The firewall 100 receives control messages 141 and 142 for adding the plug-in. The control message 141 requests that the plug-in 143 (plug-in B1) created by the developer B be added to the device object "car001". The control message 142 requests that the plug-in 144 (plug-in B2) created by the developer B be added to the device object "car001".
 ファイアウォール100は、プラグイン143を解析し、プラグイン143からアクセスされる可能性のあるキーが「緯度」と「経度」であると判定する。また、ファイアウォール100は、プラグイン144を解析し、プラグイン144からアクセスされる可能性のあるキーが「速度」であると判定する。これに対して、ファイアウォール100が有するアクセス制御リスト127には、開発者Bによるデバイスオブジェクト「car001」のキー「緯度」へのアクセスが許可されることが記載されている。また、アクセス制御リスト127には、開発者Bによるデバイスオブジェクト「car001」のキー「経度」へのアクセスが許可されることが記載されている。 The firewall 100 analyzes the plug-in 143 and determines that the keys that may be accessed from the plug-in 143 are "latitude" and "longitude". In addition, the firewall 100 analyzes the plug-in 144 and determines that the key that may be accessed from the plug-in 144 is "speed". On the other hand, the access control list 127 included in the firewall 100 states that the developer B is allowed to access the key "latitude" of the device object "car001". Further, the access control list 127 describes that the developer B is permitted to access the key "longitude" of the device object "car001".
 すると、ファイアウォール100は、プラグイン143をデバイスオブジェクト「car001」に追加することを許可し、メッセージサーバ200を経由してノード300に制御メッセージ141を転送する。ノード300のデバイスオブジェクト320は、制御メッセージ141を受信し、制御メッセージ141に含まれるプラグイン143を登録する。例えば、デバイスオブジェクト320は、ステートテーブル327のキー「緯度」および「経度」に対応付けてプラグイン143を登録する。これにより、「緯度」または「経度」のバリューが更新されたときにプラグイン143が実行される。プラグイン143がステートテーブル327にアクセスする際はアクセス権限の確認は不要である。 Then, the firewall 100 permits the plug-in 143 to be added to the device object "car001", and transfers the control message 141 to the node 300 via the message server 200. The device object 320 of the node 300 receives the control message 141 and registers the plug-in 143 included in the control message 141. For example, the device object 320 registers the plug-in 143 in association with the keys "latitude" and "longitude" of the state table 327. This causes the plugin 143 to be executed when the "latitude" or "longitude" values are updated. When the plug-in 143 accesses the state table 327, it is not necessary to confirm the access authority.
 一方、ファイアウォール100は、プラグイン144をデバイスオブジェクト「car001」に追加することを拒否する。この場合、制御メッセージ142はノード300に転送されず、プラグイン144はデバイスオブジェクト320に登録されない。 On the other hand, the firewall 100 refuses to add the plug-in 144 to the device object "car001". In this case, the control message 142 is not forwarded to the node 300 and the plug-in 144 is not registered with the device object 320.
 次に、第2の実施の形態の情報処理システムの手順例について説明する。
 図13は、プラグイン生成の手順例を示すフローチャートである。
 プラグイン生成は、開発装置70,70a,70bなどの開発装置で実行される。ここでは、代表して開発装置70が実行するものとして説明する。
Next, a procedure example of the information processing system of the second embodiment will be described.
FIG. 13 is a flowchart showing an example of a plug-in generation procedure.
The plug-in generation is executed by a development device such as the development devices 70, 70a, 70b. Here, it will be described as being represented by the development apparatus 70.
 (S10)開発装置70は、ユーザから入力を受け付け、ユーザからの入力に応じてプラグインのソースコードを作成する。ただし、開発装置70は、他の情報処理装置からプラグインのソースコードのファイルを受信してもよい。 (S10) The development device 70 receives input from the user and creates the source code of the plug-in in response to the input from the user. However, the development device 70 may receive the plug-in source code file from another information processing device.
 (S11)開発装置70は、ステップS10で作成されたプラグインのソースコードをコンパイルし、プラグインバイナリを生成する。例えば、開発装置70は、プラグインのソースコードを、中間言語で記述されたバイトコードに変換する。 (S11) The development device 70 compiles the source code of the plug-in created in step S10 and generates a plug-in binary. For example, the development device 70 converts the source code of the plug-in into a bytecode written in an intermediate language.
 (S12)開発装置70は、ステップS11で生成されたプラグインバイナリを含むプラグイン追加の制御メッセージを生成する。制御メッセージのオブジェクトIDは、配置先のデバイスオブジェクトの識別子であり、ユーザから指定される。制御メッセージのユーザIDは、開発装置70を使用するユーザの識別子である。制御メッセージのキーは、プラグインの実行条件とするキーであり、ユーザから指定される。制御メッセージのプラグインIDは、プラグインバイナリから自動的に生成されてもよい。 (S12) The development device 70 generates a plug-in addition control message including the plug-in binary generated in step S11. The object ID of the control message is an identifier of the device object to be placed and is specified by the user. The user ID of the control message is an identifier of the user who uses the development device 70. The key of the control message is the key that is the execution condition of the plug-in, and is specified by the user. The plug-in ID of the control message may be automatically generated from the plug-in binary.
 (S13)開発装置70は、ステップS12で生成された制御メッセージをファイアウォール100に送信する。なお、制御メッセージをメッセージサーバ200に直接送信した場合、メッセージサーバ200でその制御メッセージが拒否され、メッセージサーバ200から開発装置70にエラーが通知されることになる。 (S13) The development device 70 transmits the control message generated in step S12 to the firewall 100. When the control message is directly transmitted to the message server 200, the control message is rejected by the message server 200, and the message server 200 notifies the development device 70 of the error.
 図14は、プラグイン認証の手順例を示すフローチャートである。
 プラグイン認証は、ファイアウォール100で実行される。
 (S20)メッセージ通信部123は、プラグイン追加の制御メッセージを受信する。
FIG. 14 is a flowchart showing an example of a plug-in authentication procedure.
The plug-in authentication is executed by the firewall 100.
(S20) The message communication unit 123 receives the control message for adding the plug-in.
 (S21)プラグイン解析部124は、制御メッセージからプラグインバイナリを抽出する。プラグイン解析部124は、抽象解析などの静的プログラム解析方法を用いてプラグインバイナリを解析し、プラグインの意味解析を行う。例えば、プラグイン解析部124は、プラグインバイナリから、ステートデータからバリューを読み出すリード関数およびステートデータにバリューを書き込むライト関数を検出する。プラグイン解析部124は、リード関数およびライト関数それぞれの引数の取り得る値(値域)を判定する。 (S21) The plug-in analysis unit 124 extracts the plug-in binary from the control message. The plug-in analysis unit 124 analyzes the plug-in binary by using a static program analysis method such as abstract analysis, and analyzes the meaning of the plug-in. For example, the plug-in analysis unit 124 detects a read function that reads the value from the state data and a write function that writes the value to the state data from the plug-in binary. The plug-in analysis unit 124 determines possible values (ranges) of the arguments of the read function and the write function.
 (S22)プラグイン解析部124は、ステップS21の解析結果に基づいて、プラグインにおいてリード対象またはライト対象となる可能性があるキーを抽出する。
 (S23)認証部125は、ステップS22で抽出されたキーを1つ選択する。
(S22) The plug-in analysis unit 124 extracts a key that may be a read target or a write target in the plug-in based on the analysis result in step S21.
(S23) The authentication unit 125 selects one key extracted in step S22.
 (S24)認証部125は、制御メッセージからユーザIDおよびオブジェクトIDを抽出する。認証部125は、抽出したユーザIDおよびオブジェクトIDと、ステップS23で選択したキーとを用いて、アクセス制御リスト127を検索する。このとき、認証部125は、条件を満たすレコードをアクセス制御リスト127から検索することになる。条件を満たすレコードは、指定のユーザIDおよびオブジェクトIDを含み、かつ、指定のキーを包含するアクセス許可キーを含むレコードである。 (S24) The authentication unit 125 extracts the user ID and the object ID from the control message. The authentication unit 125 searches the access control list 127 by using the extracted user ID and object ID and the key selected in step S23. At this time, the authentication unit 125 searches the access control list 127 for records that satisfy the conditions. The record that satisfies the condition is a record that includes a specified user ID and object ID, and also includes a permission key that includes the specified key.
 (S25)認証部125は、指定のユーザIDおよびオブジェクトIDのもとで、ステップS23で選択したキーのアクセスが許可されているか判断する。ステップS24で該当するレコードがアクセス制御リスト127から検索された場合、アクセスが許可されていると判断される。該当するレコードがアクセス制御リスト127から検索されなかった場合、アクセスが許可されていないと判断される。選択したキーのアクセスが許可されている場合はステップS26に進み、許可されていない場合はステップS30に進む。 (S25) The authentication unit 125 determines whether the access of the key selected in step S23 is permitted under the designated user ID and object ID. When the corresponding record is searched from the access control list 127 in step S24, it is determined that access is permitted. If the corresponding record is not searched from the access control list 127, it is determined that access is not permitted. If the access of the selected key is permitted, the process proceeds to step S26, and if not, the process proceeds to step S30.
 (S26)認証部125は、ステップS23において、ステップS22で抽出されたキーを全て選択したか判断する。全てのキーを選択した場合はステップS27に進み、未選択のキーがある場合はステップS23に戻る。 (S26) The authentication unit 125 determines in step S23 whether all the keys extracted in step S22 have been selected. If all the keys are selected, the process proceeds to step S27, and if there are unselected keys, the process returns to step S23.
 (S27)認証部125は、ステップS21の解析結果を参照して、プラグインが所定の禁止API(Application Programming Interface)を使用しているか判断する。禁止APIは、セキュリティの観点からプラグインが使用することは好ましくないライブラリ関数であり、予め管理者によって定義される。例えば、禁止APIには、ローカルファイルシステムにアクセスする関数が含まれる。禁止APIを使用している場合はステップS30に進み、禁止APIを使用していない場合はステップS28に進む。 (S27) The authentication unit 125 determines whether or not the plug-in uses a predetermined prohibited API (Application Programming Interface) by referring to the analysis result in step S21. The prohibited API is a library function that is not preferable for the plug-in to use from the viewpoint of security, and is defined in advance by the administrator. For example, the prohibited API contains a function that accesses the local file system. If the prohibited API is used, the process proceeds to step S30, and if the prohibited API is not used, the process proceeds to step S28.
 (S28)プラグイン解析部124は、ステップS21の解析結果を、解析結果データベース122に含まれる解析結果テーブル128に登録する。
 (S29)メッセージ通信部123は、ステップS20で受信した制御メッセージをメッセージサーバ200に転送する。そして、プラグイン認証が終了する。
(S28) The plug-in analysis unit 124 registers the analysis result of step S21 in the analysis result table 128 included in the analysis result database 122.
(S29) The message communication unit 123 transfers the control message received in step S20 to the message server 200. Then, the plug-in authentication is completed.
 (S30)メッセージ通信部123は、受信した制御メッセージを破棄し、制御メッセージを送信した開発装置に対してプラグイン追加拒否を通知する。
 図15は、プラグイン追加の手順例を示すフローチャートである。
(S30) The message communication unit 123 discards the received control message and notifies the development device that has transmitted the control message of the refusal to add the plug-in.
FIG. 15 is a flowchart showing an example of a procedure for adding a plug-in.
 プラグイン追加は、メッセージサーバ200とノード300,300a,300bとが連携して実行される。ここでは、代表してノード300が実行するものとし、プラグイン追加先がデバイスオブジェクト320であるとして説明する。 The plug-in addition is executed in cooperation with the message server 200 and the nodes 300, 300a, 300b. Here, it is assumed that the node 300 is executed as a representative, and the plug-in addition destination is the device object 320.
 (S40)メッセージサーバ200は、プラグイン追加の制御メッセージを受信する。なお、メッセージサーバ200は、ファイアウォール100からは制御メッセージを受け付ける一方、他の情報処理装置からは制御メッセージを受け付けない。 (S40) The message server 200 receives a control message for adding a plug-in. The message server 200 accepts control messages from the firewall 100, but does not accept control messages from other information processing devices.
 (S41)メッセージサーバ200は、ノード300のメッセージ転送部310に制御メッセージを転送する。メッセージサーバ200は、ラウンドロビン方式で転送先を選択してもよい。メッセージ転送部310は、制御メッセージに含まれるオブジェクトIDを参照して、制御メッセージをデバイスオブジェクト320に転送する。 (S41) The message server 200 transfers the control message to the message forwarding unit 310 of the node 300. The message server 200 may select a transfer destination by a round robin method. The message forwarding unit 310 transfers the control message to the device object 320 with reference to the object ID included in the control message.
 (S42)デバイスオブジェクト320のプラグイン管理部325は、制御メッセージからプラグインバイナリを抽出する。プラグイン管理部325は、プラグインバイナリの変換処理を行う。例えば、プラグイン管理部325は、クラスローダを用いてプラグインのバイトコードを実行可能クラスに変換する。 (S42) The plug-in management unit 325 of the device object 320 extracts the plug-in binary from the control message. The plug-in management unit 325 performs a plug-in binary conversion process. For example, the plug-in management unit 325 uses a class loader to convert the bytecode of the plug-in into an executable class.
 (S43)プラグイン管理部325は、制御メッセージで指定されたキーに対応するバリューが更新されたときにプラグインが呼び出されるようにプラグインを登録する。プラグイン管理部325は、プラグインテーブル328にプラグインを登録する。 (S43) The plug-in management unit 325 registers the plug-in so that the plug-in is called when the value corresponding to the key specified in the control message is updated. The plug-in management unit 325 registers the plug-in in the plug-in table 328.
 図16は、ACL更新の手順例を示すフローチャートである。
 ACL更新は、ファイアウォール100で実行される。
 (S50)ACL更新部126は、新アクセス制御リスト(新ACL)を受信する。新アクセス制御リストは、例えば、管理者が使用する開発装置70から送信される。
FIG. 16 is a flowchart showing an example of an ACL update procedure.
The ACL update is performed on the firewall 100.
(S50) The ACL update unit 126 receives the new access control list (new ACL). The new access control list is transmitted, for example, from the development device 70 used by the administrator.
 (S51)ACL更新部126は、認証部125において行われるプラグイン認証を一時的に停止する。その間に到着した制御メッセージは保留されることになる。
 (S52)ACL更新部126は、解析結果データベース122に含まれる解析結果テーブル128から、既存プラグインのレコードを1つ選択する。
(S51) The ACL update unit 126 temporarily stops the plug-in authentication performed by the authentication unit 125. Control messages arriving in the meantime will be put on hold.
(S52) The ACL update unit 126 selects one record of the existing plug-in from the analysis result table 128 included in the analysis result database 122.
 (S53)ACL更新部126は、ステップS52で選択したレコードに含まれる解析結果から、リード対象またはライト対象となる可能性があるキーを1つ選択する。
 (S54)ACL更新部126は、ステップS52で選択した既存プラグインのレコードからユーザIDおよびオブジェクトIDを抽出する。ACL更新部126は、抽出したユーザIDおよびオブジェクトIDと、ステップS53で選択したキーとを用いて、ステップS50で受信した新アクセス制御リストを検索する。このとき、ACL更新部126は、条件を満たすレコードを新アクセス制御リストから検索することになる。条件を満たすレコードは、指定のユーザIDおよびオブジェクトIDを含み、かつ、指定のキーを包含するアクセス許可キーを含むレコードである。
(S53) The ACL update unit 126 selects one key that may be a read target or a write target from the analysis result included in the record selected in step S52.
(S54) The ACL update unit 126 extracts the user ID and the object ID from the records of the existing plug-in selected in step S52. The ACL update unit 126 searches the new access control list received in step S50 by using the extracted user ID and object ID and the key selected in step S53. At this time, the ACL update unit 126 searches the new access control list for records that satisfy the conditions. The record that satisfies the condition is a record that includes a specified user ID and object ID, and also includes a permission key that includes the specified key.
 (S55)ACL更新部126は、指定のユーザIDおよびオブジェクトIDのもとで、ステップS53で選択したキーのアクセスが許可されているか判断する。ステップS54で該当するレコードが新アクセス制御リストから検索された場合、アクセスが許可されていると判断される。該当するレコードが新アクセス制御リストから検索されなかった場合、アクセスが許可されていないと判断される。選択したキーのアクセスが許可されている場合はステップS56に進み、許可されていない場合はステップS57に進む。 (S55) The ACL update unit 126 determines whether the access of the key selected in step S53 is permitted under the designated user ID and object ID. When the corresponding record is searched from the new access control list in step S54, it is determined that access is permitted. If the corresponding record is not searched from the new access control list, it is determined that access is not permitted. If the access of the selected key is permitted, the process proceeds to step S56, and if not, the process proceeds to step S57.
 (S56)ACL更新部126は、ステップS53において、解析結果に含まれるキーを全て選択したか判断する。全てのキーを選択した場合はステップS58に進み、未選択のキーがある場合はステップS53に戻る。 (S56) The ACL update unit 126 determines in step S53 whether all the keys included in the analysis result have been selected. If all the keys are selected, the process proceeds to step S58, and if there are unselected keys, the process returns to step S53.
 (S57)ACL更新部126は、新アクセス制御リストを送信した開発装置に対して、ステップS52で選択した既存プラグインを不適合プラグインとして通知する。例えば、ACL更新部126は、プラグインIDを開発装置70に送信する。 (S57) The ACL update unit 126 notifies the development device that has transmitted the new access control list of the existing plug-in selected in step S52 as a nonconforming plug-in. For example, the ACL update unit 126 transmits the plug-in ID to the development device 70.
 (S58)ACL更新部126は、ステップS52において、解析結果テーブル128から全ての既存プラグインのレコードを選択したか判断する。全て選択した場合はステップS59に進み、未選択のものがある場合はステップS52に戻る。 (S58) The ACL update unit 126 determines in step S52 whether all the existing plug-in records have been selected from the analysis result table 128. If all are selected, the process proceeds to step S59, and if there are unselected items, the process returns to step S52.
 (S59)ACL更新部126は、ACL記憶部121に記憶された旧アクセス制御リストを、ステップS50で受信した新アクセス制御リストに置換する。
 (S60)ACL更新部126は、ステップS51のプラグイン認証の停止を解除する。これにより、保留されていた制御メッセージの処理が再開される。
(S59) The ACL update unit 126 replaces the old access control list stored in the ACL storage unit 121 with the new access control list received in step S50.
(S60) The ACL update unit 126 releases the suspension of the plug-in authentication in step S51. As a result, the processing of the held control message is resumed.
 第2の実施の形態の情報処理システムによれば、デバイスからイベントメッセージが収集され、デバイスに対応するデバイスオブジェクトにおいて、デバイスの状態を示すステートデータが保持される。デバイスオブジェクトに配置されたプラグインがステートデータの更新に応じて起動され、イベント駆動型のデータ処理が行われる。これにより、リアルタイム動的イベント処理を効率的に実行することができる。また、デバイスオブジェクトを停止させずに、デバイスオブジェクトにプラグインを追加することができる。これにより、ステートデータを利用するサービスの追加や更新を動的に行うことができ、リアルタイム動的イベント処理の停止を抑制することができる。 According to the information processing system of the second embodiment, event messages are collected from the device, and state data indicating the state of the device is held in the device object corresponding to the device. The plug-in placed in the device object is started in response to the update of the state data, and event-driven data processing is performed. As a result, real-time dynamic event processing can be executed efficiently. You can also add plugins to the device object without stopping it. As a result, services that use state data can be dynamically added or updated, and the stoppage of real-time dynamic event processing can be suppressed.
 また、同一のデバイスオブジェクトに異なる開発者のプラグインを配置することができる。よって、リアルタイム動的イベント処理システム上に様々なアプリケーションソフトウェアを実装することが可能となる。また、ステートデータに含まれるキー単位で、プラグインからアクセス可能なデータを制限するアクセス制御を行うことができる。よって、デバイスから収集されるステートデータを保護することができる。 Also, plugins of different developers can be placed on the same device object. Therefore, it is possible to implement various application software on the real-time dynamic event processing system. In addition, access control that limits the data that can be accessed from the plug-in can be performed for each key included in the state data. Therefore, the state data collected from the device can be protected.
 また、アクセス権限の確認は、プラグインをデバイスオブジェクトに追加する前にプラグインを解析することで行われ、プラグインが配置された後は省略される。よって、プラグインがステートデータにアクセスする毎にアクセス権限を確認しなくてよく、アクセス制御のオーバヘッドが削減され、リアルタイム動的イベント処理のスループットを向上させることができる。例えば、アクセス制御リストを保持する集中管理サーバに、ステートデータへのアクセス毎に問い合わせる方法と比べて、通信オーバヘッドを削減できる。また、例えば、アクセス制御リストを複数のノードに配布する方法と比べて、アクセス制御リストの更新時にアクセス制御リストの一貫性を維持することが容易となる。 Also, confirmation of access authority is performed by analyzing the plugin before adding the plugin to the device object, and it is omitted after the plugin is placed. Therefore, it is not necessary to check the access authority every time the plug-in accesses the state data, the access control overhead can be reduced, and the throughput of real-time dynamic event processing can be improved. For example, the communication overhead can be reduced as compared with the method of inquiring the centralized management server that holds the access control list for each access to the state data. Further, for example, as compared with the method of distributing the access control list to a plurality of nodes, it becomes easy to maintain the consistency of the access control list when updating the access control list.
 また、プラグインの解析では、抽象解釈などの意味解析が行われる。よって、プラグインが許可されていないキーにアクセスすることを見逃すリスクを低減できる。例えば、プラグインとして、キーを示す変数に初期値を書き込んだ後、その変数の値を事後的に書き換えてアクセス先のキーを変更してしまうプログラムも作成することが可能である。そのようなプラグインに対しても、ソースコードの記述を追跡する単純な静的プログラム解析方法と比べて、許可されていないキーにアクセスするリスクを評価することができる。 Also, in the plug-in analysis, semantic analysis such as abstract interpretation is performed. Therefore, it is possible to reduce the risk of missing access to a key that the plugin is not allowed to access. For example, as a plug-in, it is possible to create a program that changes the access destination key by writing the initial value to the variable indicating the key and then rewriting the value of the variable after the fact. Even for such plugins, the risk of accessing unauthorized keys can be assessed compared to a simple static program analysis method that tracks the source code description.
 また、プラグイン追加時の解析結果が履歴データベースに保存され、アクセス制御リストの更新時には、既存プラグインが新アクセス制御リストに適合しているか自動的に検査される。そして、不適合の既存プラグインが存在する場合には、新アクセス制御リストを作成した管理者に警告が通知される。よって、ステートデータへのアクセス毎にアクセス権限を確認しなくても、事後的にアクセス制御リストに適合しなくなったプラグインを検出でき、ステートデータのセキュリティを維持することができる。 In addition, the analysis result when the plug-in is added is saved in the history database, and when the access control list is updated, it is automatically checked whether the existing plug-in conforms to the new access control list. Then, if there is a nonconforming existing plug-in, a warning is notified to the administrator who created the new access control list. Therefore, even if the access authority is not confirmed for each access to the state data, the plug-in that does not conform to the access control list after the fact can be detected, and the security of the state data can be maintained.
 上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。 The above simply shows the principle of the present invention. In addition, numerous modifications and modifications are possible to those skilled in the art, and the present invention is not limited to the exact configurations and applications described and described above, and all corresponding modifications and equivalents are attached. It is considered to be the scope of the present invention according to the claims and their equivalents.
 10 データ処理装置
 11,21 記憶部
 12,22 処理部
 13 データ
 20 アクセス制御装置
 23 対象プログラム
 24 アクセス制御情報
10 Data processing device 11,21 Storage unit 12, 22 Processing unit 13 Data 20 Access control device 23 Target program 24 Access control information

Claims (8)

  1.  複数のデータ項目を含むデータを記憶し、登録されたプログラムが存在する場合、前記データの更新に応じて前記登録されたプログラムを実行するデータ処理装置と、
     ユーザの対象プログラムを含む登録要求を受け付け、前記対象プログラムを分析して前記複数のデータ項目のうち前記対象プログラムからアクセスされ得るデータ項目を検出し、前記ユーザがアクセス権限を有するデータ項目または前記ユーザがアクセス権限を有しないデータ項目を示すアクセス制御情報に基づいて、前記検出したデータ項目に対するアクセス権限を前記ユーザが有するか判定し、アクセス権限を有すると判定した場合、前記対象プログラムを前記データ処理装置に登録することを許可するアクセス制御装置と、
     を有する情報処理システム。
    A data processing device that stores data including a plurality of data items and executes the registered program in response to an update of the data when a registered program exists.
    It accepts a registration request including a user's target program, analyzes the target program to detect a data item that can be accessed from the target program among the plurality of data items, and the data item to which the user has access authority or the user. Based on the access control information indicating the data item for which the user does not have the access authority, it is determined whether or not the user has the access authority for the detected data item, and when it is determined that the user has the access authority, the target program is subjected to the data processing. An access control device that allows you to register with the device,
    Information processing system with.
  2.  前記アクセス制御装置は、前記対象プログラムの登録を許可した後、前記アクセス制御情報の更新要求を受け付け、更新後の前記アクセス制御情報に基づいて、前記検出したデータ項目に対するアクセス権限を前記ユーザが有するか再判定し、アクセス権限を有しなくなったと判定した場合に警告メッセージを出力する、
     請求項1記載の情報処理システム。
    After permitting the registration of the target program, the access control device receives an update request for the access control information, and the user has access authority to the detected data item based on the updated access control information. Re-judgment and output a warning message when it is determined that you no longer have access authority.
    The information processing system according to claim 1.
  3.  前記アクセス制御装置は、前記検出したデータ項目を示す分析履歴を保存し、前記分析履歴を用いて、更新後の前記アクセス制御情報に基づく再判定を行う、
     請求項2記載の情報処理システム。
    The access control device stores an analysis history indicating the detected data item, and uses the analysis history to perform re-determination based on the updated access control information.
    The information processing system according to claim 2.
  4.  前記アクセス制御装置は、前記登録要求を受信し、前記対象プログラムの登録を許可する場合は前記登録要求を前記データ処理装置に転送し、前記対象プログラムの登録を拒否する場合は前記登録要求の転送を抑止する、
     請求項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 information processing system according to claim 1.
  5.  前記データ処理装置は、複数の端末装置に対応する複数のオブジェクトを生成し、前記複数のオブジェクトそれぞれに前記データおよび前記登録されたプログラムを保持させ、
     前記登録要求は、登録先オブジェクトの指定を含み、前記アクセス制御情報は、オブジェクトとデータ項目の組に対してアクセス権限の有無を示し、
     前記アクセス制御装置は、前記アクセス制御情報に基づいて、前記登録先オブジェクトの前記検出したデータ項目に対するアクセス権限を前記ユーザが有するか判定する、
     請求項1記載の情報処理システム。
    The data processing device generates a plurality of objects corresponding to the plurality of terminal devices, and causes the plurality of objects to hold the data and the registered program.
    The registration request includes designation of a registration destination object, and the access control information indicates the presence or absence of access authority for a set of an object and a data item.
    Based on the access control information, the access control device determines whether or not the user has access authority to the detected data item of the registration destination object.
    The information processing system according to claim 1.
  6.  複数のデータ項目のうちユーザがアクセス権限を有するデータ項目または前記ユーザがアクセス権限を有しないデータ項目を示すアクセス制御情報を記憶する記憶部と、
     前記ユーザの対象プログラムを含む登録要求を受け付け、前記対象プログラムを分析して前記複数のデータ項目のうち前記対象プログラムからアクセスされ得るデータ項目を検出し、前記アクセス制御情報に基づいて、前記検出したデータ項目に対するアクセス権限を前記ユーザが有するか判定し、アクセス権限を有すると判定した場合、前記対象プログラムを、前記複数のデータ項目を含むデータの更新に応じて前記対象プログラムが実行されるように情報処理システムに登録することを許可する処理部と、
     を有するアクセス制御装置。
    A storage unit that stores access control information indicating a data item for which the user has access authority or a data item for which the user does not have access authority among a plurality of data items.
    The registration request including the target program of the user is received, the target program is analyzed to detect a data item that can be accessed from the target program among the plurality of data items, and the detection is performed based on the access control information. It is determined whether or not the user has access authority to the data item, and if it is determined that the user has access authority, the target program is executed so that the target program is executed in response to the update of the data including the plurality of data items. A processing unit that allows registration in the information processing system,
    Access control device with.
  7.  コンピュータが、
     ユーザの対象プログラムを含む登録要求を受け付け、前記対象プログラムを分析して複数のデータ項目のうち前記対象プログラムからアクセスされ得るデータ項目を検出し、
     前記複数のデータ項目のうち前記ユーザがアクセス権限を有するデータ項目または前記ユーザがアクセス権限を有しないデータ項目を示すアクセス制御情報に基づいて、前記検出したデータ項目に対するアクセス権限を前記ユーザが有するか判定し、
     アクセス権限を有すると判定した場合、前記対象プログラムを、前記複数のデータ項目を含むデータの更新に応じて前記対象プログラムが実行されるように情報処理システムに登録することを許可する、
     アクセス制御方法。
    The computer
    It accepts a registration request including the user's target program, analyzes the target program, and detects a data item that can be accessed from the target program among a plurality of data items.
    Whether the user has the access authority to the detected data item based on the access control information indicating the data item to which the user has the access authority or the data item to which the user does not have the access authority among the plurality of data items. Judge,
    When it is determined that the target program has access authority, the target program is permitted to be registered in the information processing system so that the target program is executed in response to the update of the data including the plurality of data items.
    Access control method.
  8.  コンピュータに、
     ユーザの対象プログラムを含む登録要求を受け付け、前記対象プログラムを分析して複数のデータ項目のうち前記対象プログラムからアクセスされ得るデータ項目を検出し、
     前記複数のデータ項目のうち前記ユーザがアクセス権限を有するデータ項目または前記ユーザがアクセス権限を有しないデータ項目を示すアクセス制御情報に基づいて、前記検出したデータ項目に対するアクセス権限を前記ユーザが有するか判定し、
     アクセス権限を有すると判定した場合、前記対象プログラムを、前記複数のデータ項目を含むデータの更新に応じて前記対象プログラムが実行されるように情報処理システムに登録することを許可する、
     処理を実行させるアクセス制御プログラム。
    On the computer
    It accepts a registration request including the user's target program, analyzes the target program, and detects a data item that can be accessed from the target program among a plurality of data items.
    Whether the user has the access authority to the detected data item based on the access control information indicating the data item to which the user has the access authority or the data item to which the user does not have the access authority among the plurality of data items. Judge,
    When it is determined that the target program has access authority, the target program is permitted to be registered in the information processing system so that the target program is executed in response to the update of the data including the plurality of data items.
    An access control program that executes processing.
PCT/JP2019/029175 2019-07-25 2019-07-25 Information processing system, access control device, access control method, and access control program WO2021014633A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021534503A JP7181491B2 (en) 2019-07-25 2019-07-25 Information processing system, access control device, access control method and access control program
PCT/JP2019/029175 WO2021014633A1 (en) 2019-07-25 2019-07-25 Information processing system, access control device, access control method, and access control program

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 (1)

Publication Number Publication Date
WO2021014633A1 true WO2021014633A1 (en) 2021-01-28

Family

ID=74192556

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/029175 WO2021014633A1 (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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06149890A (en) * 1992-11-16 1994-05-31 Ricoh Co Ltd Document information managing device
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

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160098912A (en) * 2015-02-11 2016-08-19 한국전자통신연구원 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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06149890A (en) * 1992-11-16 1994-05-31 Ricoh Co Ltd Document information managing device
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

Also Published As

Publication number Publication date
JPWO2021014633A1 (en) 2021-01-28
JP7181491B2 (en) 2022-12-01

Similar Documents

Publication Publication Date Title
US11985170B2 (en) Endpoint data loss prevention (DLP)
US10614233B2 (en) Managing access to documents with a file monitor
CN1773417B (en) System and method of aggregating the knowledge base of antivirus software applications
US10976951B2 (en) Technology for governance of data retention and transfer
JP2021525418A (en) Small footprint endpoint data loss prevention (DLP)
US20070220061A1 (en) Method and system for tracking an operation performed on an information asset with metadata associated therewith
US20010051515A1 (en) Mobile application peer-to-peer security system and method
US11138311B2 (en) Distributed security introspection
CN101894225A (en) The system and method for assembling the knowledge base of antivirus software applications
WO2011046356A2 (en) Method for providing an anti-malware service
US9977814B2 (en) Custom metadata in loosely coupled triggers
US8353014B2 (en) Dynamic dual permissions-based data capturing and logging
US11416631B2 (en) Dynamic monitoring of movement of data
WO2021014633A1 (en) Information processing system, access control device, access control method, and access control program
JP2005190221A (en) Cache control unit, its method, and computer program
WO2021059564A1 (en) Computer system, data control method, and storage medium
KR20190061831A (en) System and method of detecting confidential information based on 2-tier for endpoint DLP
US20220366039A1 (en) Abnormally permissive role definition detection systems
US20230275931A1 (en) Dynamic management of role-based access control systems
US11861039B1 (en) Hierarchical system and method for identifying sensitive content in data
JP2023127486A (en) Access control method, access control program and information processing device
US20200143086A1 (en) Communication method, non-transitory computer-readable storage medium for storing communication program, and communication apparatus
EP1303939A1 (en) Mobile application peer-to-peer security system and method
CN113268774A (en) File resource management method, device, equipment and storage medium
CN116680085A (en) Resource domain management method, device, equipment, medium and program product

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19938878

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021534503

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19938878

Country of ref document: EP

Kind code of ref document: A1