WO2018078902A1 - プログラム動作監視制御装置、分散オブジェクト生成管理装置、記録媒体、及びプログラム動作監視システム - Google Patents

プログラム動作監視制御装置、分散オブジェクト生成管理装置、記録媒体、及びプログラム動作監視システム Download PDF

Info

Publication number
WO2018078902A1
WO2018078902A1 PCT/JP2017/007900 JP2017007900W WO2018078902A1 WO 2018078902 A1 WO2018078902 A1 WO 2018078902A1 JP 2017007900 W JP2017007900 W JP 2017007900W WO 2018078902 A1 WO2018078902 A1 WO 2018078902A1
Authority
WO
WIPO (PCT)
Prior art keywords
distributed object
object server
monitoring target
identification information
notification
Prior art date
Application number
PCT/JP2017/007900
Other languages
English (en)
French (fr)
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 CN201780067370.9A priority Critical patent/CN109923547B/zh
Priority to US15/524,604 priority patent/US10831885B2/en
Priority to DK17718713.5T priority patent/DK3340099T3/da
Priority to EP17718713.5A priority patent/EP3340099B1/en
Publication of WO2018078902A1 publication Critical patent/WO2018078902A1/ja

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Definitions

  • the present invention relates to a program operation monitoring control device, a distributed object generation management device, a recording medium, and a program operation monitoring system.
  • a process that is a program execution entity is divided and divided into parts according to functions.
  • a method of dividing / partifying a process there is a method in which a process generates and activates another process to perform a collective process.
  • a distributed object technique as a second technique for allowing a process to execute a process in another process.
  • a distributed object server which is a process for performing general-purpose processing according to a common calling convention, is generated and started as the separate process.
  • the first process wants to execute a general-purpose grouped process in a separate process
  • a request to use a distributed object server that can execute the grouped process is sent to the distributed object generation management unit provided by the OS. Notice.
  • the distributed object generation management unit If the specified distributed object server is not operating at the specified time, the distributed object generation management unit generates and starts the distributed object server, and sends a response including an access method to the distributed object server. Return to the first process of the usage request source.
  • the second process also notifies the distributed object generation management unit of a use request for the distributed object server when it is desired to execute the above-described general-purpose collective process in another process.
  • the distributed object generation management unit simply returns a response including an access method to the distributed object server to the second process of the use request source.
  • the parent process and the child process are executed in a closed space in one computer.
  • the second method includes a case where the processing of the second process of the use request source and the processing of the distributed object server are executed by different computers.
  • the communication method between the use request source process and the distributed object generation management unit and the communication method between the use request source process and the distributed object server are basically the network communication technology described above. It is limited to the interprocess communication method based on.
  • the software system is divided into independent programs that provide general-purpose processing, and the independent programs are generated and started as distributed object servers.
  • the reusability of the program can be greatly increased, and a significant improvement in development efficiency can be expected such that even if a part of the program is modified, it is not necessary to rebuild the entire software system.
  • the distributed object server is generated and started by the distributed object generation management unit.
  • the distributed object server is generated and started with a use request from a use request source process as a trigger.
  • the relationship between the use request source process and the distributed object server is that, if the latter is already running, the former will reuse the running latter in principle, so It is not equivalent to a direct parent-child relationship.
  • a security mechanism called a sandbox that prevents an untrusted program from operating the system illegally by executing an untrusted program in a predetermined protection area in the system.
  • the program executed in the sandbox is generated and started in a monitored state so that the process that is the execution subject cannot operate other processes or data. For this reason, even if the process runs away or a virus is activated, the outside of the sandbox is not affected.
  • processes that are created and started in the sandbox are referred to as “monitored processes”.
  • Patent Document 1 discloses a technique related to a monitored process that is an execution subject of a program that is executed in a virtual space as a sandbox in which a file system, a registry, and the like are virtualized and its child processes.
  • it is determined whether a child process generated and started (monitored) by a monitoring target process uses the same virtual space as the parent process, or a new virtual space is generated for the child process. Is done. That is, in the technique of Patent Document 1, when a parent process is a monitoring target, a child process can also be a monitoring target.
  • the monitored process creates and starts a child process directly in the sandbox
  • the parent-child relationship of the process is clear. Therefore, the child process can be easily monitored.
  • the present invention has been proposed to solve the problems of the prior art.
  • the program operation monitoring control apparatus registers the identification information of the monitoring target process that is the process that is the execution subject of the program and is to be monitored in the monitoring target process list.
  • the monitoring target process list is queried for identification information of the arbitrary process, and information on whether or not the arbitrary process is a monitoring target is obtained.
  • the monitoring target process management unit that returns the inquiry to the inquiry destination and the distributed object generation management device that generates the distributed object server and holds the identification information of the distributed object server receives a request for using the distributed object server from the monitoring target process
  • a notification receiving unit that receives a predetermined notification from the distributed object generation management device; It is provided.
  • the distributed object generation management device includes a usage request receiving unit that receives a usage request of a distributed object server from a process that is an execution subject of a program, and the usage received by the usage request receiving unit.
  • a usage request receiving unit that receives a usage request of a distributed object server from a process that is an execution subject of a program, and the usage received by the usage request receiving unit.
  • the distributed object server generating unit that generates the distributed object server that has made the use request
  • the use request receiving unit that has received the request
  • a notification transmission unit configured to transmit a predetermined notification to the program operation monitoring control apparatus when the identification information of the request source process of the use request is registered in the monitoring target process list.
  • a program operation monitoring system includes the program operation monitoring control device and the distributed object generation management device.
  • the present invention it is possible to monitor not only the program operation of the monitoring target process but also the program operation of the distributed object server generated and started based on the usage request of the monitoring target process. .
  • FIG. 1 is a block diagram showing a configuration of a program operation monitoring system according to the first embodiment of the present invention.
  • FIG. 2 is a flowchart showing an operation procedure from the start to the end of the program operation monitoring system.
  • FIG. 3 is a flowchart showing an operation procedure from the start to the end of the program operation monitoring system.
  • FIG. 4 is a flowchart showing a printing operation monitoring routine.
  • FIG. 5 is a flowchart showing a clipboard operation monitoring routine.
  • FIG. 6 is a flowchart showing a registry protection routine (pid management).
  • FIG. 7 is a flowchart showing a registry protection routine (registry protection).
  • FIG. 8 is a flowchart showing a file protection routine (corresponding to a file open operation).
  • FIG. 9 is a flowchart showing a file protection routine (corresponding to file name list display).
  • FIG. 10 is a flowchart showing a process operation monitoring routine.
  • FIG. 11 is a principal block diagram of the program operation monitoring system.
  • FIG. 12 is a flowchart showing a distributed object server generation management routine.
  • FIG. 13 is a flowchart showing a distributed object server generation management routine.
  • FIG. 14 is a flowchart showing a second distributed object server generation management routine.
  • FIG. 15 is a flowchart showing a third distributed object server generation management routine.
  • FIG. 1 is a block diagram showing a configuration of a program operation monitoring system 1 according to the first embodiment of the present invention.
  • the program operation monitoring system 1 is a system area that is a memory space in which processes necessary for operating a system such as an OS (Operating System) operate, and a memory space in which processes that can be shared and used by all users are shared. It is composed of functional blocks provided in each of the user area and the individual user area (user 1 area, user 2 area,%) That is a memory space in which a process available to each user operates. .
  • OS Operating System
  • the program operation monitoring system 1 is a process (monitored user) that is generated and started as an execution subject of a program that the user designates execution in a sandbox among one or more processes in an individual user area. Monitor the various operations of the process 32) and its descendant processes. Further, the program operation monitoring system 1 includes a distributed object server (monitored target distributed object server 21) generated based on a usage request for the monitored target user process 32 among one or more distributed object servers in the common user area. Monitor various operations.
  • a process including the monitoring target user process 32 and the monitoring target distributed object server 21 is referred to as a “monitoring target process”.
  • the program operation monitoring system 1 includes a registry redirector 11, a file system redirector 12, and a distributed object generation management unit 13 as functional blocks that operate in the system area.
  • the program operation monitoring system 1 includes an overall control unit 20 as a function block that operates in a common user area.
  • the overall control unit 20 includes a monitoring target distributed object server generation unit 20G therein.
  • the program operation monitoring system 1 includes a monitoring target user process generation unit 31 and a printing operation monitoring unit 32P and a clipboard operation monitoring unit 32C generated inside the monitoring target user process 32 as functional blocks that operate in the individual user area. It has.
  • the overall control unit 20 controls the entire program operation monitoring service that monitors the operation of the monitored process. Further, the overall control unit 20 can generate and start a distributed object server (monitoring target distributed object server 21) to be monitored by a monitoring target distributed object server generation unit 20G held therein.
  • a distributed object server monitoring target distributed object server 21
  • the registry redirector 11 is in the system area, and monitors, controls, and protects the registry access operation by the monitored process.
  • the registry refers to a database of setting information used in the OS in which basic information related to the OS, settings of various programs, extended information, and the like are registered.
  • the file system redirector 12 is in the system area and executes monitoring, control, and protection of file access operations by the monitoring target process.
  • the monitoring target user process generation unit 31 is in the individual user area, and generates and starts the monitoring target user process 32 in the individual user area assigned to the user.
  • the printing operation monitoring unit 32P is in an arbitrary process generated and started in the individual user area, and executes monitoring and control of a printing operation using the process by the user.
  • the clipboard operation monitoring unit 32C monitors, controls, and protects a clipboard operation performed by a user in an arbitrary process generated and started in the individual user area and involving the process.
  • the clipboard refers to a function that temporarily stores data that has been “copied” or “cut” by a user in order to realize data exchange between different programs.
  • the distributed object generation management unit 13 is provided as one of the standard function blocks of the OS. However, in this embodiment, an additional function for causing the overall control unit 20 to monitor the monitoring target distributed object server 21 is further provided. have. As a standard function of the OS, the distributed object generation management unit 13 generates a distributed object server in the common user area when receiving a distributed object server generation request from a process in the individual user area, and sets the pid of the distributed object server. get.
  • the distributed object generation management unit 13 When the distributed object generation management unit 13 receives a distributed object server generation request from the monitoring target user process 32 in the individual user area as an additional function described above, the distributed object generation management unit 13 transmits the distributed object to the general control unit 20 in the common user area. Requests generation of a server (monitored object distributed object server 21). After the monitoring target distributed object server 21 is generated, the distributed object generation management unit 13 acquires the pid of the monitoring target distributed object server 21 from the overall control unit 20.
  • the distributed object generation management unit 13 acquires the pids of all the distributed object servers in the common user area regardless of whether or not they are monitoring targets, and uses them to manage the distributed object servers. Further, the distributed object generation management unit 13 may have a function of managing the state of which distributed object server is the monitoring target with respect to the distributed object server managed by itself.
  • the monitoring target processes generated and started as monitoring targets are generated and started in the monitoring target user process 32, the descendant processes of the monitoring target user process 32, and the common user area, as shown by the dashed rectangle in FIG.
  • the monitoring target distributed object server 21 corresponds to this. Although details will be described later, the pids of all the monitoring target processes are registered in the registry redirector 11.
  • step S1 the distributed object generation management unit 13, which is one of the standard function blocks of the OS, is activated when the OS is activated as the system is started.
  • step S2 the registry redirector 11 is activated. Thereafter, when the OS receives a registry access request, a request for creating / starting a new child process, or an end notification from an arbitrary process, the OS always notifies the registry redirector 11 of the received information together with the pid of the arbitrary process. .
  • pid process identifier
  • the OS receives a request for generating / starting a new child process from an arbitrary process, the OS notifies the registry redirector 11 of the pid of the child process generated / started in addition to the pid of the arbitrary process. To do.
  • the registry redirector 11 when the pid of a certain process is registered as a monitoring target, the registry redirector 11 generates not only the pid of the process but also the pid of the child process from the OS when the process generates and starts the child process. Receive together. As a result, the registry redirector 11 automatically registers the pids of all descendant processes generated and started with the process as a starting point (root process) as a monitoring target. Specifically, as shown in FIG. 6 described later, a registry protection routine (pid management) is executed.
  • step S3 the file system redirector 12 is activated. Thereafter, when the OS receives a file access request, a request for creating / starting a new child process, or an end notification from an arbitrary process, the OS always notifies the file system redirector 12 of the received information together with the pid of the arbitrary process. To do.
  • the file system redirector 12 automatically registers the pids of all descendant processes generated and started from that process as the monitoring target.
  • step S4 the process proceeds to step S4.
  • step S4 the overall control unit 20 is activated in the common user area so as to provide a program operation monitoring service as a common service to all users.
  • the overall control unit 20 registers its own pid in the registry redirector 11 as the root process of all processes to be monitored.
  • the pids of all descendant processes generated and started from the overall control unit 20 are automatically registered as monitoring targets by the already started registry redirector 11.
  • the overall control unit 20 controls the OS so that the process captures the printing operation monitoring unit 32P and the clipboard operation monitoring unit 32C therein. Give instructions in advance.
  • the OS is Microsoft Windows (registered trademark)
  • the overall control unit 20 may instruct the OS in advance so that the process installs a predetermined hook procedure at the time of starting the process.
  • step S5 the overall control unit 20 determines whether or not the sign-in of the user who requests the execution start of the program operation monitoring service is detected. If the sign-in of the user is detected, the process proceeds to step S6. If not detected, the process proceeds to step S13.
  • step S6 the overall control unit 20 generates and activates the monitoring target user process generation unit 31 as its own child process in the individual user area for the user generated by the logon of the user to the computer as a trigger.
  • the overall control unit 20 registers its pid as a monitoring target in the registry redirector 11 as a root process as a starting point of all processes to be monitored at the time of activation (step S4). Therefore, the monitoring target user process generation unit 31 that is a child process of the overall control unit 20, the monitoring target user process 32 that is generated and started from the monitoring target user process 32, and the pids of all the descendant processes are also monitored as registry redirectors. 11 is automatically registered.
  • the user interface (program operation monitoring service UI) of the program operation monitoring service is presented to the user.
  • the program operation monitoring service UI displays the folder tree structure of the quarantine folder to be described later, copy files in the quarantine folder that can be selected (blank display when there is no copy file), icons linked to programs that can be monitored for operation, etc. Is done.
  • the program associated with the selected icon is executed in the sandbox, and the operation of the monitored user process 32 as the execution subject is monitored. The process proceeds to step S7.
  • step S7 the overall control unit 20 executes process operation monitoring. Specifically, a process operation monitoring routine shown in FIG. 10 described later is executed.
  • step S8 the overall control unit 20 determines whether or not the sign-out of the user who has requested execution of the program operation monitoring service has been detected. If the sign-out of the user is detected, the process proceeds to step S9, and if not detected, the process returns to step S7. Therefore, the process of step S7 is executed until sign-out is detected.
  • step S9 the overall control unit 20 executes an end process of the program operation monitoring service provided to the user. Specifically, the overall control unit 20 stops all the monitoring target user processes 32 and their descendant processes generated and started in the individual user area for the user.
  • step S10 all copy files generated and held in a predetermined quarantine folder for the user are deleted.
  • a folder tree structure composed of a copy file of the original file and a folder storing each copy file is strictly reproduced in the quarantine folder.
  • step S11 all registry substitution keys generated in a predetermined protected area for the user are deleted.
  • step S12 the monitoring target user process generation unit 31 generated and activated in the individual user area for the user stops.
  • the monitoring target distributed object server 21 When there is a monitoring target distributed object server 21 generated and started in the common user area triggered by a usage request from the monitoring target user process 32, the monitoring target distributed object server 21 sends a request to a user other than the user. In order to be able to respond to the use request from the monitoring target user process 32 in the assigned individual user area, it does not stop at this point.
  • step S13 the overall control unit 20 determines whether or not the shutter down of the system has been detected. If a shutdown is detected, the process proceeds to step S14, and if not detected, the process returns to step S5.
  • step S ⁇ b> 14 when there is a monitoring target distributed object server 21 generated and started in the common user area, the overall control unit 20 stops all the monitoring target distributed object servers 21.
  • step S15 the overall control unit 20 stops.
  • step S16 the file system redirector 12 is stopped, and in step S17, the registry redirector 11 is stopped.
  • step S18 all functions in the system area and the OS are stopped.
  • the operations of the process to be monitored in this embodiment are a printing operation, a clipboard operation, a registry access operation, and a file access operation.
  • the printing operation and the clipboard operation are respectively monitored by the printing operation monitoring unit 32P and the clipboard operation monitoring unit 32C that are taken in when the monitoring target user process 32 is generated and activated.
  • Registry access operation and file access operation are monitored by a registry redirector 11 and a file system redirector 12 that operate in the system area, respectively.
  • FIG. 4 is a flowchart showing a printing operation monitoring routine by the printing operation monitoring unit 32P incorporated into the process.
  • the printing operation monitoring routine is executed in the process.
  • step S21 the process (the printing operation monitoring unit 32P incorporated in the inside) determines whether it is a monitoring target at the time of activation, specifically, whether its pid is a monitoring target.
  • the control unit 20 is inquired.
  • step S22 the printing operation monitoring unit 32P determines whether or not the printing operation of the process that has captured itself is detected. When the printing operation monitoring unit 32P detects the printing operation, the process proceeds to step S23, and when not detected, the process waits at step S22.
  • step S23 the printing operation monitoring unit 32P determines whether or not it is a monitoring target based on the inquiry result in step S21. If it is a monitoring target, the process proceeds to step S24. If it is not a monitoring target, the process returns to step S22.
  • step S24 the printing operation monitoring unit 32P rejects the printing operation and returns to step S22.
  • Such a printing operation monitoring routine is realized by a hook injected into the OpenPrinter API when the OS is, for example, Windows (registered trademark) of Microsoft Corporation.
  • FIG. 5 is a flowchart showing a clipboard operation monitoring routine performed by the clipboard operation monitoring unit 32C incorporated into the process. When an arbitrary process is started in the individual user area, this clipboard operation monitoring routine is executed inside.
  • step S31 the process (the clipboard operation monitoring unit 32C incorporated in the inside) determines whether or not the process itself is the monitoring target at the time of activation, specifically, whether or not its pid is the monitoring target.
  • the control unit 20 is inquired.
  • step S32 the clipboard operation monitoring unit 32C determines whether or not a data registration operation to the clipboard of a process that has captured itself is detected. If a data registration operation is detected, the process proceeds to step S33, and if not detected, the process proceeds to step S35.
  • step S33 the clipboard operation monitoring unit 32C determines whether or not it is a monitoring target based on the inquiry result in step S31. If it is a monitoring target, the process proceeds to step S34, and if it is not a monitoring target, the process returns to step S32.
  • step S34 the clipboard operation monitoring unit 32C registers its pid in a predetermined shared memory to indicate that it is a data registration process.
  • the processing when the data registration operation of the clipboard operation monitoring routine is detected is realized by a hook injected into the SetClipboardData API.
  • step S35 the clipboard operation monitoring unit 32C determines whether or not the data acquisition operation from the clipboard of the process that has captured itself is detected. If a data acquisition operation is detected, the process proceeds to step S36, and if not detected, the process returns to step S32.
  • step S36 the clipboard operation monitoring unit 32C determines whether or not it is a monitoring target based on the inquiry result in step S31. If it is a monitoring target, the process proceeds to step S38. If it is not a monitoring target, the process proceeds to step S37.
  • step S37 the clipboard operation monitoring unit 32C determines whether there is pid registration of the data registration process in the shared memory described above. If there is pid registration, the process proceeds to step S39, and if there is no pid registration, the process proceeds to step S38.
  • step S38 the clipboard operation monitoring unit 32C permits the pasting operation of the acquired data to itself. Then, the process returns to step S32. If it is determined in step S37 that there is no pid registration, the data registration process in which data is registered is not a monitoring target. That is, the data acquisition operation in step S35 corresponds to data exchange via the clipboard between normal processes that are not monitored. Therefore, in step S38, the operation of pasting the acquired data to itself is permitted.
  • step S39 the clipboard operation monitoring unit 32C rejects the operation of pasting the acquired data on itself. Then, the process returns to step S32. If it is determined in step S37 that there is pid registration, the data registration process in which data is registered is a monitoring target. That is, the data acquisition operation in step S35 corresponds to the movement of data from the process to be monitored to the process not to be monitored. In other words, the above-described data acquisition operation is an act of bringing confidential data handled by a program executed in the sandbox to a program executed outside the sandbox. Therefore, in step S39, the operation of pasting the acquired data on itself is rejected.
  • the processing when the data acquisition operation is detected in the clipboard operation monitoring routine is realized by a hook injected into the GetClipboardData API when the OS is Windows (registered trademark) of Microsoft Corporation, for example.
  • the registry redirector 11 always obtains notification from the OS together with the pid of the process and its parent process every time a new process is created and started, and uses the obtained information. To do.
  • the registry redirector 11 uses not only the original role of registry protection but also all processes to be monitored by utilizing the notification from the OS described in step S2 of FIG. There is also a role of managing the pid of the.
  • the pids of all the monitoring target processes are managed by the registry redirector 11. Specifically, as described in step S4 of FIG. 2, when the registry redirector 11 receives a pid registration notification from the overall control unit 20, the monitored process list that holds the pid with the registration notification therein Register with. When the registry redirector 11 receives a pid registration inquiry notification from the overall control unit 20 or the like, the registry redirector 11 makes an inquiry from the overall control unit 20 or the like by referring to the monitored process list for the pid that has received the registration inquiry notification. respond.
  • the registry redirector 11 executes the registry protection routine shown below when it acquires a notification regarding new process creation or registry access from the OS, or when it receives a pid registration notification or registration inquiry notification from the overall control unit 20 or the like. To do.
  • step S ⁇ b> 41 the registry redirector 11 determines whether or not a pid registration notification has been acquired from the overall control unit 20. If the pid registration notification is acquired, the process proceeds to step S42, and if not acquired, the process proceeds to step S43.
  • step S42 the registry redirector 11 registers the pid acquired from the overall control unit 20 in the monitoring target process list. Then, the process returns to step S41.
  • step S43 the registry redirector 11 determines whether a pid inquiry notification has been acquired from the overall control unit 20 or the like. When the pid inquiry notification is acquired, the process proceeds to step S44, and when the pid inquiry notification is not acquired, the process proceeds to step S45.
  • step S44 the registry redirector 11 inquires whether the acquired pid is registered in the monitoring target process list, and returns the inquiry result to the overall control unit 20 or the like. Then, the process returns to step S41.
  • step S45 the registry redirector 11 determines whether a new process creation / startup notification has been acquired from the OS. If a new process generation / startup notification has been acquired, the process proceeds to step S46. If a new process generation / startup notification has not been acquired, the process proceeds to step S48. Note that the new process creation / startup notification includes not only the pid of the newly created / started process but also the pid of the parent process of the process.
  • step S46 the registry redirector 11 determines whether or not the pid of the parent process of the process acquired when the process creation / startup notification is acquired from the OS is registered in the monitored process list, that is, the parent process. It is determined whether or not is a monitoring target. If the parent process is a monitoring target, the process proceeds to step S47, and if not, the process returns to step S41.
  • step S47 the registry redirector 11 registers the pid of the newly created and started process in the monitored process list. Then, the process returns to step S41. In this way, when the parent process of the newly created and activated process is the monitoring target, the process needs to be the monitoring target, and the pid of the process is registered in the monitoring target process list. .
  • step S4 in FIG. 2 when the overall control unit 20 starts up (step S4 in FIG. 2), its own pid is registered in the registry redirector 11 so that all processes (descendant processes) generated from the overall control unit 20 are started. Registered in the monitored process list.
  • All the processes registered in the monitored process list correspond to the following (1) to (4).
  • Overall control unit 20 Monitored user process generation unit 31 generated and activated as a child process of the overall control unit 20 (3) Monitored user process 32 generated and started as a child process of the monitored user process generation unit 31 when the user designates execution of a desired program in the sandbox and its descendant processes (4)
  • Overall control Monitoring object distributed object server 21 generated and started as a child process by the monitoring object distributed object server generation unit 20G in the unit 20 and its descendant processes
  • step S48 the registry redirector 11 determines whether or not a process end notification has been acquired from the OS. If a process end notification has been acquired, the process proceeds to step S49, and if not, the process proceeds to step S50.
  • step S49 the registry redirector 11 acquires the pid of the process together with the process end notification, and deletes the pid of the ended process from the monitored process list using the acquired pid. Then, the process returns to step S41.
  • step S50 processing for protecting the registry is executed.
  • the registry redirector 11 determines whether a registry access notification has been acquired from the OS.
  • the registry access notification is a notification that is always sent from the OS every time an arbitrary process tries to access the registry.
  • the registry access notification includes the pid and access contents of the process that tried to access the registry. If the registry access notification has been acquired, the process proceeds to step S51, and if not, the process returns to step S41.
  • step S51 the registry redirector 11 uses the pid of the process acquired together with the registry access notification to query the monitoring target process list held by itself, and determines whether or not the process trying to access the registry is the monitoring target. Determine. If the process is a monitoring target, the process proceeds to step S52. If the process is not a monitoring target, the process returns to step S41.
  • the registry redirector 11 executes the processing after the next step S52 in order to protect the registry.
  • step S52 the registry redirector 11 determines whether or not a registry key opening operation has been detected based on the notification from the OS. If a registry key open operation is detected, the process proceeds to step S53. If a registry key open operation is not detected, the process proceeds to step S54.
  • step S53 the registry redirector 11 generates a registry substitute key that substitutes for the designated original key in a predetermined protected area, and opens the registry substitute key. Then, the process returns to step S41.
  • step S54 the registry redirector 11 determines whether a read operation of the registry key value is detected based on the notification from the OS. If a read operation of the registry key value is detected, the process proceeds to step S55. If a read operation of the registry key value is not detected, the process proceeds to S56.
  • step S55 the registry redirector 11 copies the value of the designated original key to the registry substitute key (generated in response to the above opening operation of the registry key) and returns the value. Then, the process returns to step S41.
  • step S56 the registry redirector 11 determines whether or not a write operation of the registry key value is detected based on the notification from the OS. If a registry key value writing operation is detected, the process proceeds to step S57. If a registry key value writing operation is not detected, the process proceeds to step S58.
  • step S57 the registry redirector 11 writes the designated value in the registry substitute key (generated in response to the above registry key opening operation). Then, the process returns to step S41.
  • step S58 the registry redirector 11 determines whether or not a registry key closing operation has been detected based on the notification from the OS. If a registry key closing operation is detected, the process proceeds to step S59. If a registry key closing operation is not detected, the process returns to step S41.
  • step S59 the registry redirector 11 closes the registry substitute key (generated in response to the above opening operation of the registry key). Then, the process returns to step S41.
  • FIGS. 8 and 9 are flowcharts showing a file protection routine by the file system redirector 12.
  • the file system redirector 12 sends a notification indicating the operation (pid of the process). And execute the following file protection routine.
  • file system redirector 12 can manage the pid of the process to be monitored, like the registry redirector 11, although detailed contents are omitted.
  • step S61 the file system redirector 12 obtains a notification from the OS and determines whether a file open operation is detected. If a file open operation is detected, the process proceeds to step S62. If a file open operation is not detected, the process proceeds to step S69.
  • step S62 the file system redirector 12 determines whether or not the process to open the file is a monitoring target.
  • the file system redirector 12 directly queries the registry redirector 11 instead of the overall control unit 20 using the pid included in the notification from the OS.
  • the reason why the file system redirector 12 makes an inquiry directly to the registry redirector 11 is as follows. Since both the registry redirector 11 and the file system redirector 12 exist in the system area, the overall control unit in which the file system redirector 12 exists in a different area (common user area) as to whether or not a certain process is to be monitored. This is because it is more efficient to directly query the registry redirector 11 than to query the registry redirector 11 via 20.
  • the file system redirector 12 can also manage the pid of the monitored process, like the registry redirector 11. In this case, the file system redirector 12 may inquire about the monitoring target process list held by itself.
  • step S63 the file system redirector 12 determines whether or not the process is trying to open a file in the quarantine folder based on the notification from the OS. If a file in the quarantine folder is to be opened, the process proceeds to step S65. If a file other than the file in the quarantine folder is to be opened, the process proceeds to step S64.
  • step S64 the file system redirector 12 determines whether there is a write flag in the notification from the OS.
  • the write flag is a flag that enables editing of the contents of the target file in the file open operation. If there is a write flag, the process proceeds to step S66, and if there is no write flag, the process proceeds to step S65.
  • step S65 the file system redirector 12 permits the file open operation of the process. Then, the process returns to step S61. That is, when the process to be monitored (affirmative determination in step S62) attempts to open a file in the quarantine folder (positive determination in step S63), or a file other than the file in the quarantine folder (existing normal file) (step If the determination is negative (NO in S63), the file open operation is permitted if the content is not to be edited and only reading is to be performed (No determination in step S64).
  • step S66 the file system redirector 12 generates a copy file of the designated original file in the quarantine folder, and opens the copy file in the quarantine folder. As a result, it is possible to edit the copy file in the quarantine folder. Then, the process returns to step S61.
  • step S67 based on the notification from the OS, it is determined whether or not a process that is not a monitoring target is attempting to open a file in the quarantine folder. If the file in the quarantine folder is to be opened, the process proceeds to step S68. If the file other than the file in the quarantine folder is to be opened, the process proceeds to step S65.
  • step S65 opening of the file is permitted
  • step S68 the file system redirector 12 rejects the file open operation. That is, when a process that is not a monitoring target tries to open a file in the quarantine folder, the file open operation is rejected. Then, the process returns to step S61.
  • step S69 based on the notification from the OS, the file system redirector 12 determines whether a request for displaying a list of file names included in a predetermined folder has been detected. If a list display request is detected, the process proceeds to step S70. If no list display request is detected, the process returns to step S61.
  • step S70 the file system redirector 12 determines whether or not the process requesting the file name list display is a monitoring target. Here, the same processing as step S62 is performed. If the process is a monitoring target, the process proceeds to step S71. If the process is not a monitoring target, the process proceeds to step S76.
  • step S71 the file system redirector 12 obtains a list of file names (first file name list) included in the folder specified by the above process.
  • step S72 the file system redirector 12 obtains a list of file names (second file name list) included in the quarantine folder.
  • step S73 the file system redirector 12 compares the first file name list and the second file name list to determine whether or not the same file name exists. If there is the same file name, the process proceeds to step S74, and if not, the process proceeds to step S75.
  • step S74 the file system redirector 12 gives priority to the related information in the second file name list obtained from the quarantine folder based on the first file name list and with the same file name. Overwrite the first file name list. In this way, the file system redirector 12 merges the first file name list and the second file name list.
  • step S75 the file system redirector 12 returns the merged file name list to the request source process. Then, the process returns to step S61.
  • a folder tree structure composed of a copy file of the original file and a folder for storing each copy file is strictly reproduced.
  • the file name list comparison the file name in the designated folder and the file name in the quarantine folder are compared except for the root folder name portion of the quarantine folder.
  • the original file in the designated folder is “ ⁇ My Document ⁇ Memo.txt”
  • the corresponding copy file in the quarantine folder is “.. ⁇ Quarantine Folder ⁇ My Document ⁇ Memo.txt”.
  • the “..quarantine folder” portion which is the root folder name of the quarantine folder is excluded, and the file names are compared.
  • the copy file in the quarantine folder corresponding to the file is actually specified as an alternative file for the specified file.
  • the This copy file is then opened and edited.
  • the content editing itself by the monitoring target process is excluded from the monitoring target including the file closing operation. Further, all copy files generated in the quarantine folder by this routine are deleted after the user sign-out is detected (step S10 in FIG. 3).
  • FIG. 10 is a flowchart showing a process operation monitoring routine by the overall control unit 20.
  • monitoring target process inquiries steps S81 to S87
  • monitoring target distributed object servers are generated and started (steps S88 to S90).
  • step S81 the overall control unit 20 receives a request from another functional block (arbitrary process). For example, when a certain process is newly generated and activated, the process makes an inquiry to the overall control unit 20 in order to confirm whether or not the process itself is a monitoring target. As will be described later, when the distributed object generation management unit 13 receives a distributed object server generation request from the monitoring target user process 32, the distributed object generation management unit 13 requests the overall control unit 20 to generate the monitoring target distributed object server 21.
  • step S82 the overall control unit 20 determines whether the received request is an inquiry to be monitored. If the inquiry is a monitoring target, the process proceeds to step S83. If the inquiry is not a monitoring target, the process proceeds to step S88.
  • step S83 the overall control unit 20 acquires the pid of the inquired process from the received requests.
  • step S84 the overall control unit 20 makes an inquiry to the registry redirector 11 using the acquired pid.
  • step S85 the overall control unit 20 receives from the registry redirector 11 a response to the inquiry as to whether or not the inquired process is a monitoring target. If the inquired process is the monitoring target, the process proceeds to step S86, and if not, the process proceeds to step S87.
  • step S86 the overall control unit 20 returns a positive response to the inquired process indicating that the process is a monitoring target. Then, the process returns to step S81.
  • step S87 the overall control unit 20 returns a negative response to the inquired process indicating that the process is not a monitoring target. Then, the process returns to step S81.
  • step S88 the overall control unit 20 determines whether or not the request received in step S81 is a generation / startup request for the monitoring target distributed object server 21 from the distributed object generation management unit 13. If it is a request to generate / start the monitoring target distributed object server 21, the process proceeds to step S89. If it is not a request to generate / start the monitoring target distributed object server 21, the process returns to step S81.
  • step S89 the overall control unit 20 causes the monitoring target distributed object server generation unit 20G that it owns to execute the following processing. That is, the monitoring target distributed object server generation unit 20G generates and starts the requested monitoring target distributed object server 21 as its own child process.
  • step S90 the overall control unit 20 returns the pid of the monitoring target distributed object server 21 generated and activated by the monitoring target distributed object server generation unit 20G to the distributed object generation management unit 13 that is the request source. And it returns to step S81 again.
  • the distributed object generation management unit 13 manages the pids of all the distributed object servers regardless of whether or not the distributed object server falls under the monitoring target.
  • the distributed object generation management unit 13 also needs to manage the pid of the monitoring target distributed object server 21 even when the monitoring target distributed object server 21 is generated and activated by the overall control unit 20.
  • the overall control unit 20 notifies the distributed object generation management unit 13 of the pid of the monitored distributed object server 21 that has been generated and started, and causes the distributed object generation management unit 13 to register it. Thereby, the distributed object generation management unit 13 can always manage the pids of all the distributed object servers regardless of whether or not the distributed object server corresponds to the monitoring target.
  • the overall control unit 20 which is the parent process of the monitoring target distributed object server 21 is registered in the registry redirector 11 as a monitoring target. Therefore, as a result of the execution of the process operation monitoring routine shown in FIG. 10, the monitoring target distributed object server 21 that is a child process of the overall control unit 20 and all descendant processes that are generated and started from this are also monitored. Are automatically registered in the registry redirector 11.
  • FIG. 11 is a principal block diagram of the program operation monitoring system 1. In FIG. 11, the processing is executed in the order of (1) to (6).
  • An arbitrary monitoring target user process 32 transmits a usage request for the monitoring target distributed object server 21 to the distributed object generation management unit 13.
  • the distributed object generation management unit 13 sends a predetermined notification (including a notification of an activation method such as an execution target file and execution authority) to the overall control unit 20. By doing so, a request is made to generate and start the monitored distributed object server 21 that has been requested to be used.
  • the overall control unit 20 Upon receiving a request from the distributed object generation management unit 13, the overall control unit 20 uses the monitoring target distributed object server generation unit 20G held therein to monitor the distributed object server requested to be used. The distributed object server 21 is generated and activated. (4) The overall control unit 20 returns the pid of the monitored distributed object server 21 that has been generated and started as a response to the distributed object generation management unit 13.
  • the distributed object generation management unit 13 returns a response including an access method to the generated and activated monitoring target distributed object server 21 to the use request source process.
  • the monitoring target user process 32 (use request source process) communicates with the monitoring target distributed object server 21 based on the access method to the monitoring target distributed object server 21 received from the distributed object generation management unit 13.
  • step S101 the distributed object generation management unit 13 determines whether there is a request for using a desired distributed object server from an arbitrary process. If there is a usage request, the process proceeds to step S102. If there is no usage request, the process waits in step S101.
  • step S102 the distributed object generation management unit 13 receives the use request of the desired distributed object server, and acquires the pid (pid included in the use request) of the use request source process.
  • step S103 the distributed object generation management unit 13 determines whether or not the distributed object server requested to be used is in operation. If it is in operation, the process proceeds to step S108, and if it is not in operation, the process proceeds to step S104.
  • step S104 the distributed object generation management unit 13 directly queries the registry redirector 11 using the acquired pid, and determines whether or not the use request source process is a monitoring target. If the process is a monitoring target, the process proceeds to step S105. If the process is not a monitoring target, the process proceeds to step S106.
  • Both the registry redirector 11 and the distributed object creation management unit 13 exist in the system area. Therefore, the distributed object generation management unit 13 can directly query the registry redirector 11 without interposing the overall control unit 20 existing in the common user area.
  • step S ⁇ b> 105 the distributed object generation management unit 13 requests the overall control unit 20 to generate and start the monitoring target distributed object server 21.
  • the overall control unit 20 receives the above request from the distributed object generation management unit 13, the overall control unit 20 causes the monitoring target distributed object server generation unit 20G held therein to execute the following process.
  • the monitoring target distributed object server generation unit 20G generates and starts the requested monitoring target distributed object server 21 as its child process (step S89 in FIG. 10). Then, the overall control unit 20 notifies the distributed object generation management unit 13 of the pid of the monitoring target distributed object server 21 generated and started as its own child process (step S90). Then, the distributed object generation management unit 13 acquires the pid of the monitoring target distributed object server 21 from the overall control unit 20, and proceeds to step S107.
  • step S106 the distributed object generation management unit 13 generates and starts a distributed object server that is not a monitoring target as its child process, and acquires the pid of the distributed object server.
  • step S107 the distributed object generation management unit 13 starts managing the newly generated and started distributed object server using the acquired pid.
  • step S108 the distributed object generation management unit 13 determines whether a desired distributed object server currently in operation is a monitoring target. Up to this point, the distributed object generation management unit 13 acquires the pid of the distributed object server to be monitored from the overall control unit 20 (step S105), and generates and activates the distributed object server that is not the monitoring target. The pid has been acquired (step S106).
  • the distributed object generation management unit 13 does not query the overall control unit 20 or the registry redirector 11 for the pid, and the distributed object server is monitored based on the pid acquisition status of the distributed object server that is operating. It is possible to determine whether or not there is. That is, the distributed object generation management unit 13 has a function of holding the determination result, and may determine whether or not the above-described distributed object server is a monitoring target by using the function.
  • the distributed object generation management unit 13 If the distributed object generation management unit 13 does not have a function to hold the determination result of whether or not the currently operating distributed object server is a monitoring target, the distributed object generation management unit 13 manages the desired distributed object server that is currently managed by the distributed object server 13 By identifying the pid and making a direct inquiry to the registry redirector 11, it may be determined whether or not the desired distributed object server in operation is a monitoring target. If the desired distributed object server in operation is a monitoring target, the process proceeds to step S109, and if not, the process proceeds to step S110.
  • step S109 the distributed object generation management unit 13 directly queries the registry redirector 11 using the pid of the use request source process acquired in step S102, and determines whether or not the use request source process is a monitoring target. judge. If the use request source process is a monitoring target, the process proceeds to step S111, and if not, the process proceeds to step S112.
  • step S110 the distributed object generation management unit 13 determines whether or not the use request source process is a monitoring target, as in step S109. If the use request source process is a monitoring target, the process proceeds to step S112, and if not, the process proceeds to step S111.
  • step S111 the following state 1 or state 2 is set.
  • the desired distributed object server is the monitoring target (monitoring target distributed object server 21), and the use request source process is also the monitoring target (monitoring target user process 32). At this time, even if the monitoring target user process 32 of the use request source accesses the desired monitoring target distributed object server 21, both are the monitoring targets, so no problem occurs.
  • (State 2) The desired distributed object server is not the monitoring target, and the use request source process is not the monitoring target. This is a normal operation. At this time, even if the use request source process accesses the desired distributed object server, both are not monitored, so no problem occurs.
  • the distributed object generation management unit 13 returns a response including an access method to the desired distributed object server to the use request source process. And it returns to step S101 again.
  • Step S103 If the desired distributed object server is not operating (No at Step S103), the processing from Step S104 to Step S107 is executed, and the desired distributed object server is generated and started.
  • the use request source process is a monitoring target
  • the generated distributed object server is also a monitoring target (monitoring target distributed object server 21).
  • the use request source process is not the monitoring target (if it is a normal process)
  • the generated and activated distributed object server is not the monitoring target.
  • step S111 if a desired distributed object server is newly created and started by the processing from step S104 to step S107 in response to the usage request of the usage request source process, is affirmative determination in both step S108 and step S109? Both step S108 and step S110 are negative.
  • the distributed object generation management unit 13 always permits the use request of the desired distributed object server by the use request source process, and returns a response including the access method to the distributed object server (step S111).
  • step S112 the next state 3 or state 4 is entered.
  • the desired distributed object server is the monitoring target (monitoring target distributed object server 21), but the use request source process is not the monitoring target.
  • State 4 Although the desired distributed object server is not a monitoring target, its use request source process (monitoring target user process 32) is a monitoring target.
  • the state of state 3 or state 4 is that the distributed object server desired by a certain process is already operating based on a usage request from another user's process (affirmative determination in step S103), from step S104 to step S107. This can occur when the above process is not executed. That is, when the process of the other user is not a monitoring target, the desired distributed object server in operation is also not a monitoring target. Therefore, if the use request source process is the monitoring target (monitoring target user process 32), the state 4 is entered.
  • step S112 the distributed object generation management unit 13 returns an access rejection response to the desired distributed object server to the use request source process. And it returns to step S101 again.
  • the desired distributed object server currently in operation is temporarily stopped, and then the desired distributed object server is monitored in the same monitoring state as the use request source process ( It is necessary to restart the system depending on whether or not it is a monitoring target. The reason is as follows.
  • the registry redirector 11 and the file system redirector 12 perform a special protection operation when the monitoring target distributed object server 21 exists (see FIGS. 6 to 9).
  • the desired distributed object server in operation is changed from a non-monitoring target to a monitoring target without stopping, the special protection operation described above cannot be maintained while maintaining consistency. That is, since the change from the non-monitoring target to the monitoring target needs to be performed when the desired distributed object server is not in operation, the above-described processing is necessary.
  • a desired distributed object server in operation is changed from a monitoring target to a non-monitoring target without stopping, there may be a problem with handling of files by the desired distributed object server.
  • the monitoring target distributed object server 21 newly generates a file
  • the file is placed only in the quarantine folder.
  • the desired monitored object distributed object server 21 is changed to a non-monitored object without stopping, the desired distributed object server can no longer access the newly generated file in the quarantine folder.
  • when changing the monitoring status of a desired distributed object server first terminate the desired distributed object server, and then start the desired distributed object server after changing the monitoring status. You have to restart from.
  • the distributed object generation management unit 13 also individually manages the monitoring status (whether or not it is a monitoring target) of each of the plurality of distributed object servers, and receives a use request for a desired distributed object server from the use request source process. In such a case, a distributed object server in the same monitoring status as the use request source process may be selected, and a response including an access method to the distributed object server may be returned to the request source process.
  • the distributed object generation management unit 13 is originally provided as one of OS standard function blocks. Therefore, in order to minimize alterations from the standard functions of the OS, the use request source process itself may directly determine whether the desired distributed object server is operating, including its monitoring status. In this case, the distributed object generation management unit 13 simply executes the following routine.
  • FIG. 14 is a flowchart showing a second distributed object server generation management routine by the distributed object generation management unit 13.
  • the step which performs the same process as FIG. 12 is attached
  • the usage request source process presupposes that (a) it is the monitoring target by referring to the overall control unit 20 using its own pid at the time of activation (monitoring target user process 32) in advance. (B) knows in advance whether or not the desired distributed object server is already operating as a monitoring target (monitoring target distributed object server 21) (these are hooks that perform the function in the use request source process) This can be realized by injecting
  • the use request source process When a normal process (not monitored) requests the distributed object generation management unit 13 to use a desired distributed object server, it generally does not transmit its own pid. Therefore, when the use request source process is a monitoring target (monitoring target user process 32), the use request source process transmits a use request notification including its own pid to the distributed object generation management unit 13.
  • step S101 the distributed object generation management unit 13 determines whether or not there is a use request for a desired distributed object server from the use request source process. If there is a usage request, the process proceeds to step S121. If there is no usage request, the process waits until there is a usage request.
  • step S121 the distributed object generation management unit 13 determines whether the usage request notification includes the pid of the usage request source process. If the pid of the use request source process is included, the process proceeds to step S105. If the pid is not included, the process proceeds to step S106.
  • step S105 the distributed object generation management unit 13 requests the overall control unit 20 to generate and activate the desired monitoring target distributed object server 21.
  • the overall control unit 20 generates and activates the desired monitoring target distributed object server 21 as its child process, and then notifies the distributed object generation management unit 13 of the pid.
  • the distributed object generation management unit 13 acquires the pid of the desired monitoring target distributed object server 21 from the overall control unit 20, and proceeds to step S107.
  • step S106 the distributed object generation management unit 13 generates and starts the desired distributed object server that is not a monitoring target as its child process, and acquires the pid of the distributed object server. Then, the process proceeds to step S107.
  • step S107 the distributed object generation management unit 13 manages the distributed object server generated and started (regardless of whether or not it is a monitoring target). Therefore, in step S107, the distributed object generation management unit 13 immediately starts management of the desired distributed object server newly generated and started using the acquired pid. Then, the process proceeds to step S111.
  • step S111 the distributed object generation management unit 13 returns a response including an access method to the desired distributed object server to the use request source process. And it returns to step S101 again.
  • the modification of the distributed object generation management unit 13 is limited to the range indicated by the thick broken line frame in FIG.
  • the distributed object server is generated and activated in the common user area so that it can be shared with other users regardless of whether or not it is a monitoring target.
  • the use of the distributed object server is generated and started in the usage request source process or the individual user area assigned to the user who owns the usage request source process when it is a monitoring target. It is also assumed that the process is limited only to the monitored user process 32. In this case, the monitoring target distributed object server 21 may be generated and started in the individual user area where the use request source process is generated and started.
  • step S14 shown in FIG. 3 is performed from the affirmative determination of step S8 to before step S10 (immediately before or immediately after step S9).
  • the monitoring target user process generation unit 31 assigned to the user may generate and start the monitoring target distributed object server 21.
  • the program operation to be monitored by the monitoring target process is not limited to the above-described operation, and for example, inter-process communication also applies. That is, TCP / IP network communication or the like is one of the monitoring targets.
  • a filter driver called, for example, WFP (Windows Filtering Platform) may be created and operated in the system area.
  • WFP Windows Filtering Platform
  • the distributed object generation management unit 13 includes the generation and activation of the designated monitoring target distributed object server 21 when a request for using the desired distributed object server is received from the monitoring target user process 32.
  • the request itself is redirected (transferred) to the overall control unit 20.
  • the distributed object generation management unit 13 generates and starts the distributed object server by itself when the monitoring target user process 32 requests the use of a desired distributed object server. To do.
  • the distributed object generation management unit 13 when the distributed object generation management unit 13 generates a specified distributed object server to be monitored, it temporarily stops the operation of the distributed object server. Then, the distributed object generation management unit 13 notifies the registry redirector 11 of the pid of the distributed object server, obtains the registration completion response, and the distributed object server becomes the monitoring target (monitoring target distributed object server 21). After confirming the above, the operation of the distributed object server is resumed.
  • a third distributed object server generation management routine shown in FIG. 15 is executed instead of the distributed object server generation management routine shown in FIG.
  • FIG. 15 is a flowchart showing a third distributed object server generation management routine. Steps S101 to S103 are the same as those in FIG. After a negative determination in step S103, the process proceeds to step S131 in FIG.
  • step S131 since the designated distributed object server is not operating, the distributed object generation management unit 13 generates the distributed object server by itself and acquires the pid of the generated distributed object server. This step is a normal process conventionally performed by the distributed object generation management unit 13.
  • step S132 the distributed object generation management unit 13 directly queries the registry redirector 11 using the pid acquired in step S101, and determines whether or not the use request source process is a monitoring target. If the process is a monitoring target, the process proceeds to step S133. If the process is not a monitoring target, the process proceeds to step S135.
  • step S133 the distributed object generation management unit 13 notifies the registry redirector 11 of the pid of the distributed object server acquired in step S131.
  • step S134 the distributed object generation management unit 13 determines whether there is a response indicating that the registration of the pid notified from the registry redirector 11 has been completed. If there is a response indicating that the registration has been completed, the process proceeds to step S135. If there is no response indicating that the registration has been completed, the process waits until there is a response.
  • step S135 the distributed object generation management unit 13 activates the distributed object server generated in step S131 and starts managing the distributed object server. Then, the process proceeds to step S108 shown in FIG. This step is a normal process conventionally performed by the distributed object generation management unit 13.
  • the distributed object generation management unit 13 notifies the registry redirector 11 of the pid of the distributed object server and registers it during the period from the generation of the specified distributed object server to the start-up. Thereby, the distributed object server to be monitored does not start the operation before monitoring, and it is possible to avoid omission of monitoring of the program operation.
  • this invention is not limited to embodiment mentioned above, It applies also to what was changed in design within the range of the matter described in the claim.
  • the various aspects described above may be configured by hardware, or may be configured by a computer in which a program recorded on a recording medium is installed.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本発明の第1の態様は、プログラムの実行主体であるプロセスであって監視対象となる監視対象プロセスの識別情報を監視対象プロセスリストに登録し、問い合わせ先から任意のプロセスが監視対象であるか否かの問い合わせがあった場合に、前記任意のプロセスの識別情報を前記監視対象プロセスリストに照会して、前記任意のプロセスが監視対象であるか否かの情報を前記問い合わせ先に返信する監視対象プロセス管理部と、分散オブジェクトサーバを生成して当該分散オブジェクトサーバの識別情報を保有する分散オブジェクト生成管理装置が監視対象プロセスから分散オブジェクトサーバの利用要求を受けた場合に、前記分散オブジェクト生成管理装置から所定の通知を受信する通知受信部と、を備えている。

Description

プログラム動作監視制御装置、分散オブジェクト生成管理装置、記録媒体、及びプログラム動作監視システム
 本発明は、プログラム動作監視制御装置、分散オブジェクト生成管理装置、記録媒体、及びプログラム動作監視システムに関する。
 従来、ソフトウェア開発の効率を向上させるために、ブログラムの実行主体であるプロセスを機能に応じて分割・部品化することが行われている。プロセスの分割・部品化の手法として、プロセスが別プロセスを生成・起動してまとまった処理を実施させる手法がある。
 プロセスが別プロセスに処理を実施させる第1の手法として、プロセスが当該別のプロセスとして子プロセスを生成し、当該子プロセスに処理を依頼する技術がある。
 この場合、親子間プロセスの通信については、TCP/IPなどのネットワーク通信技術、OSが提供する名前付きパイプ(named pipe)などといった一般的なプロセス間通信に加え、親子プロセス間でのメモリ資源の共有によって両者間で閉じたデータのやり取りが実行される場合もある。
 一方、分割・部品化されたプロセスの処理内容の汎用性が高い場合、プロセスが別プロセスに処理を実施させる第2の手法として、分散オブジェクト技術がある。分散オブジェクト技術では、当該別のプロセスとして、共通の呼び出し規約に従って汎用的な処理を実施するプロセスである分散オブジェクトサーバが生成・起動される。
 例えば、第1のプロセスが、汎用性のあるまとまった処理を別プロセスで実施したい場合、OSが提供する分散オブジェクト生成管理部に対して、当該まとまった処理を実行できる分散オブジェクトサーバの利用要求を通知する。
 分散オブジェクト生成管理部は、指定された分散オブジェクトサーバが指定された時点で稼働していなかった場合には、当該分散オブジェクトサーバを生成・起動し、当該分散オブジェクトサーバへのアクセス方法を含む応答を利用要求元の第1のプロセスに戻す。
 一方、第2のプロセスも、上記の汎用性のあるまとまった処理を別プロセスで実施したい場合、分散オブジェクト生成管理部に対して、当該分散オブジェクトサーバの利用要求を通知する。
 分散オブジェクト生成管理部は、今回は指定された分散オブジェクトサーバが既に稼働しているので、単に当該分散オブジェクトサーバへのアクセス方法を含む応答を利用要求元の第2のプロセスに戻す。
 上述した第1の手法では、親プロセス及び子プロセスの処理が、1つのコンピュータ内の閉じられた空間で実行される。これに対して第2の手法では、利用要求元の第2のプロセスの処理と分散オブジェクトサーバの処理とが、異なるコンピュータで実行される場合も含まれる。
 そのため、第2の手法では、利用要求元プロセスと分散オブジェクト生成管理部との間の通信方法、及び利用要求元プロセスと分散オブジェクトサーバとの間の通信方法は、原則として、先述したネットワーク通信技術に基づくプロセス間通信方法に限定される。
 このように分散オブジェクト技術においては、ソフトウェアシステムを、汎用性のあるまとまった処理を提供する独立したプログラムに分割し、当該独立したプログラムを分散オブジェクトサーバとして生成・起動する。これにより、プログラムの再利用性を大幅に高めることが可能となり、また一部を修正してもソフトウェアシステム全体を再構築しないで済むといった開発効率の大幅な向上が期待できる。
 さらに、複数の分散オブジェクトサーバを役割分担の上、複数のコンピュータで並行して生成・起動させることによって、コンピュータ資源の効率的な活用が可能となる。
 なお、分散オブジェクトサーバは、プロセスからの利用要求があった際に稼働していなかった場合には、分散オブジェクト生成管理部によって当該分散オブジェクトサーバが生成・起動される。このように、分散オブジェクトサーバは、利用要求元プロセスからの利用要求をトリガーとして、生成・起動されるものである。しかし、利用要求元プロセスと分散オブジェクトサーバとの関係は、後者が既に稼働していた場合には前者は原則として稼働中の後者を再利用することから、前出の親プロセスと子プロセスのような直接的な親子関係には相当しない。
 一方、信頼できないプログラムをシステム内の所定の保護領域で実行することによって、当該プログラムがシステムを不正に操作するのを防ぐ、サンドボックス(sandbox)と呼ばれるセキュリティ機構がある。
 サンドボックス内で実行されるプログラムは、その実行主体であるプロセスが他のプロセスやデータなどを操作できないように監視された状態で生成・起動される。このため、当該プロセスが暴走したりウイルスを動作させたりしても、当該サンドボックスの外部には影響が及ばない。以下、サンドボックス内で生成・起動されるプロセスのことを「監視対象プロセス」という。
 特許文献1には、ファイルシステムやレジストリなどが仮想化されたサンドボックスとしての仮想空間で実行されるプログラムの実行主体である監視対象プロセス及びその子プロセスに関する技術が開示されている。特許文献1では、監視対象プロセスによって生成・起動される(監視対象となる)子プロセスが親プロセスと同じ仮想空間を利用するか、又は当該子プロセス用に新たな仮想空間を生成するかが決定される。つまり、特許文献1の技術は、親プロセスが監視対象の場合は、子プロセスも監視対象とすることができる。
 換言すれば、監視対象プロセスがサンドボックス内で子プロセスを直接生成・起動する場合、プロセスの親子関係が明確である。このため、子プロセスを容易に監視対象とすることができる。
特開2010-205186号公報
 本発明は、従来技術の問題を解決するために提案されたものである。
 本発明の第1の態様であるプログラム動作監視制御装置は、プログラムの実行主体であるプロセスであって監視対象となる監視対象プロセスの識別情報を監視対象プロセスリストに登録し、問い合わせ先から任意のプロセスが監視対象であるか否かの問い合わせがあった場合に、前記任意のプロセスの識別情報を前記監視対象プロセスリストに照会して、前記任意のプロセスが監視対象であるか否かの情報を前記問い合わせ先に返信する監視対象プロセス管理部と、分散オブジェクトサーバを生成して当該分散オブジェクトサーバの識別情報を保有する分散オブジェクト生成管理装置が監視対象プロセスから分散オブジェクトサーバの利用要求を受けた場合に、前記分散オブジェクト生成管理装置から所定の通知を受信する通知受信部と、を備えている。
 本発明の第2の態様である分散オブジェクト生成管理装置は、プログラムの実行主体であるプロセスから分散オブジェクトサーバの利用要求を受信する利用要求受信部と、前記利用要求受信部により受信された前記利用要求の要求元プロセスの識別情報が監視対象プロセスリストに登録されていない場合に、前記利用要求のあった分散オブジェクトサーバを生成する分散オブジェクトサーバ生成部と、前記利用要求受信部により受信された前記利用要求の要求元プロセスの識別情報が前記監視対象プロセスリストに登録されている場合に、プログラム動作監視制御装置に所定の通知を送信する通知送信部と、を備えている。
 本発明の第3の態様であるプログラム動作監視システムは、上記のプログラム動作監視制御装置と、上記の分散オブジェクト生成管理装置と、を備えている。
 本発明のいずれかの態様によれば、監視対象プロセスのプログラム動作だけでなく、監視対象プロセスの利用要求に基づいて生成・起動される分散オブジェクトサーバのプログラム動作についても漏れなく監視することができる。
図1は、本発明の第1の実施形態に係るプログラム動作監視システムの構成を示すブロック図である。 図2は、プログラム動作監視システムの起動から終了までの動作手順を示すフローチャートである。 図3は、プログラム動作監視システムの起動から終了までの動作手順を示すフローチャートである。 図4は、印刷動作監視ルーチンを示すフローチャートである。 図5は、クリップボード動作監視ルーチンを示すフローチャートである。 図6は、レジストリ保護ルーチン(pid管理)を示すフローチャートである。 図7は、レジストリ保護ルーチン(レジストリ保護)を示すフローチャートである。 図8は、ファイル保護ルーチン(ファイルオープン動作の対応)を示すフローチャートである。 図9は、ファイル保護ルーチン(ファイル名一覧表示への対応)を示すフローチャートである。 図10は、プロセス動作監視ルーチンを示すフローチャートである。 図11は、プログラム動作監視システムの要部ブロック図である。 図12は、分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。 図13は、分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。 図14は、第2の分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。 図15は、第3の分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。
 本発明の実施形態について、図面を参照しながら詳細に説明する。
 [第1の実施形態]
 図1は、本発明の第1の実施形態に係るプログラム動作監視システム1の構成を示すブロック図である。
 プログラム動作監視システム1は、OS(Operating System)などのシステムの稼動に必要なプロセスが動作するメモリ空間であるシステム領域、すべてのユーザが共有して利用可能なプロセスが動作するメモリ空間である共通ユーザ領域、及び、個々のユーザが利用可能なプロセスが動作するメモリ空間である個別ユーザ領域(ユーザ1領域、ユーザ2領域、…)、のそれぞれのメモリ空間に設けられた機能ブロックで構成される。
 プログラム動作監視システム1は、個別ユーザ領域にある1つ以上のプロセスのうち、ユーザがサンドボックス内での実行を指定したプログラムの実行主体として生成・起動され監視対象となったプロセス(監視対象ユーザプロセス32)及びその子孫プロセスの各種動作を監視する。さらに、プログラム動作監視システム1は、共通ユーザ領域にある1つ以上の分散オブジェクトサーバのうち、監視対象ユーザプロセス32などの利用要求に基いて生成された分散オブジェクトサーバ(監視対象分散オブジェクトサーバ21)の各種動作を監視する。以下では、監視対象ユーザプロセス32及び監視対象分散オブジェクトサーバ21を包括したプロセスを「監視対象プロセス」という。
 プログラム動作監視システム1は、システム領域で動作する機能ブロックとして、レジストリリダイレクタ11、ファイルシステムリダイレクタ12、及び分散オブジェクト生成管理部13を備えている。
 プログラム動作監視システム1は、共通ユーザ領域で動作する機能ブロックとして、全体制御部20を備えている。全体制御部20は、その内部に監視対象分散オブジェクトサーバ生成部20Gを有している。
 さらに、プログラム動作監視システム1は、個別ユーザ領域で動作する機能ブロックとして、監視対象ユーザプロセス生成部31、及び監視対象ユーザプロセス32の内部に生成される印刷動作監視部32P及びクリップボード動作監視部32Cを備えている。
 全体制御部20は、監視対象プロセスの動作を監視するプログラム動作監視サービス全体の制御を司る。また、全体制御部20は、その内部に保有する監視対象分散オブジェクトサーバ生成部20Gによって、監視対象となる分散オブジェクトサーバ(監視対象分散オブジェクトサーバ21)を生成・起動させることができる。
 レジストリリダイレクタ11は、システム領域にあって、監視対象プロセスによるレジストリアクセス動作の監視、制御、保護を実行する。ここでレジストリとは、例えばOSがマイクロソフト社のWindows(登録商標)の場合、OSに関する基本情報や各種プログラムの設定、拡張情報などが登録された、OSで用いられる設定情報のデータベースのことをいう。
 ファイルシステムリダイレクタ12は、システム領域にあって、監視対象プロセスによるファイルアクセス動作の監視、制御、保護を実行する。
 監視対象ユーザプロセス生成部31は、個別ユーザ領域にあって、監視対象ユーザプロセス32を、当該ユーザに割り当てられた個別ユーザ領域内で生成・起動する。
 印刷動作監視部32Pは、個別ユーザ領域において生成・起動される任意のプロセスの内部にあって、ユーザによる当該プロセスを用いた印刷操作の監視、制御を実行する。
 クリップボード動作監視部32Cは、個別ユーザ領域において生成・起動される任意のプロセスの内部にあって、ユーザによる当該プロセスが絡んだクリップボード操作の監視、制御、保護を実行する。ここでクリップボードとは、異なるプログラム間でのデータのやり取りを実現すべく、ユーザが「コピー」や「カット」したデータを一時的に保存する機能をいう。
 分散オブジェクト生成管理部13は、OSの標準機能ブロックの1つとして提供されるものであるが、本実施形態では、さらに、全体制御部20に監視対象分散オブジェクトサーバ21を監視させるための追加機能を有している。
 分散オブジェクト生成管理部13は、OSの標準機能として、個別ユーザ領域のプロセスから分散オブジェクトサーバの生成依頼を受信した場合は、共通ユーザ領域に分散オブジェクトサーバを生成し、当該分散オブジェクトサーバのpidを取得する。
 分散オブジェクト生成管理部13は、前出の追加機能として、個別ユーザ領域の監視対象ユーザプロセス32から分散オブジェクトサーバの生成依頼を受信した場合は、共通ユーザ領域の全体制御部20に対して分散オブジェクトサーバ(監視対象分散オブジェクトサーバ21)の生成を依頼する。分散オブジェクト生成管理部13は、監視対象分散オブジェクトサーバ21が生成された後、全体制御部20から当該監視対象分散オブジェクトサーバ21のpidを取得する。
 なお、分散オブジェクト生成管理部13は、共通ユーザ領域のすべての分散オブジェクトサーバのpidを、それが監視対象であるか否かに関わらず取得し、当該分散オブジェクトサーバの管理に用いている。更に、分散オブジェクト生成管理部13は、自らが管理する分散オブジェクトサーバに関して、どの分散オブジェクトサーバが監視対象であるか否かの状態を併せて管理する機能を有してもよい。
 一方、監視対象として生成・起動される監視対象プロセスは、図1の破線の矩形で示したように、監視対象ユーザプロセス32、監視対象ユーザプロセス32の子孫プロセス、及び共通ユーザ領域で生成・起動される監視対象分散オブジェクトサーバ21が該当する。なお、詳しくは後述するが、すべての監視対象プロセスのpidは、レジストリリダイレクタ11に登録される。
 図2及び図3は、プログラム動作監視システム1の起動から終了までの動作手順を示すフローチャートである。
 ステップS1では、システムの立ち上げに伴いOSが起動することによって、OSの標準機能ブロックの1つである分散オブジェクト生成管理部13が起動する。
 ステップS2では、レジストリリダイレクタ11が起動する。
 その後、OSは、任意のプロセスから、レジストリアクセス要求、新たな子プロセスの生成・起動要求、あるいは終了通知を受け取ると、受け取った情報を、当該任意のプロセスのpidと共にレジストリリダイレクタ11に常に通知する。
 ここで、pid(process identifier)とは、1つのコンピュータ内においてプロセスを一意に職別するための識別情報である。OSは、任意のプロセスから新たな子プロセスの生成・起動要求を受け取った場合は、当該任意のプロセスのpidに加えて、生成・起動された当該子プロセスのpidも併せてレジストリリダイレクタ11に通知する。
 これより、レジストリリダイレクタ11は、あるプロセスのpidが監視対象として登録されると、当該プロセスが子プロセスを生成・起動した際、OSから、当該プロセスのpidのみならず、当該子プロセスのpidも併せて受け取る。その結果、レジストリリダイレクタ11は、当該プロセスを起点(ルートプロセス)として生成・起動されるすべての子孫プロセスのpidを監視対象として自動的に登録する。詳しくは、後述する図6に示すように、レジストリ保護ルーチン(pid管理)が実行される。
 ステップS3では、ファイルシステムリダイレクタ12が起動する。
 その後、OSは、任意のプロセスから、ファイルアクセス要求、新たな子プロセスの生成・起動要求、あるいは終了通知を受け取ると、受け取った情報を、当該任意のプロセスのpidと共にファイルシステムリダイレクタ12に常に通知する。
 これより、ファイルシステムリダイレクタ12は、あるプロセスのpidが監視対象として登録されると、当該プロセスを起点として生成・起動されるすべての子孫プロセスのpidを監視対象として自動的に登録する。
 さらに、OS起動の一環としてシステム領域のすべてのプロセスの起動が完了すると、ステップS4に進む。
 ステップS4では、すべてのユーザへの共通サービスとしてプログラム動作監視サービスを提供すべく、全体制御部20が共通ユーザ領域で起動する。
 全体制御部20は、起動の際、自らのpidを、監視対象となるすべてのプロセスのルートプロセスとして、レジストリリダイレクタ11に登録する。これにより、全体制御部20を起点として生成・起動されるすべての子孫プロセスのpidは、既に起動されているレジストリリダイレクタ11によって、監視対象として自動的に登録される。
 さらに、全体制御部20は、個別ユーザ領域に任意のプロセスが生成された場合に、当該プロセスがその内部に印刷動作監視部32P及びクリップボード動作監視部32Cを取り込んでおくように、OSに対して予め指示を出しておく。
 例えば、OSがマイクロソフト社のWindows(登録商標)の場合、全体制御部20は、プロセス起動の際に当該プロセスが所定のフックプロシージャをインストールするように、OSに予め指示するとよい。
 ステップS5では、全体制御部20は、プログラム動作監視サービスの実行開始を依頼するユーザのサインインを検出したか否かを判定する。当該ユーザのサインインが検出された場合はステップS6に進み、検出されていない場合はステップS13に進む。
 ステップS6では、全体制御部20は、当該ユーザのコンピュータへのログオンをトリガーとして生成された当該ユーザ用の個別ユーザ領域において、監視対象ユーザプロセス生成部31を自らの子プロセスとして生成・起動する。
 ここで、全体制御部20は、監視対象となるすべてのプロセスの起点となるルートプロセスとして、その起動時(ステップS4)に、自らのpidを監視対象としてレジストリリダイレクタ11に登録している。このため、全体制御部20の子プロセスである監視対象ユーザプロセス生成部31及びそれを起点として生成・起動される監視対象ユーザプロセス32並びにそのすべての子孫プロセスのpidもまた、監視対象としてレジストリリダイレクタ11にて自動的に登録される。
 また、監視対象ユーザプロセス生成部31の起動と同時に、プログラム動作監視サービスのユーザインターフェイス(プログラム動作監視サービスUI)がユーザに提示される。プログラム動作監視サービスUIには、後述する隔離フォルダのフォルダツリー構造、選択可能な隔離フォルダ内のコピーファイル(コピーファイルがないときはブランク表示)、動作監視可能なプログラムにリンクされたアイコンなどが表示される。ユーザが所望のコピーファイルあるいはプログラムにリンクされたアイコンを選択すると、選択されたアイコンに関連付けられたプログラムがサンドボックス内で実行され、その実行主体としての監視対象ユーザプロセス32の動作を監視すべく、ステップS7に進む。
 ステップS7では、全体制御部20は、プロセス動作の監視を実行する。具体的には、後述する図10に示すプロセス動作監視ルーチンが実行される。
 ステップS8では、全体制御部20は、プログラム動作監視サービスの実行を依頼したユーザのサインアウトを検出したか否かを判定する。上記ユーザのサインアウトが検出された場合はステップS9に進み、検出されていない場合はステップS7に戻る。したがって、サインアウトが検出されるまで、ステップS7の処理が実行される。
 ステップS9では、全体制御部20は、当該ユーザに提供したプログラム動作監視サービスの終了処理を実行する。具体的には、全体制御部20は、当該ユーザ用の個別ユーザ領域において生成・起動されたすべての監視対象ユーザプロセス32及びその子孫プロセスを停止させる。
 ステップS10では、当該ユーザのために所定の隔離フォルダに生成、保持されたすべてのコピーファイルが削除される。なお、後述するように、当該隔離フォルダ内には、オリジナルファイルのコピーファイルと各コピーファイルを格納するフォルダから構成されるフォルダツリー構造が厳密に再現されている。
 ステップS11では、当該ユーザのために所定の保護領域に生成されたすべてのレジストリ代替キーが削除される。
 ステップS12では、当該ユーザ用の個別ユーザ領域にて生成・起動された監視対象ユーザプロセス生成部31が停止する。
 なお、監視対象ユーザプロセス32からの利用要求をトリガーとして共通ユーザ領域にて生成・起動された監視対象分散オブジェクトサーバ21があった場合、当該監視対象分散オブジェクトサーバ21は、当該ユーザ以外のユーザに割り当てられた個別ユーザ領域における監視対象ユーザプロセス32などからの利用要求に対応できるように、この時点では停止しない。
 ステップS13では、全体制御部20は、システムのシャッタダウンを検出したか否かを判定する。シャットダウンが検出された場合はステップS14に進み、検出されない場合はステップS5に戻る。
 ステップS14では、全体制御部20は、共通ユーザ領域にて生成・起動された監視対象分散オブジェクトサーバ21があった場合、すべての監視対象分散オブジェクトサーバ21を停止させる。
 ステップS15では、全体制御部20が停止する。そして、ステップS16ではファイルシステムリダイレクタ12が停止し、ステップS17ではレジストリリダイレクタ11が停止する。
 ステップS18では、システム領域の全機能及びOSが停止する。
 次に、監視対象ユーザプロセス32の各種動作に対するプログラム動作監視システム1の具体的な動作処理について説明する。
 本実施形態において監視対象とするプロセスの動作は、印刷動作、クリップボード動作、レジストリアクセス動作、及びファイルアクセス動作である。印刷動作及びクリップボード動作は、監視対象ユーザプロセス32の生成・起動時にその内部に取り込まれた印刷動作監視部32P及びクリップボード動作監視部32Cによって、それぞれ監視される。
 レジストリアクセス動作、及びファイルアクセス動作は、システム領域で動作するレジストリリダイレクタ11及びファイルシステムリダイレクタ12によって、それぞれ監視される。
 図4は、プロセスの内部に取り込まれた印刷動作監視部32Pによる印刷動作監視ルーチンを示すフローチャートである。個別ユーザ領域で任意のプロセスが起動されると、本印刷動作監視ルーチンがその内部において実行される。
 ステップS21では、プロセス(内部に取り込まれた印刷動作監視部32P)は、その起動時において、自らが監視対象であるか、具体的には、自らのpidが監視対象のものであるかについて全体制御部20に照会する。
 ステップS22では、印刷動作監視部32Pは、自身を内部に取り込んだプロセスの印刷動作を検出したか否かを判定する。印刷動作監視部32Pが当該印刷動作を検出した場合はステップS23へ進み、検出していない場合はステップS22に待機する。
 ステップS23では、印刷動作監視部32Pは、ステップS21の照会結果に基づいて、自らが監視対象であるか否かを判定する。自らが監視対象である場合はステップS24へ進み、監視対象でない場合はステップS22へ戻る。
 ステップS24では、印刷動作監視部32Pは、印刷動作を拒否して、ステップS22へ戻る。
 このような印刷動作監視ルーチンは、例えばOSがマイクロソフト社のWindows(登録商標)の場合、OpenPrinter APIに注入されたフックによって実現される。
 図5は、プロセスの内部に取り込まれたクリップボード動作監視部32Cによるクリップボード動作監視ルーチンを示すフローチャートである。個別ユーザ領域で任意のプロセスが起動されると、本クリップボード動作監視ルーチンがその内部において実行される。
 ステップS31では、プロセス(内部に取り込まれたクリップボード動作監視部32C)は、その起動時において、自らが監視対象であるか、具体的には、自らのpidが監視対象のものであるかについて全体制御部20に照会する。
 ステップS32では、クリップボード動作監視部32Cは、自身を内部に取り込んだプロセスのクリップボードへのデータ登録動作を検出したか否かを判定する。データ登録動作を検出した場合はステップS33へ進み、検出していない場合はステップS35へ進む。
 ステップS33では、クリップボード動作監視部32Cは、ステップS31の照会結果に基づいて、自らが監視対象であるか否かを判定する。自らが監視対象である場合はステップS34へ進み、監視対象でない場合はステップS32へ戻る。
 ステップS34では、クリップボード動作監視部32Cは、自らがデータ登録プロセスであることを示すべく、自らのpidを所定の共有メモリに登録する。
 このようなクリップボード動作監視ルーチンにおける自らのデータ登録動作を検出した場合の処理は、例えばOSがマイクロソフト社のWindows(登録商標)の場合、SetClipboardData APIに注入されたフックによって実現される。
 一方、ステップS35では、クリップボード動作監視部32Cは、自身を内部に取り込んだプロセスのクリップボードからのデータ取得動作を検出したか否かを判定する。データ取得動作を検出した場合はステップS36へ進み、検出していない場合はステップS32に戻る。
 ステップS36では、クリップボード動作監視部32Cは、ステップS31の照会結果に基づいて、自らが監視対象であるか否かを判定する。自らが監視対象である場合はステップS38へ進み、監視対象でない場合はステップS37へ進む。
 ステップS37では、クリップボード動作監視部32Cは、上述の共有メモリにおけるデータ登録プロセスのpid登録があるか否かを判定する。pid登録がある場合はステップS39へ進み、pid登録がない場合はステップS38へ進む。
 ステップS38では、クリップボード動作監視部32Cは、取得したデータの自らへの貼り付け動作を許可する。そして、ステップS32へ戻る。
 ステップS37でpid登録がないと判定された場合、データを登録したデータ登録プロセスは監視対象になっていない。つまり、ステップS35のデータ取得動作は、監視対象でない通常のプロセス間でのクリップボードを介したデータのやり取りに該当する。よって、ステップS38において、取得データの自らへの貼り付け動作が許可される。
 ステップS39では、クリップボード動作監視部32Cは、取得したデータの自らへの貼り付け動作を拒否する。そして、ステップS32へ戻る。
 ステップS37でpid登録があると判定された場合、データを登録したデータ登録プロセスは監視対象になっている。つまり、ステップS35のデータ取得動作は、監視対象とするプロセスから監視対象でないプロセスへのデータの移動に該当する。換言すれば、上述のデータ取得動作は、サンドボックス内で実行されるプログラムが取り扱う機密データをサンドボックスの外部で実行されるプログラムへと持ち出す行為となる。よって、ステップS39において、取得データの自らへの貼り付け動作が拒否される。
 このようなクリップボード動作監視ルーチンにおける自らのデータ取得動作を検出した場合の処理は、例えばOSがマイクロソフト社のWindows(登録商標)の場合、GetClipboardData APIに注入されたフックによって実現される。
 ところで、先述したように、レジストリリダイレクタ11は、新たなプロセスが生成・起動される度に、OSからその旨の通知を、当該プロセス及びその親プロセスのpidと共に常に取得し、取得した情報を活用する。
 具体的には、本実施形態において、レジストリリダイレクタ11には、レジストリ保護という本来の役割だけでなく、図2のステップS2で説明したOSからの通知を活用して、監視対象とするすべてのプロセスのpidを管理するという役割もある。
 つまり、すべての監視対象プロセスのpidは、レジストリリダイレクタ11によって管理される。具体的には、レジストリリダイレクタ11は、図2のステップS4で説明したように、全体制御部20からpidの登録通知を受けると、登録通知のあったpidをその内部に保有する監視対象プロセスリストに登録する。また、レジストリリダイレクタ11は、全体制御部20などからpidの登録照会通知を受けると、登録照会通知のあったpidを当該監視対象プロセスリストに照会することで、全体制御部20などからの問い合わせに応答する。
 レジストリリダイレクタ11は、プロセスの新規生成やレジストリアクセスに関する通知などをOSから取得したり、pidの登録通知や登録照会通知を全体制御部20などから取得したりすると、以下に示すレジストリ保護ルーチンを実行する。
 図6及び図7は、レジストリリダイレクタ11によるレジストリ保護ルーチンを示すフローチャートである。
 ステップS41では、レジストリリダイレクタ11は、全体制御部20からpid登録通知を取得したか否かを判定する。pid登録通知を取得した場合はステップS42へ進み、取得していない場合はステップS43へ進む。
 ステップS42では、レジストリリダイレクタ11は、全体制御部20から取得したpidを監視対象プロセスリストに登録する。そして、ステップS41に戻る。
 ステップS43では、レジストリリダイレクタ11は、全体制御部20などからpid照会通知を取得したか否かを判定する。pid照会通知を取得した場合はステップS44に進み、pid照会通知を取得していない場合はステップS45へ進む。
 ステップS44では、レジストリリダイレクタ11は、取得したpidが監視対象プロセスリストに登録されているか照会して、その照会結果を全体制御部20などに対して応答する。そして、ステップS41に戻る。
 ステップS45では、レジストリリダイレクタ11は、OSからプロセスの新規生成・起動通知を取得したか否かを判定する。プロセスの新規生成・起動通知を取得した場合はステップS46へ進み、プロセスの新規生成・起動通知を取得していない場合はステップS48へ進む。なお、プロセスの新規生成・起動通知には、新規生成・起動されたプロセスのpidだけでなく、当該プロセスの親プロセスのpidも含まれる。
 ステップS46では、レジストリリダイレクタ11は、OSからプロセスの新規生成・起動通知を取得した際に取得した、当該プロセスの親プロセスのpidが監視対象プロセスリストに登録されているか否か、つまり、親プロセスが監視対象であるか否かを判定する。親プロセスが監視対象の場合はステップS47へ進み、監視対象でない場合はステップS41に戻る。
 ステップS47では、レジストリリダイレクタ11は、新規生成・起動されたプロセスのpidを監視対象プロセスリストに登録する。そして、ステップS41へ戻る。このようにして、新規生成・起動されたプロセスの親プロセスが監視対象であった場合には、当該プロセスも監視対象にする必要があるので、当該プロセスのpidが監視対象プロセスリストに登録される。
 この結果、全体制御部20がその起動時(図2のステップS4)に自らのpidをレジストリリダイレクタ11に登録することによって、全体制御部20を起点として生成されるすべてのプロセス(子孫プロセス)が監視対象プロセスリストに登録される。
 監視対象プロセスリストに登録されるすべてのプロセスは、具体的には、次の(1)~(4)が該当する。
(1)全体制御部20
(2)全体制御部20の子プロセスとして生成・起動される監視対象ユーザプロセス生成部31
(3)ユーザが所望のプログラムのサンドボックス内での実行を指定した際に監視対象ユーザプロセス生成部31の子プロセスとして生成・起動される監視対象ユーザプロセス32並びにその子孫プロセス
(4)全体制御部20内の監視対象分散オブジェクトサーバ生成部20Gによってその子プロセスとして生成・起動される監視対象分散オブジェクトサーバ21並びにその子孫プロセス
 ステップS48では、レジストリリダイレクタ11は、OSからプロセス終了通知を取得したか否かを判定する。プロセス終了通知を取得した場合はステップS49へ進み、取得していない場合はステップS50へ進む。
 ステップS49では、レジストリリダイレクタ11は、プロセス終了通知と共に当該プロセスのpidを取得し、取得したpidを用いて、終了したプロセスのpidを監視対象プロセスリストから削除する。そして、ステップS41に戻る。
 ステップS50以降では、レジストリ保護のための処理が実行される。
 ステップS50では、レジストリリダイレクタ11は、OSからレジストリアクセス通知を取得したか否かを判定する。レジストリアクセス通知とは、任意のプロセスがレジストリにアクセスをしようとする度にOSから常に送られる通知をいう。なお、レジストリアクセス通知は、レジストリにアクセスしようとしたプロセスのpid及びアクセス内容を含んでいる。レジストリアクセス通知を取得した場合にはステップS51へ進み、取得していない場合はステップS41へ戻る。
 ステップS51では、レジストリリダイレクタ11は、レジストリアクセス通知と共に取得したプロセスのpidを用いて、自らが保有する監視対象プロセスリストに照会して、レジストリにアクセスしようとするプロセスが監視対象であるか否かを判定する。プロセスが監視対象である場合はステップS52に進み、プロセスが監視対象でない場合はステップS41に戻る。
 これより、レジストリリダイレクタ11は、監視対象プロセス32がレジストリにアクセスしようとする毎に、レジストリを保護するために、次のステップS52以降の処理を実行する。
 ステップS52では、レジストリリダイレクタ11は、OSからの通知に基づいて、レジストリキーのオープン動作を検出したか否かを判定する。レジストリキーのオープン動作を検出した場合はステップS53へ進み、レジストリキーのオープン動作を検出していない場合はステップS54へ進む。
 ステップS53では、レジストリリダイレクタ11は、指定されたオリジナルキーの代替となるレジストリ代替キーを所定の保護領域に生成し、そのレジストリ代替キーをオープンする。そして、ステップS41に戻る。
 ステップS54では、レジストリリダイレクタ11は、OSからの通知に基づいて、レジストリキーの値の読み出し動作を検出したか否かを判定する。レジストリキーの値の読み出し動作を検出した場合はステップS55へ進み、レジストリキーの値の読み出し動作を検出していない場合はS56へ進む。
 ステップS55では、レジストリリダイレクタ11は、指定されたオリジナルキーの値を(前出のレジストリキーのオープン動作対応にて生成済みの)レジストリ代替キーにコピーし、その値を返す。そして、ステップS41に戻る。
 ステップS56では、レジストリリダイレクタ11は、OSからの通知に基づいて、レジストリキーの値の書き込み動作を検出したか否かを判定する。レジストリキーの値の書き込み動作を検出した場合にはステップS57へ進み、レジストリキーの値の書き込み動作を検出していない場合はステップS58へ進む。
 ステップS57では、レジストリリダイレクタ11は、指定された値を(前出のレジストリキーのオープン動作対応にて生成済みの)レジストリ代替キーに書き込む。そして、ステップS41へ戻る。
 ステップS58では、レジストリリダイレクタ11は、OSからの通知に基づいて、レジストリキーのクローズ動作を検出したか否かを判定する。レジストリキーのクローズ動作を検出した場合はステップS59へ進み、レジストリキーのクローズ動作を検出していない場合はステップS41へ戻る。
 ステップS59では、レジストリリダイレクタ11は、(前出のレジストリキーのオープン動作対応にて生成済みの)レジストリ代替キーをクローズする。そして、ステップS41に戻る。
 なお、所定の保護領域に生成されたレジストリ代替キーは、ユーザのサインアウト検出後に、すべて削除される(図3のステップS11)。
 図8及び図9は、ファイルシステムリダイレクタ12によるファイル保護ルーチンを示すフローチャートである。
 ファイルシステムリダイレクタ12は、任意のプロセスがファイルオープンしようとする度に又は任意のフォルダに含まれるファイル名の一覧表示を要求される度に、OSから、それらの動作を示す通知(当該プロセスのpidを含む。)を取得して、以下に示すファイル保護ルーチンを実行する。
 なお、ファイルシステムリダイレクタ12は、詳細な内容は省略するが、レジストリリダイレクタ11と同様に、監視対象プロセスのpidを管理することも可能である。
 ステップS61では、ファイルシステムリダイレクタ12は、OSからの通知を取得して、ファイルオープン動作を検出したか否かを判定する。ファイルオープン動作を検出した場合はステップS62へ進み、ファイルオープン動作を検出していない場合はステップS69へ進む。
 ステップS62では、ファイルシステムリダイレクタ12は、ファイルをオープンしようとするプロセスが監視対象であるか否かを判定する。ここでは、ファイルシステムリダイレクタ12は、OSからの通知に含まれるpidを用いて、全体制御部20ではなく、レジストリリダイレクタ11に対して直接照会する。
 ファイルシステムリダイレクタ12がレジストリリダイレクタ11に直接照会する理由は、次の通りである。レジストリリダイレクタ11とファイルシステムリダイレクタ12は共にシステム領域に存在していることから、あるプロセスが監視対象であるか否かについて、ファイルシステムリダイレクタ12が異なる領域(共通ユーザ領域)に存在する全体制御部20を介在させてレジストリリダイレクタ11に照会するよりも、レジストリリダイレクタ11に直接照会した方が、効率が良いからである。
 先述したように、ファイルシステムリダイレクタ12は、レジストリリダイレクタ11と同様、監視対象プロセスのpidを管理することもできる。この場合は、ファイルシステムリダイレクタ12は、自らが保有する監視対象プロセスリストに対して当該照会を行えばよい。
 ステップS63では、ファイルシステムリダイレクタ12は、OSからの通知に基づいて、プロセスが隔離フォルダ内のファイルをオープンしようとしているか否かを判定する。隔離フォルダ内のファイルをオープンしようとしている場合はステップS65へ進み、隔離フォルダ内のファイル以外のファイルをオープンしようとしている場合はステップS64へ進む。
 ステップS64では、ファイルシステムリダイレクタ12は、OSからの通知の中に書込フラグがあるか否かを判定する。書込フラグは、ファイルオープン動作において、対象とするファイルの内容の編集を可能とするフラグである。書込フラグがある場合はステップS66へ進み、書込フラグがない場合はステップS65へ進む。
 ステップS65では、ファイルシステムリダイレクタ12は、プロセスのファイルオープン動作を許可する。そして、ステップS61に戻る。
 つまり、監視対象プロセス(ステップS62の肯定判定)が、隔離フォルダ内のファイルをオープンしようする場合(ステップS63の肯定判定)、又は隔離フォルダ内のファイル以外のファイル(既存の通常ファイル)について(ステップS63の否定判定)、内容の編集をせずに単に読み出しをしようとする場合(ステップS64の否定判定)、ファイルオープン動作を許可する。
 ステップS66では、ファイルシステムリダイレクタ12は、指定のオリジナルファイルのコピーファイルを隔離フォルダ内に生成して、この隔離フォルダ内のコピーファイルをオープンする。これにより、隔離フォルダ内での当該コピーファイルに対する編集作業が可能になる。そして、ステップS61に戻る。
 ステップS67では、OSからの通知に基づいて、監視対象でないプロセスが隔離フォルダ内のファイルをオープンしようとしているか否かを判定する。隔離フォルダ内のファイルをオープンしようとしている場合はステップS68へ進み、隔離フォルダ内のファイル以外のファイルをオープンしようとしている場合はステップS65へ進む。
 プロセスが、監視対象ではなく、隔離フォルダ内のファイル以外のファイルをオープンしようとする場合は、通常のファイルオープン動作である。このため、ファイルのオープンが許可される(ステップS65)。
 ステップS68では、ファイルシステムリダイレクタ12は、ファイルオープン動作を拒否する。つまり、監視対象でないプロセスが隔離フォルダ内のファイルをオープンしようとした場合に、ファイルオープン動作が拒否される。そして、ステップS61に戻る。
 ステップS69では、ファイルシステムリダイレクタ12は、OSからの通知に基づいて、所定のフォルダに含まれるファイル名の一覧表示要求を検出したか否かを判定する。一覧表示要求を検出した場合はステップS70へ進み、一覧表示要求を検出していない場合はステップS61に戻る。
 ステップS70では、ファイルシステムリダイレクタ12は、ファイル名一覧表示を要求するプロセスが監視対象であるか否かを判定する。ここでは、ステップS62と同様の処理が行われる。そして、上記のプロセスが監視対象である場合はステップS71へ進み、監視対象でない場合はステップS76へ進む。
 ステップS71では、ファイルシステムリダイレクタ12は、上記のプロセスが指定するフォルダに含まれるファイル名一覧(第1のファイル名一覧)を入手する。
 ステップS72では、ファイルシステムリダイレクタ12は、隔離フォルダに含まれるファイル名一覧(第2のファイル名一覧)を入手する。
 ステップS73では、ファイルシステムリダイレクタ12は、第1のファイル名一覧と第2のファイル名一覧とを比較して、同一ファイル名があるか否かを判定する。同一ファイル名がある場合はステップS74へ進み、それがない場合はステップS75へ進む。
 ステップS74では、ファイルシステムリダイレクタ12は、第1のファイル名一覧をベースにした上で、ファイル名が同一のものについては、隔離フォルダから入手した第2のファイル名一覧の関連情報を優先して第1のファイル名一覧に上書きする。このようにして、ファイルシステムリダイレクタ12は、第1のファイル名一覧と第2のファイル名一覧とをマージする。
 ステップS75では、ファイルシステムリダイレクタ12は、マージされたファイル名一覧を要求元プロセスに返す。そして、ステップS61に戻る。
 ここで、隔離フォルダの内部では、オリジナルファイルのコピーファイルと各コピーファイルを格納するフォルダから構成されるフォルダツリー構造が厳密に再現されている。そして、ファイル名一覧の比較では、指定されたフォルダ内のファイル名と、隔離フォルダ内のファイル名とが、隔離フォルダのルートフォルダ名の部分を除いて比較される。
 例えば、指定されたフォルダ内のオリジナルファイルが「¥¥マイドキュメント¥メモ.txt」であり、それに対応する隔離フォルダ内のコピーファイルが「..¥隔離フォルダ¥マイドキュメント¥メモ.txt」である場合、隔離フォルダのルートフォルダ名である「..¥隔離フォルダ」部分が除外され、ファイル名が比較される。
 これより、監視対象プロセスが内容の編集を目的として任意のフォルダ内のファイルを指定した場合、実際には、指定されたファイルの代替ファイルとして当該ファイルに対応した隔離フォルダ内のコピーファイルが指定される。そして、このコピーファイルがオープンされ、編集される。
 なお、本実施形態では、監視対象プロセスがファイルオープン動作を実行した後、監視対象プロセスによる内容の編集自体は、ファイルクローズ動作時も含めて監視対象外となる。
 また、本ルーチンによって隔離フォルダに生成されたコピーファイルは、ユーザのサインアウト検出後に、すべて削除される(図3のステップS10)。
 図10は、全体制御部20によるプロセス動作監視ルーチンを示すフローチャートである。プロセス動作監視ルーチンでは、監視対象プロセスの照会(ステップS81~ステップS87)、及び監視対象分散オブジェクトサーバの生成・起動(ステップS88~ステップS90)が行われる。
 ステップS81では、全体制御部20は、他の機能ブロック(任意のプロセス)からの依頼を受信する。例えば、あるプロセスが新規生成・起動された場合、当該プロセスは、自らが監視対象であるか否かを確認するために、全体制御部20に対して問い合わせを行う。また、後述するように、分散オブジェクト生成管理部13は、監視対象ユーザプロセス32から分散オブジェクトサーバの生成依頼を受信すると、全体制御部20に対して監視対象分散オブジェクトサーバ21の生成を依頼する。
 ステップS82では、全体制御部20は、受信した依頼が監視対象の問い合わせであるか否かを判定する。監視対象の問い合わせである場合はステップS83へ進み、監視対象の問い合わせでない場合はステップS88へ進む。
 ステップS83では、全体制御部20は、受信した依頼の中から、問い合わせのあったプロセスのpidを取得する。
 ステップS84では、全体制御部20は、取得したpidを用いてレジストリリダイレクタ11に照会を行う。
 ステップS85では、全体制御部20は、レジストリリダイレクタ11から、問い合わせのあったプロセスが監視対象であるか否かの照会に対する応答を受け取る。問い合わせのあったプロセスが監視対象である場合はステップS86へ進み、監視対象でない場合はステップS87へ進む。
 ステップS86では、全体制御部20は、問い合わせのあったプロセスに対して、当該プロセスが監視対象である旨の肯定応答を返す。そして、ステップS81へ戻る。
 ステップS87では、全体制御部20は、問い合わせのあったプロセスに対して、当該プロセスが監視対象でない旨の否定応答を返す。そして、ステップS81へ戻る。
 一方、ステップS88では、全体制御部20は、ステップS81で受信した依頼が分散オブジェクト生成管理部13からの監視対象分散オブジェクトサーバ21の生成・起動依頼であるか否かを判定する。監視対象分散オブジェクトサーバ21の生成・起動依頼である場合はステップS89へ進み、監視対象分散オブジェクトサーバ21の生成・起動依頼でない場合はステップS81に戻る。
 ステップS89では、全体制御部20は、自身が内部に保有する監視対象分散オブジェクトサーバ生成部20Gに次の処理を実行させる。すなわち、監視対象分散オブジェクトサーバ生成部20Gは、自らの子プロセスとして、依頼のあった監視対象分散オブジェクトサーバ21を生成・起動する。
 ステップS90では、全体制御部20は、監視対象分散オブジェクトサーバ生成部20Gによって生成・起動された監視対象分散オブジェクトサーバ21のpidを、依頼元である分散オブジェクト生成管理部13に返す。そして、再びステップS81に戻る。
 通常動作の一環として、分散オブジェクト生成管理部13は、分散オブジェクトサーバが監視対象に該当するか否かに関わらず、すべての分散オブジェクトサーバのpidを管理している。分散オブジェクト生成管理部13は、さらに、全体制御部20によって監視対象分散オブジェクトサーバ21が生成・起動された場合でも、監視対象分散オブジェクトサーバ21のpidを管理する必要がある。
 そこで、全体制御部20は、生成・起動した監視対象分散オブジェクトサーバ21のpidを、分散オブジェクト生成管理部13へ通知し、登録させる。これにより、分散オブジェクト生成管理部13は、分散オブジェクトサーバが監視対象に該当するか否かに関わらず、常に、すべての分散オブジェクトサーバのpidを管理することができる。
 ここで、監視対象分散オブジェクトサーバ21の親プロセスである全体制御部20は、監視対象としてレジストリリダイレクタ11に登録されている。したがって、図10に示すプロセス動作監視ルーチンが実行された結果、全体制御部20の子プロセスである監視対象分散オブジェクトサーバ21及びこれを起点として生成・起動されるすべての子孫プロセスもまた、監視対象としてレジストリリダイレクタ11に自動的に登録される。
 次に、監視対象ユーザプロセス32が分散オブジェクト生成管理部13に所望の分散オブジェクトサーバの利用要求を行った場合の処理手順の概要について説明する。
 図11は、プログラム動作監視システム1の要部ブロック図である。図11では、(1)から(6)の順番で処理が実行される。
(1)任意の監視対象ユーザプロセス32が、分散オブジェクト生成管理部13に対して、監視対象分散オブジェクトサーバ21の利用要求を送信する。
(2)分散オブジェクト生成管理部13は、利用要求元プロセスが監視対象である場合、全体制御部20に対して所定の通知(実行対象ファイルや実行権限などの起動方法の通知も含む。)を行うことで、利用要求のあった監視対象分散オブジェクトサーバ21の生成・起動を依頼する。
(3)全体制御部20は、分散オブジェクト生成管理部13からの依頼を受けて、その内部に保有する監視対象分散オブジェクトサーバ生成部20Gを用いて、利用要求のあった分散オブジェクトサーバを監視対象分散オブジェクトサーバ21として生成・起動する。
(4)全体制御部20は、分散オブジェクト生成管理部13への応答として、生成・起動した監視対象分散オブジェクトサーバ21のpidを返信する。
(5)分散オブジェクト生成管理部13は、生成・起動された監視対象分散オブジェクトサーバ21へのアクセス方法を含む応答を、利用要求元プロセスに返信する。
(6)監視対象ユーザプロセス32(利用要求元プロセス)は、分散オブジェクト生成管理部13から受信した監視対象分散オブジェクトサーバ21へのアクセス方法に基づいて、当該監視対象分散オブジェクトサーバ21と通信する。
 次に、監視対象ユーザプロセス32が分散オブジェクト生成管理部13に所望の分散オブジェクトサーバの利用要求を行った場合の具体的な処理手順について説明する。具体的には、図11の(1)、(2)、(4)及び(5)に関する分散オブジェクト生成管理部13の具体的な処理を説明する。
 図12及び図13は、分散オブジェクト生成管理部13による分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。
 ステップS101では、分散オブジェクト生成管理部13は、任意のプロセスから所望の分散オブジェクトサーバの利用要求があるか否かを判定する。利用要求がある場合はステップS102へ進み、利用要求がない場合はステップS101で待機する。
 ステップS102では、分散オブジェクト生成管理部13は、当該所望の分散オブジェクトサーバの利用要求を受けて、利用要求元プロセスのpid(利用要求に含まれるpid)を取得する。
 ステップS103では、分散オブジェクト生成管理部13は、利用要求のあった分散オブジェクトサーバが稼働中であるか否かを判定する。稼働中である場合はステップS108へ進み、稼働中でない場合はステップS104へ進む。
 ステップS104では、分散オブジェクト生成管理部13は、取得したpidを用いてレジストリリダイレクタ11に直接照会を行って、利用要求元プロセスが監視対象であるか否かを判定する。当該プロセスが監視対象である場合はステップS105へ進み、監視対象でない場合はステップS106へ進む。
 レジストリリダイレクタ11と分散オブジェクト生成管理部13は、共にシステム領域に存在する。そのため、分散オブジェクト生成管理部13は、共通ユーザ領域に存在する全体制御部20を介在させることなく、レジストリリダイレクタ11に直接照会することができる。
 ステップS105では、分散オブジェクト生成管理部13は、全体制御部20に対して、監視対象分散オブジェクトサーバ21の生成・起動を依頼する。
 全体制御部20は、分散オブジェクト生成管理部13から上記の依頼を受けると、自身の内部に保有する監視対象分散オブジェクトサーバ生成部20Gに次の処理を実行させる。
 すなわち、監視対象分散オブジェクトサーバ生成部20Gは、自らの子プロセスとして、依頼のあった監視対象分散オブジェクトサーバ21を生成・起動する(図10のステップS89)。そして全体制御部20は、自らの子プロセスとして生成・起動した監視対象分散オブジェクトサーバ21のpidを分散オブジェクト生成管理部13へ通知する(ステップS90)。
 そして、分散オブジェクト生成管理部13は、全体制御部20から監視対象分散オブジェクトサーバ21のpidを取得し、ステップS107へ進む。
 ステップS106では、分散オブジェクト生成管理部13は、自らの子プロセスとして、監視対象でない分散オブジェクトサーバを生成・起動して、当該分散オブジェクトサーバのpidを取得する。
 ステップS107では、分散オブジェクト生成管理部13は、取得したpidを用いて、新たに生成・起動された分散オブジェクトサーバの管理を開始する。
 ステップS108では、分散オブジェクト生成管理部13は、現在稼働中の所望の分散オブジェクトサーバが監視対象であるか否かを判定する。ここまで、分散オブジェクト生成管理部13は、監視対象となる分散オブジェクトサーバについては全体制御部20からそのpidを取得し(ステップS105)、監視対象でない分散オブジェクトサーバについては自身がそれを生成・起動し、そのpidを取得してきた(ステップS106)。
 これより、分散オブジェクト生成管理部13は、全体制御部20又はレジストリリダイレクタ11にpidを照会することなく、稼働中の分散オブジェクトサーバのpidの取得状況に基づいて、当該分散オブジェクトサーバが監視対象であるか否かを自ら判定することができる。すなわち、分散オブジェクト生成管理部13は、この判定結果を保持する機能を有し、当該機能を利用することで、前述の分散オブジェクトサーバが監視対象であるか否を判定してもよい。
 分散オブジェクト生成管理部13は、現在稼働中の分散オブジェクトサーバが監視対象であるか否かの判定結果を保持する機能を有しない場合は、自らが管理する当該稼働中の所望の分散オブジェクトサーバのpidを同定し、これをレジストリリダイレクタ11に直接照会を行うことで、当該稼働中の所望の分散オブジェクトサーバが監視対象であるか否かを判定してもよい。そして、当該稼働中の所望の分散オブジェクトサーバが監視対象である場合はステップS109へ進み、監視対象でない場合はステップS110へ進む。
 ステップS109では、分散オブジェクト生成管理部13は、ステップS102で取得した利用要求元プロセスのpidを用いてレジストリリダイレクタ11に直接照会を行って、当該利用要求元プロセスが監視対象であるか否かを判定する。当該利用要求元プロセスが監視対象である場合はステップS111へ進み、監視対象でない場合はステップS112へ進む。
 ステップS110では、分散オブジェクト生成管理部13は、ステップS109と同様に、当該利用要求元プロセスが監視対象であるか否かを判定する。当該利用要求元プロセスが監視対象である場合はステップS112へ進み、監視対象でない場合はステップS111へ進む。
 ステップS111では、次の状態1又は状態2になっている。
(状態1)所望の分散オブジェクトサーバは監視対象(監視対象分散オブジェクトサーバ21)であり、さらに、その利用要求元プロセスも監視対象(監視対象ユーザプロセス32)である。このとき、利用要求元の監視対象ユーザプロセス32が所望の監視対象分散オブジェクトサーバ21にアクセスしても、共に監視対象であるので、問題は生じない。
(状態2)所望の分散オブジェクトサーバは監視対象ではなく、さらに、その利用要求元プロセスも監視対象ではない。これは通常動作であり、このとき、利用要求元プロセスが所望の分散オブジェクトサーバにアクセスしても、共に監視対象外にあるので、問題は生じない。
 そこで、分散オブジェクト生成管理部13は、利用要求元プロセスに対して、所望の分散オブジェクトサーバへのアクセス方法を含む応答を返す。そして、再びステップS101に戻る。
 なお、所望の分散オブジェクトサーバが稼働していない場合(ステップS103の否定判定)、ステップS104からステップS107までの処理が実行され、所望の分散オブジェクトサーバが生成・起動される。この場合、利用要求元プロセスが監視対象であれば、生成された分散オブジェクトサーバも監視対象(監視対象分散オブジェクトサーバ21)となる。一方、利用要求元プロセスが監視対象でなければ(通常プロセスであれば)、生成・起動された分散オブジェクトサーバも監視対象ではない。
 したがって、利用要求元プロセスの利用要求に応じて、ステップS104からステップS107までの処理によって所望の分散オブジェクトサーバが新規生成・起動された場合は、ステップS108及びステップS109で共に肯定判定となるか、ステップS108及びステップS110で共に否定判定となる。その結果、分散オブジェクト生成管理部13は、利用要求元プロセスによる所望の分散オブジェクトサーバの利用要求を必ず許可し、当該分散オブジェクトサーバへのアクセス方法を含む応答を返すことになる(ステップS111)。
 ステップS112では、次の状態3又は状態4になっている。
(状態3)所望の分散オブジェクトサーバは監視対象(監視対象分散オブジェクトサーバ21)であるが、その利用要求元プロセスは監視対象ではない。
(状態4)所望の分散オブジェクトサーバは監視対象ではないが、その利用要求元プロセス(監視対象ユーザプロセス32)は監視対象である。
 状態3あるいは状態4の状況は、あるプロセスが所望する分散オブジェクトサーバが、他のユーザのプロセスからの利用要求に基づいて既に稼働しており(ステップS103の肯定判定)、ステップS104からステップS107までの処理が実行されなかった場合に起こり得る。すなわち、当該他のユーザのプロセスが監視対象でなかった場合、当該稼働中の所望の分散オブジェクトサーバもまた監視対象でない。従って、もし利用要求元プロセスが監視対象であった(監視対象ユーザプロセス32)ならば、状態4の状況となる。
 このような状況で、利用要求元プロセスから所望の分散オブジェクトサーバへのアクセスを許可すると、いずれか一方のプログラム動作の監視漏れが生じてしまう。
 そこで、ステップS112では、分散オブジェクト生成管理部13は、利用要求元プロセスに対して、所望の分散オブジェクトサーバへのアクセス拒否応答を返す。そして、再びステップS101に戻る。
 なお、ステップS112で示したアクセス拒否応答を解決するためには、現在稼働中の所望の分散オブジェクトサーバを一旦停止し、その後、当該所望の分散オブジェクトサーバを、利用要求元プロセスと同じ監視状況(監視対象であるか否か)で再起動する必要がある。その理由は次の通りである。
 レジストリリダイレクタ11及びファイルシステムリダイレクタ12は、監視対象分散オブジェクトサーバ21が存在する場合に、特殊な保護動作を行う(図6から図9参照)。これより、仮に稼働中の所望の分散オブジェクトサーバが停止することなく非監視対象から監視対象に変更されると、上述した特殊な保護動作を、整合性を保持しつつ維持することができなくなる。すなわち、非監視対象から監視対象への変更は、所望の分散オブジェクトサーバが稼働中でないときに実施する必要があるので、上述の処理が必要になる。
 また、仮に、稼働中の所望の分散オブジェクトサーバが停止することなく監視対象から非監視対象に変更されると、当該所望の分散オブジェクトサーバによるファイルの取り扱いについて問題が発生するおそれがある。例えば、監視対象分散オブジェクトサーバ21がファイルを新規生成すると、そのファイルは隔離フォルダにのみ配置される。しかし所望の監視対象分散オブジェクトサーバ21が停止することなく非監視対象に変更されたならば、当該所望の分散オブジェクトサーバはもはや隔離フォルダ内の当該新規生成ファイルにアクセスすることができない。このような問題を回避するためにも、所望の分散オブジェクトサーバの監視状況を変更する場合、当該所望の分散オブジェクトサーバを一旦終了させた上で、監視状況変更後の所望の分散オブジェクトサーバを最初からリスタートしなければならない。
[変形例]
 ここまでの説明では、所望の分散オブジェクトサーバが高々1つのプロセスとしてのみ生成・起動されることを前提とした。以下では、所望の分散オブジェクトサーバが複数のプロセスとして生成・起動できる場合を想定する。分散オブジェクト生成管理部13は、複数の分散オブジェクトサーバの各々の監視状況(監視対象であるか否か)も併せて個別に管理し、利用要求元プロセスから所望の分散オブジェクトサーバの利用要求があった場合に、当該利用要求元プロセスと同じ監視状況にある分散オブジェクトサーバを選択して、当該要求元プロセスに対して、当該分散オブジェクトサーバへのアクセス方法を含む応答を返してもよい。
 ところで、分散オブジェクト生成管理部13は、元々はOSの標準機能ブロックの1つとして提供されるものである。そこで、OSの標準機能からの改変を最小限にすべく、利用要求元プロセス自体が、所望の分散オブジェクトサーバの稼働の有無を、その監視状況も含めて直接判定してもよい。この場合、分散オブジェクト生成管理部13は、単に次のルーチンを実行すればよい。
 図14は、分散オブジェクト生成管理部13による第2の分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。なお、図12と同じ処理を行うステップについては図12と同一の符号が付される。
 ここでは、利用要求元プロセスは、その前提として、(a)その起動時に自らのpidを用いて全体制御部20に照会することによって自らが監視対象であること(監視対象ユーザプロセス32)を予め知っており、(b)所望する分散オブジェクトサーバが監視対象(監視対象分散オブジェクトサーバ21)として既に稼働しているか否かを予め知っている(これらは、利用要求元プロセスに当該機能を果たすフックを注入することで実現可能である)ものとする。
 通常の(監視対象でない)プロセスは、分散オブジェクト生成管理部13に対して、所望の分散オブジェクトサーバの利用を要求する場合、一般的に自らのpidを伝えることはない。そこで、利用要求元プロセスは、自らが監視対象(監視対象ユーザプロセス32)の場合、自らのpidを入れた利用要求通知を分散オブジェクト生成管理部13へ送信する。
 ステップS101では、分散オブジェクト生成管理部13は、利用要求元プロセスから所望の分散オブジェクトサーバの利用要求があるか否かを判定する。利用要求がある場合はステップS121へ進み、利用要求がない場合は利用要求があるまで待機する。
 ステップS121では、分散オブジェクト生成管理部13は、利用要求通知に利用要求元プロセスのpidが含まれているか否かを判定する。利用要求元プロセスのpidが含まれている場合はステップS105へ進み、当該pidが含まれていない場合はステップS106へ進む。
 ステップS105では、分散オブジェクト生成管理部13は、全体制御部20に、当該所望の監視対象分散オブジェクトサーバ21の生成・起動を依頼する。全体制御部20は、自らの子プロセスとして当該所望の監視対象分散オブジェクトサーバ21を生成・起動した後、そのpidを分散オブジェクト生成管理部13へ通知する。
 そして、分散オブジェクト生成管理部13は、全体制御部20から当該所望の監視対象分散オブジェクトサーバ21のpidを取得し、ステップS107へ進む。
 ステップS106では、分散オブジェクト生成管理部13は、自らの子プロセスとして、監視対象ではない当該所望の分散オブジェクトサーバを生成・起動して、その分散オブジェクトサーバのpidを取得する。そして、ステップS107へ進む。
 ステップS107においても、生成・起動された分散オブジェクトサーバを管理するのは、(監視対象であるか否かに関わらず)分散オブジェクト生成管理部13である。
 したがって、ステップS107では、分散オブジェクト生成管理部13は、取得したpidを用いて、新たに生成・起動された当該所望の分散オブジェクトサーバの管理を直ちに開始する。そして、ステップS111へ進む。
 ステップS111では、分散オブジェクト生成管理部13は、利用要求元プロセスに対して、当該所望の分散オブジェクトサーバへのアクセス方法を含む応答を返す。そして、再びステップS101に戻る。
 以上のように、図14に示すルーチンよれば、分散オブジェクト生成管理部13の改変は、同図の太破線枠で示した範囲に限定される。
 ところで、本実施形態では、分散オブジェクトサーバは、監視対象であるか否かに関わらず、他のユーザと共有できるように、共通ユーザ領域にて生成・起動される。
 しかし、セキュリティ上の理由などから、分散オブジェクトサーバの利用を、それが監視対象である場合、利用要求元プロセス、又は利用要求元プロセスを保有するユーザに割り当てられた個別ユーザ領域にて生成・起動された監視対象ユーザプロセス32のみに限定することも想定される。この場合、監視対象分散オブジェクトサーバ21は、利用要求元プロセスが生成・起動された個別ユーザ領域にて生成・起動してもよい。
 この場合、図3に示すステップS14の処理は、ステップS8の肯定判定後からステップS10の前まで(ステップS9の直前又は直後)に実施される。ここでは、さらに、全体制御部20の代わりに、当該ユーザに割り当てられた監視対象ユーザプロセス生成部31が、監視対象分散オブジェクトサーバ21を生成・起動してもよい。
 なお、監視対象プロセスの監視対象とするプログラム動作は、上述した動作に限定されるものではなく、例えばプロセス間通信も該当する。つまり、TCP/IPネットワーク通信なども監視対象の1つとなる。
 例えばOSがマイクロソフト社のWindows(登録商標)の場合、例えばWFP(Windows Filtering Platform)と呼ばれるフィルタドライバを作成し、それをシステム領域で動作させるとよい。これにより、監視対象プロセスによるTCP/IPネットワーク通信に対して、レジストリリダイレクタ11を用いたレジストリアクセス動作の監視、制御、保護に類似した機能が実現される。
[第2の実施形態]
 つぎに、本発明の第2の実施形態について説明する。なお、第1の実施形態と同一の部位・処理については同一の符号を付し、重複する説明は省略する。
 第1実施形態では、分散オブジェクト生成管理部13は、監視対象ユーザプロセス32から所望の分散オブジェクトサーバの利用要求の依頼があった場合、指定された監視対象分散オブジェクトサーバ21の生成・起動を含め、その依頼そのものを全体制御部20へリダイレクト(転送)していた。
 これに対して、第2の実施形態では、分散オブジェクト生成管理部13は、監視対象ユーザプロセス32から所望の分散オブジェクトサーバの利用要求の依頼があった場合、自ら当該分散オブジェクトサーバを生成・起動する。
 この場合、監視対象とすべき指定された分散オブジェクトサーバの生成・起動から当該分散オブジェクトサーバが実際に監視される(監視対象分散オブジェクトサーバ21となる)までの間に、当該分散オブジェクトサーバの動作が進んでしまうと、プログラム動作の監視に漏れが生じるおそれがある。
 そこで、第2の実施形態では、分散オブジェクト生成管理部13は、監視対象とすべき指定された分散オブジェクトサーバを自ら生成した場合、当該分散オブジェクトサーバの動作を一旦停止させる。そして、分散オブジェクト生成管理部13は、当該分散オブジェクトサーバのpidをレジストリリダイレクタ11へ通知し、その登録完了応答を得て当該分散オブジェクトサーバが監視対象(監視対象分散オブジェクトサーバ21)になったことを確認してから、当該分散オブジェクトサーバの動作を再開させる。
 つまり、分散オブジェクト生成管理部13とレジストリリダイレクタ11との間での同期処理を図ることによって、指定された分散オブジェクトサーバのプログラム動作の監視漏れを防止する。具体的には、図12に示す分散オブジェクトサーバ生成管理ルーチンの代わりに、図15に示す第3の分散オブジェクトサーバ生成管理ルーチンが実行される。
 図15は、第3の分散オブジェクトサーバ生成管理ルーチンを示すフローチャートである。なお、ステップS101からステップS103までは、図12と同様である。ステップS103の否定判定後は、図15のステップS131に進む。
 ステップS131では、分散オブジェクト生成管理部13は、指定された分散オブジェクトサーバが稼働していないので、当該分散オブジェクトサーバを自ら生成し、生成した分散オブジェクトサーバのpidを取得する。本ステップは、分散オブジェクト生成管理部13が従来から行っている通常処理である。
 ステップS132では、分散オブジェクト生成管理部13は、ステップS101で取得したpidを用いてレジストリリダイレクタ11に直接照会を行って、利用要求元プロセスが監視対象であるか否かを判定する。当該プロセスが監視対象である場合はステップS133へ進み、当該プロセスが監視対象でない場合はステップS135へ進む。
 ステップS133では、分散オブジェクト生成管理部13は、ステップS131で取得した分散オブジェクトサーバのpidをレジストリリダイレクタ11に通知する。
 ステップS134では、分散オブジェクト生成管理部13は、レジストリリダイレクタ11から通知されたpidの登録が完了した旨の応答があるか否かを判定する。登録が完了した旨の応答がある場合はステップS135へ進み、登録が完了した旨の応答がない場合はその応答があるまで待機する。
 ステップS135では、分散オブジェクト生成管理部13は、ステップS131で生成した分散オブジェクトサーバを起動して、当該分散オブジェクトサーバの管理を開始する。そして、図13に示すステップS108へ進む。本ステップは、分散オブジェクト生成管理部13が従来から行っている通常処理である。
 以上のように、分散オブジェクト生成管理部13は、指定された分散オブジェクトサーバの生成後から起動前までの期間に、当該分散オブジェクトサーバのpidをレジストリリダイレクタ11へ通知し、それを登録させる。これにより、監視対象である当該分散オブジェクトサーバが監視前に動作を開始することがなくなり、プログラム動作の監視漏れを回避することができる。
 なお、本発明は、上述した実施形態に限定されるものではなく、請求の範囲に記載された事項の範囲内で設計変更されたものにも適用される。
 例えば、上述した様々な態様は、ハードウェアによって構成されたものでもよいし、記録媒体に記録されたプログラムがインストールされたコンピュータによって構成されたものでもよい。
1 プログラム動作監視システム
11 レジストリリダイレクタ
12 ファイルシステムリダイレクタ
13 分散オブジェクト生成管理部
20 全体制御部
20G 監視対象分散オブジェクトサーバ生成部
21 監視対象分散オブジェクトサーバ
31 監視対象ユーザプロセス生成部
32 監視対象ユーザプロセス
32P 印刷動作監視部
32C クリップボード動作監視部
 

Claims (12)

  1.  プログラムの実行主体であるプロセスであって監視対象となる監視対象プロセスの識別情報を監視対象プロセスリストに登録し、問い合わせ先から任意のプロセスが監視対象であるか否かの問い合わせがあった場合に、前記任意のプロセスの識別情報を前記監視対象プロセスリストに照会して、前記任意のプロセスが監視対象であるか否かの情報を前記問い合わせ先に返信する監視対象プロセス管理部と、
     分散オブジェクトサーバを生成して当該分散オブジェクトサーバの識別情報を保有する分散オブジェクト生成管理装置が監視対象プロセスから分散オブジェクトサーバの利用要求を受けた場合に、前記分散オブジェクト生成管理装置から所定の通知を受信する通知受信部と、
     を備えたプログラム動作監視制御装置。
  2.  前記通知受信部は、前記所定の通知として、前記分散オブジェクト生成管理装置の代わりに前記利用要求のあった分散オブジェクトサーバを生成するように依頼する旨の依頼通知を受信する
     請求項1に記載のプログラム動作監視制御装置。
  3.  前記通知受信部により受信された前記依頼通知に基づいて、自身の子プロセスとして、前記利用要求のあった分散オブジェクトサーバを生成する分散オブジェクトサーバ生成部と、
     前記分散オブジェクトサーバ生成部により生成された分散オブジェクトサーバを職別する識別情報を、前記分散オブジェクト生成管理装置へ通知する通知部と、をさらに備え、
     前記監視対象プロセス管理部は、前記分散オブジェクトサーバ生成部により生成された前記分散オブジェクトサーバの識別情報を前記監視対象プロセスリストに登録する
     請求項2に記載のプログラム動作監視制御装置。
  4.  新たなプロセスが起動される毎に、当該新たなプロセスの識別情報と、当該新たなプロセスの親プロセスの識別情報と、をそれぞれ取得する識別情報取得部と、
     新たなプロセスが起動される毎に前記識別情報取得部により取得された各識別情報を参照して、前記新たなプロセスの親プロセスの識別情報が前記監視対象プロセスリストに登録されている場合に、前記新たなプロセスの識別情報を前記監視対象プロセスリストに登録する識別情報登録部と、をさらに備えた
     請求項3に記載のプログラム動作監視制御装置。
  5.  前記通知受信部は、前記所定の通知として、前記分散オブジェクト生成管理装置により生成された分散オブジェクトサーバの識別情報を受信する
     請求項1に記載のプログラム動作監視制御装置。
  6.  前記監視対象プロセス管理部は、前記通知受信部により受信された識別情報を前記監視対象プロセスリストに登録する
     請求項5に記載のプログラム動作監視制御装置。
  7.  プログラムの実行主体であるプロセスから分散オブジェクトサーバの利用要求を受信する利用要求受信部と、
     前記利用要求受信部により受信された前記利用要求の要求元プロセスの識別情報が監視対象プロセスリストに登録されていない場合に、前記利用要求のあった分散オブジェクトサーバを生成する分散オブジェクトサーバ生成部と、
     前記利用要求受信部により受信された前記利用要求の要求元プロセスの識別情報が前記監視対象プロセスリストに登録されている場合に、プログラム動作監視制御装置に所定の通知を送信する通知送信部と、
     を備えた分散オブジェクト生成管理装置。
  8.  前記通知送信部は、前記所定の通知として、前記分散オブジェクトサーバ生成部の代わりに前記プログラム動作監視制御装置が前記利用要求のあった分散オブジェクトサーバを生成するように依頼する旨の依頼通知を送信する
     請求項7に記載の分散オブジェクト生成管理装置。
  9.  前記分散オブジェクトサーバ生成部は、前記利用要求受信部により前記利用要求が受信された場合、前記利用要求のあったすべての分散オブジェクトサーバを生成し、
     前記通知送信部は、前記所定の通知として、前記利用要求の要求元プロセスの識別情報が前記監視対象プロセスリストに登録されている場合に、前記利用要求により生成された分散オブジェクトサーバの識別情報を送信する
     請求項7に記載の分散オブジェクト生成管理装置。
  10.  コンピュータを、
     プログラムの実行主体であるプロセスであって監視対象となる監視対象プロセスの識別情報を監視対象プロセスリストに登録し、問い合わせ先から任意のプロセスが監視対象であるか否かの問い合わせがあった場合に、前記任意のプロセスの識別情報を前記監視対象プロセスリストに照会して、前記任意のプロセスが監視対象であるか否かの情報を前記問い合わせ先に返信する監視対象プロセス管理部、
     及び、分散オブジェクトサーバを生成して当該分散オブジェクトサーバの識別情報を保有する分散オブジェクト生成管理装置が監視対象プロセスから分散オブジェクトサーバの利用要求を受けた場合に、前記分散オブジェクト生成管理装置から所定の通知を受信する通知受信部、
     として機能させるためのプログラムが記録された記録媒体。
  11.  コンピュータを、
     プログラムの実行主体であるプロセスから分散オブジェクトサーバの利用要求を受信する利用要求受信部、
     前記利用要求受信部により受信された前記利用要求の要求元プロセスの識別情報が監視対象プロセスリストに登録されていない場合に、前記利用要求のあった分散オブジェクトサーバを生成する分散オブジェクトサーバ生成部、
     及び、前記利用要求受信部により受信された前記利用要求の要求元プロセスの識別情報が前記監視対象プロセスリストに登録されている場合に、プログラム動作監視制御装置に所定の通知を送信する通知送信部、
     として機能させるためのプログラムが記録された記録媒体。
  12.  プログラムの実行主体であるプロセスであって監視対象となる監視対象プロセスの識別情報を監視対象プロセスリストに登録し、問い合わせ先から任意のプロセスが監視対象であるか否かの問い合わせがあった場合に、前記任意のプロセスの識別情報を前記監視対象プロセスリストに照会して、前記任意のプロセスが監視対象であるか否かの情報を前記問い合わせ先に返信する監視対象プロセス管理部と、分散オブジェクトサーバを生成して当該分散オブジェクトサーバの識別情報を保有する分散オブジェクト生成管理装置が監視対象プロセスから分散オブジェクトサーバの利用要求を受けた場合に、前記分散オブジェクト生成管理装置から所定の通知を受信する通知受信部と、を有するプログラム動作監視制御装置と、
     プログラムの実行主体であるプロセスから分散オブジェクトサーバの利用要求を受信する利用要求受信部と、前記利用要求受信部により受信された前記利用要求の要求元プロセスの識別情報が監視対象プロセスリストに登録されていない場合に、前記利用要求のあった分散オブジェクトサーバを生成する分散オブジェクトサーバ生成部と、前記利用要求受信部により受信された前記利用要求の要求元プロセスの識別情報が前記監視対象プロセスリストに登録されている場合に、プログラム動作監視制御装置に所定の通知を送信する通知送信部と、を有する分散オブジェクト生成管理装置と、
     を備えたプログラム動作監視システム。
     

     
PCT/JP2017/007900 2016-10-31 2017-02-28 プログラム動作監視制御装置、分散オブジェクト生成管理装置、記録媒体、及びプログラム動作監視システム WO2018078902A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201780067370.9A CN109923547B (zh) 2016-10-31 2017-02-28 程序行为监控设备、分布式对象生成管理设备、存储介质、以及程序行为监视系统
US15/524,604 US10831885B2 (en) 2016-10-31 2017-02-28 Program behavior monitoring control apparatus, distributed object creation management apparatus, recording medium, and program behavior monitoring system
DK17718713.5T DK3340099T3 (da) 2016-10-31 2017-02-28 Styreenhed til overvågning af programdrift, enhed til distribueret objektgenerering og ?håndtering, registreringsmedium og system til overvågning af programdrift
EP17718713.5A EP3340099B1 (en) 2016-10-31 2017-02-28 Program operation monitoring control device, distributed object generation and management device, recording medium, and program operation monitoring system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016-212993 2016-10-31
JP2016212993A JP6104447B1 (ja) 2016-10-31 2016-10-31 プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム

Publications (1)

Publication Number Publication Date
WO2018078902A1 true WO2018078902A1 (ja) 2018-05-03

Family

ID=59366064

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/007900 WO2018078902A1 (ja) 2016-10-31 2017-02-28 プログラム動作監視制御装置、分散オブジェクト生成管理装置、記録媒体、及びプログラム動作監視システム

Country Status (6)

Country Link
US (1) US10831885B2 (ja)
EP (1) EP3340099B1 (ja)
JP (1) JP6104447B1 (ja)
CN (1) CN109923547B (ja)
DK (1) DK3340099T3 (ja)
WO (1) WO2018078902A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018109910A (ja) * 2017-01-05 2018-07-12 富士通株式会社 類似度判定プログラム、類似度判定方法および情報処理装置
JP6866645B2 (ja) 2017-01-05 2021-04-28 富士通株式会社 類似度判定プログラム、類似度判定方法および情報処理装置
CN112328377B (zh) 2020-11-04 2022-04-19 北京字节跳动网络技术有限公司 基线监控方法、装置、可读介质及电子设备
US11882148B1 (en) * 2021-03-23 2024-01-23 Trend Micro Incorporated Automated mitigation of cyber threats using a semantic cybersecurity database
CN113127570B (zh) * 2021-05-18 2022-11-04 上海莉莉丝科技股份有限公司 分布式服务器的数据操作方法、系统、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010205186A (ja) 2009-03-05 2010-09-16 Nec Corp 情報処理装置と方法とプログラム
JP2014016877A (ja) * 2012-07-10 2014-01-30 Nippon Telegr & Teleph Corp <Ntt> 監視装置および監視方法
JP2014182837A (ja) * 2013-03-19 2014-09-29 Trusteer Ltd マルウェア発見方法及びシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6425017B1 (en) 1998-08-17 2002-07-23 Microsoft Corporation Queued method invocations on distributed component applications
JP2001134511A (ja) * 1999-11-08 2001-05-18 Nec Corp ネットワーク管理システム及びその管理方法並びにその制御プログラムを記録した記録媒体
US8429741B2 (en) * 2008-08-29 2013-04-23 Google, Inc. Altered token sandboxing
JP2009151827A (ja) * 2009-04-06 2009-07-09 Nec Corp データ監視方法、情報処理装置、プログラム及び記録媒体、並びに情報処理システム
US8627451B2 (en) * 2009-08-21 2014-01-07 Red Hat, Inc. Systems and methods for providing an isolated execution environment for accessing untrusted content
CN102656561A (zh) * 2010-03-16 2012-09-05 松下电器产业株式会社 信息处理装置、虚拟机生成方法及应用发布系统
US9148428B1 (en) * 2011-05-25 2015-09-29 Bromium, Inc. Seamless management of untrusted data using virtual machines
CN102959555B (zh) * 2011-04-27 2015-09-02 松下电器(美国)知识产权公司 虚拟计算机系统、虚拟计算机控制方法及半导体集成电路
US9081959B2 (en) * 2011-12-02 2015-07-14 Invincea, Inc. Methods and apparatus for control and detection of malicious content using a sandbox environment
US9729506B2 (en) * 2014-08-22 2017-08-08 Shape Security, Inc. Application programming interface wall

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010205186A (ja) 2009-03-05 2010-09-16 Nec Corp 情報処理装置と方法とプログラム
JP2014016877A (ja) * 2012-07-10 2014-01-30 Nippon Telegr & Teleph Corp <Ntt> 監視装置および監視方法
JP2014182837A (ja) * 2013-03-19 2014-09-29 Trusteer Ltd マルウェア発見方法及びシステム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3340099A4

Also Published As

Publication number Publication date
US10831885B2 (en) 2020-11-10
EP3340099A4 (en) 2018-06-27
CN109923547A (zh) 2019-06-21
EP3340099B1 (en) 2022-12-07
EP3340099A1 (en) 2018-06-27
US20180300474A1 (en) 2018-10-18
JP6104447B1 (ja) 2017-03-29
DK3340099T3 (da) 2023-02-20
CN109923547B (zh) 2023-07-07
JP2018073166A (ja) 2018-05-10

Similar Documents

Publication Publication Date Title
JP6104447B1 (ja) プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム
US10601875B2 (en) Automated multi-level federation and enforcement of information management policies in a device network
JP4400059B2 (ja) ポリシー設定支援ツール
US8156538B2 (en) Distribution of information protection policies to client machines
US7590669B2 (en) Managing client configuration data
US9171172B2 (en) Automated multi-level federation and enforcement of information management policies in a device network
JP6491243B2 (ja) マルチテナントアプリケーションサーバ環境における複数のパーティション編集セッションをサポートするためのシステムおよび方法
US7383271B2 (en) Centralized configuration data management for distributed clients
KR101072964B1 (ko) 정보 록킹을 실현하기 위한 방법, 시스템 및 장치
JP4903012B2 (ja) ワークフローシステム、ワークフロー処理方法およびワークフロー処理プログラム
US20150347447A1 (en) Method and architecture for synchronizing files
KR20170097211A (ko) 신뢰할 수 없는 장치에서의 데이터 보안
WO2009072755A2 (en) Digital information security system, kernel driver apparatus and digital information security method
GB2301912A (en) Security for computer system resources
CN101140532A (zh) 用于实现进程间完整性串行化的方法和系统
JP3904534B2 (ja) 端末状態監視システムおよびその方法
US9607176B2 (en) Secure copy and paste of mobile app data
JP2008046860A (ja) ファイル管理システム及びファイル管理方法
JP2020502699A (ja) コンピュータファイルメタデータの収集および表示を実施するためのアーキテクチャ、方法および装置
US20170206371A1 (en) Apparatus and method for managing document based on kernel
JP2017062615A (ja) 情報処理装置、情報処理システム及びプログラム
JP7486368B2 (ja) 情報処理装置、情報処理装置の制御方法、情報処理システム及びプログラム
TW201814577A (zh) 用於防止計算機系統中數據惡意更改的方法和系統
CN117909027A (zh) 层级式容器编排系统及容器编排方法
CN117909028A (zh) 层级式容器编排系统及容器编排方法

Legal Events

Date Code Title Description
REEP Request for entry into the european phase

Ref document number: 2017718713

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 15524604

Country of ref document: US

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

Ref document number: 17718713

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE