WO2025013261A1 - 制御装置、制御方法および制御プログラム - Google Patents
制御装置、制御方法および制御プログラム Download PDFInfo
- Publication number
- WO2025013261A1 WO2025013261A1 PCT/JP2023/025784 JP2023025784W WO2025013261A1 WO 2025013261 A1 WO2025013261 A1 WO 2025013261A1 JP 2023025784 W JP2023025784 W JP 2023025784W WO 2025013261 A1 WO2025013261 A1 WO 2025013261A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- code
- editing
- unit
- confidential
- lsp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
Definitions
- the present invention relates to a control device, a control method, and a control program.
- LSP Language Server Protocol
- Non-Patent Document 1 programming support functions such as definition jumping, which moves to the reference source of the code definition, such as code jump, and code completion, which provides code in line with the context during code input to complete the code.
- conventional technologies may not be able to allow editing of program code while reducing the risk of confidential code leaks.
- conventional technologies pose security concerns that confidential code contained in programs owned by a company or outsourced by a customer may be viewed by a developer who edits the code remotely.
- the developer is a remote developer who belongs to a development project and is not an external attacker, there is a high risk of code leaks, in which confidential code is published on an external website or in an external repository due to an operational error by the developer, etc.
- the present invention has a transmitting unit that transmits code that does not include confidential code to an editing device for editing program code, a receiving unit that receives a command related to editing the code that does not include confidential code transmitted by the transmitting unit from the editing device, and a control unit that checks access to the code and controls the editing based on the command received by the receiving unit.
- the present invention makes it possible to edit program code while reducing the risk of confidential code leaking.
- FIG. 1 is a diagram illustrating an example of an overview of a control system according to the first embodiment.
- FIG. 2 is a diagram showing an example of a confidential code.
- FIG. 3 is a diagram illustrating an example of an overview of the control system according to the first embodiment.
- FIG. 4 is a diagram illustrating an example of the configuration of a control system according to the first embodiment.
- FIG. 5 is a flowchart showing an example of the flow of processing executed by the control system according to the first embodiment.
- FIG. 6 is a diagram illustrating an example of an overview of a control system according to the second embodiment.
- FIG. 7 is a diagram illustrating an example of an overview of a control system according to the second embodiment.
- FIG. 1 is a diagram illustrating an example of an overview of a control system according to the first embodiment.
- FIG. 2 is a diagram showing an example of a confidential code.
- FIG. 3 is a diagram illustrating an example of an overview of the control system according to the first embodiment.
- FIG. 8 is a diagram illustrating an example of the configuration of a control system according to the second embodiment.
- FIG. 9 is a flowchart showing an example of the flow of processing executed by the control system according to the second embodiment.
- FIG. 10 is a diagram for comparison with the control system according to the first embodiment.
- FIG. 11 is a diagram illustrating an example of an overview of a control system according to the third embodiment.
- FIG. 12 is a diagram illustrating an example of an overview of a control system according to the third embodiment.
- FIG. 13 is a diagram illustrating an example of the configuration of a control system according to the third embodiment.
- FIG. 14 is a flowchart showing an example of the flow of processing executed by the control system according to the third embodiment.
- FIG. 15 is a diagram for explaining an example of an overview of a control system according to a modification of the control system according to the third embodiment.
- FIG. 16 is a diagram illustrating an example of the configuration of a computer that executes a control program.
- FIG. 17 is a diagram for explaining an example of an outline of a control system according to the reference technology.
- FIG. 17 is a diagram for explaining an example of the outline of a control system according to the reference technology.
- the control system 1# performs code editing processing.
- the control system 1# has a programming support function (such as moving definitions such as code jumps and code completion) in a development tool 20, a language server 30 independent of the development tool 20, and an LSP 10#.
- the LSP 10# is a public protocol for editing processing that performs communication processing to provide editing processing for the code of the language server 30.
- the LSP 10# of the control system 1# transmits a reference source code in advance to the development tool 20 and the language server 30.
- the source code refers to a computer program written in a language or data format that is easy for humans to understand and write, such as a programming language.
- the development tool 20 of control system 1# accepts an editing operation from the developer to jump to code OKClass2 ((0) in FIG. 17: Operation to jump to OKClass2).
- LSP 10# transmits, for example, a command related to the editing process received from the development tool 20 (notification (instruction) of an editing operation to jump to code OKClass2) to the language server 30 ((1) in FIG. 17: Command transmission (notification of jump to OKClass2)).
- the language server 30 analyzes, for example, the code OKClass2, which is the jump destination included in the command content, and obtains the location information of this code ((2) in FIG. 17: Obtain location information of jump destination).
- LSP10# sends a reply to the development tool 20 in response to the command received from the language server 30, for example ((3) Command reply (position information of OKClass2) in FIG. 17).
- the development tool 20 performs a code jump based on the position information of the code OKClass2 in the reply to the command received from LSP10#, for example ((4) Jump based on position information in FIG. 17).
- the development tool 20 displays the jump destination of the code jump to the developer, for example ((5) Display jump destination in FIG. 17).
- the reference technology may not be able to allow editing of the program code while suppressing the risk of confidential code leakage.
- the reference technology has a security concern that confidential code included in a program owned by a company or entrusted by a customer may be viewed by a developer who remotely edits the code.
- the developer is a remote developer who belongs to a development project and is not an external attacker, there is a high risk of code leakage, in which confidential code is published on an external website or external repository due to an operational error by the developer, etc.
- This embodiment has been made to solve the above-mentioned problems, and allows editing of program code while reducing the risk of confidential code leaking.
- FIG. 1 An example of an overview of a control system 1 according to a first embodiment will be described below with reference to Figures 1 to 4.
- Figures 1 and 3 are diagrams for explaining an example of an overview of a control system.
- Figure 2 is a diagram showing an example of a confidential code.
- the control system 1 has an LSP proxy 10 instead of an LSP 10# according to the reference technology.
- control system 1 uses the LSP proxy 10 to send code that does not contain confidential code to the development tool 20, receives commands from the development tool 20 related to editing the code that does not contain confidential code, and performs checks on access to the code and controls on editing based on the commands. This allows the control system 1 to allow editing of program code while reducing the risk of confidential code leaking.
- the LSP proxy 10 is, for example, a relay mechanism between the development tool 20 and the language server 30, and corresponds to LSP 10# in the reference technology.
- the development tool 20 is, for example, an editing device for editing program code.
- the command is, for example, a command related to editing code.
- the control related to editing is, for example, the control of operations and display related to editing, and is, for example, the control of prohibiting operations related to editing.
- the confidential code is, for example, code whose function contents, etc. should be kept secret from developers.
- the control system 1 transmits code including confidential code to a language server 30 that is independent of the development tool 20, and reflects the edit content in the code including confidential code in the language server 30 based on the command.
- This allows the control system 1 to store code such as source code in both the development tool 20 and the language server 30 without including confidential code in the development tool 20.
- the control system 1 also allows the development tool 20 to only edit code other than confidential code, and reflects the edit content in code such as source code in the language server 30 via the LSP proxy 10, which is a relay mechanism for LSP commands.
- control system 1 transmits code that does not contain confidential code by the LSP proxy 10, receives commands related to editing the code that does not contain confidential code from the development tool 20, and performs checks on access to the code and controls related to editing based on the commands.
- the control system 1 classifies confidential code into two categories: internally concealed code and completely concealed code.
- internally concealed code refers to code in which the contents of functions are not disclosed, but invocation of the functions is permitted.
- internally concealed code refers to code that a developer can call when programming, and the existence of the functions themselves is not concealed from the developer.
- Completely concealed code refers to code in which the contents of functions are not disclosed, and in which invocation of the functions is not permitted.
- completely concealed code refers to code that a developer cannot call when programming, and the existence of the functions itself is concealed from the developer.
- the control system 1 aims to conceal the implementation contents during the development process, regardless of the type of code.
- FIG. 1 is also a sequence diagram showing an example of the flow of confidential code separation and access check processing by the control system 1.
- the development tool 20 accepts an editing operation to add a variable to OKClass from the developer via the GUI (Graphic User Interface) of the developer's terminal and a network such as the Internet (operation to add a variable to OKClass (0) in FIG. 1).
- the development tool 20 sends, for example, a command to the LSP proxy 10 to notify that the OKClass file will be changed ((1) command transmission (notification of file change of OKClass) in FIG. 1).
- the access check unit 121 of the LSP proxy 10 executes, for example, a check on access to the code and control on editing based on the command.
- the access check unit 121 checks whether the access conditions are met by whether the OKClass, which is the code to be edited, is publicly available code.
- the access conditions refer to, for example, the conditions under which the code can be accessed.
- a condition for access is that the code being accessed is not confidential code (for example, OKClass and OKClass2, which are set as part of the Allow list (a list of publicly accessible code) that can be accessed, as described below).
- the LSP proxy 10 sends a command to the language server 30 to notify it that the OKClass file will be changed ((2) Command transmission (OKClass file change notification) in FIG. 1).
- the LSP proxy 10 determines that the access conditions are met, and requests the language server 30 to change the OKClass file, such as by adding a variable to OKClass2 in the memory (storage unit) of the language server 30.
- the access check unit 121 allows editing of the program code only if the code being accessed is not confidential code such as releasable code, so that editing of the program code can be performed while reducing the risk of confidential code leaking.
- the development tool 20 updates the source code that does not contain confidential code that was initially sent from the LSP proxy 10 ((3-1) Source Code Update in FIG. 1).
- the development tool 20 for example, sends a command to the LSP proxy 10 to notify it that the OKClass file will be saved ((3-2) Command Sending (OKClass File Save Notification) in FIG. 1).
- the access check unit 121 executes checks on access to the code and controls on editing, for example, based on a command.
- the access check unit 121 checks whether the access condition is met by whether the code to be stored, OKClass, is releasable code.
- the LSP proxy 10 sends a command to the language server 30 to notify the language server 30 that the OKClass file will be saved ((3-3) Command transmission (notification of saving OKClass file) in FIG. 1).
- the LSP proxy 10 determines that the access condition is met and requests the language server 30 to save the OKClass file.
- the LSP proxy 10 allows editing of the program code only if the code to be accessed is not confidential code such as releasable code, so that editing of the program code can be performed while suppressing the risk of confidential code leaks.
- the language server 30 updates the source code of the language server 30 in synchronization with the source code on the development tool 20 side based on, for example, a command from the development tool 20 side (LSP proxy 10) notifying the saving of a file ((4) Update of source code in FIG. 1 (updating source code based on a file saving notification from the development tool side (synchronizing with source code on the development tool side))).
- OKClass and OKClass2 are preset in the LSP proxy 10 as an Allow list (a list of publicly accessible code) that can be accessed, according to an access condition definition file that defines the conditions for accessing code.
- RefNGClass is preset in the LSP proxy 10 as an Executable list (a list of internally hidden code) that may not be accessible, according to the access condition definition file.
- the LSP proxy 10 separates the confidential code from the source code that includes the confidential code and is referenced by the language server 30. As a result, the LSP proxy 10 creates source code from which the confidential code has been removed, and transmits the source code that does not include the confidential code to the development tool 20. Next, the development tool 20 transmits, for example, a command to the LSP proxy 10 to notify it that the OKClass file will be changed ((1) Command transmission (OKClass file change notification) in FIG. 3).
- the LSP proxy 10 checks access to the code and controls editing, for example, based on a command. As an example, the LSP proxy 10 checks whether the access conditions are met by checking whether OKClass, the code to be edited, is publicly available code. If the access conditions are met, the LSP proxy 10 then sends a command to the language server 30 to notify the language server 30 that the OKClass file will be changed ((2) Command transmission (OKClass file change notification) in FIG. 3). As an example, if OKClass, the code to be edited, is publicly available code, the LSP proxy 10 determines that the access conditions are met, and requests the language server 30 to change the OKClass file, such as by adding a variable to OKClass2 in the memory (storage unit) of the language server 30.
- the LSP proxy 10 allows editing of the program code only if the code being accessed is not confidential code such as publicly accessible code, so that editing of the program code can be performed while reducing the risk of confidential code leaking, and the editing can be reflected in the code of the language server 30.
- the development tool 20 updates the source code that does not contain confidential code that was initially sent from the LSP proxy 10 (update (3-1) in FIG. 3).
- the development tool 20 for example, sends a command to the LSP proxy 10 to notify it that the OKClass file will be saved (command transmission (notification to save OKClass file) in FIG. 3 (3-2)).
- the LSP proxy 10 checks access to the code and controls editing, for example, based on a command. As an example, the LSP proxy 10 checks whether the access conditions are met by checking whether the code to be saved, OKClass, is releasable code. Next, if the access conditions are met, the LSP proxy 10 sends a command to the language server 30 to notify the language server 30 that the OKClass file will be saved ((3-3) Command transmission (notification of saving OKClass file) in FIG. 3). As an example, if the code to be edited, OKClass, is releasable code, the LSP proxy 10 determines that the access conditions are met and requests the language server 30 to change the OKClass file.
- the LSP proxy 10 allows editing of the program's code only if the accessed code is not confidential code such as publicly accessible code, and therefore allows editing of the program's code while reducing the risk of confidential code leaking, and allows the editing to be reflected in the code of the language server 30.
- the language server 30 updates the source code of the language server 30 in synchronization with the source code on the development tool 20 side, based on, for example, a command from the development tool 20 side (LSP proxy 10) notifying the user that a file is to be saved ((4) Update of source code in FIG. 3).
- FIG. 4 is a diagram showing an example of the configuration of the control system according to the first embodiment.
- the control system 1 has an LSP proxy 10, a development tool 20, and a language server 30.
- the LSP proxy 10 is a control device that transmits code that does not include confidential code to the development tool 20, receives commands from the development tool 20 related to editing the code that does not include confidential code, and executes checks on access to the code and control related to editing based on the commands.
- the control device is the LSP proxy 10, which is a public protocol for editing processing, but is not particularly limited as long as it has the above-mentioned functions.
- the control device by applying the control device to the LSP proxy 10, the developer can use the programming support function without switching the developer's own development tool, regardless of the programming language and development environment adopted by the participating project (PJ: Project), even if the PJ is changed.
- the LSP proxy 10 has a communication unit 11, a control unit 12, and a storage unit 13.
- the communication unit 11 transmits and receives various information between the development tool 20 and the language server 30.
- the communication unit 11 is realized by, for example, a network interface card (NIC).
- NIC network interface card
- the communication unit 11 includes a transmission unit 111 and a reception unit 112.
- the transmission unit 111 transmits various information to the development tool 20 and the language server 30.
- the transmission unit 111 transmits code that does not include confidential code to the development tool 20 for editing program code.
- the transmission unit 111 may transmit code that includes confidential code to the language server 30 that is independent of the development tool 20.
- the transmission unit 111 transmits source code that does not include confidential code to the development tool 20 and transmits source code that includes confidential code to the language server 30, so that both the development tool 20 and the language server 30 hold the source code, but the development tool 20 does not hold the confidential code.
- the transmission unit 111 transmits code that does not contain the confidential code to the development tool 20, thereby isolating the confidential code from the development tool 20 and preventing leakage of the confidential code, thereby enabling the development tool 20 to perform the editing process.
- the receiving unit 112 receives a command related to editing the code that does not include confidential code, which is transmitted by the transmitting unit 111, from the development tool 20.
- the receiving unit 112 receives a command related to the code editing process from the communication unit 21 of the development tool 20 via a network such as the Internet.
- the receiving unit 112 may receive a reply related to the editing process from the language server 30.
- the receiving unit 112 receives a reply to the command from the communication unit 31 of the language server 30 via the network.
- the control unit 12 controls the entire LSP proxy 10.
- the control unit 12 is configured with one or more processors having programs in which various processing procedures are defined and internal memory in which control information is stored, and the processor executes each process using the programs and internal memory.
- the control unit 12 is realized by, for example, electronic circuits such as a CPU (Central Processing Unit), an MPU (Micro Processing Unit), or a GPU (Graphics Processing Unit), or integrated circuits such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field Programmable Gate Array).
- the control unit 12 has an access check unit 121.
- the access check unit 121 executes checks regarding access to code and controls regarding editing, based on the command received by the receiving unit 112. As a result, the access check unit 121 allows editing of the program code only when the accessed code is not confidential code such as releasable code, and therefore it is possible to allow editing of the program code while suppressing the risk of confidential code leaking.
- the access check unit 121 may reflect the edit content in the code containing confidential code of the language server 30 based on the command received by the receiving unit 112.
- the access check unit 121 requests the language server 30 to modify the OKClass file, such as by adding a variable to OKClass2 on the memory unit 33 of the language server 30.
- the access check unit 121 can reflect the edit of the program code in the code of the language server 30 while reducing the risk of confidential code leaking.
- the storage unit 13 stores various information.
- the storage unit 13 stores source code including confidential code, an OS (Operating System) executed by the LSP proxy 10, various programs, etc.
- the storage unit 13 is realized by, for example, a storage device such as a hard disk drive (HDD), a solid state drive (SSD), or an optical disk, or a semiconductor memory capable of rewriting information such as a random access memory (RAM), a flash memory, or a non-volatile static random access memory (NVSRAM).
- HDD hard disk drive
- SSD solid state drive
- NVSRAM non-volatile static random access memory
- the development tool 20 is an editing device for performing editing processing on the code of a program.
- the development tool 20 is realized by, for example, Vscode or the like.
- the editing device is the development tool 20 for performing development such as editing and debugging of a program, but is not particularly limited as long as it has the above-mentioned functions.
- the development tool 20 has a communication unit 21, a control unit 22, a storage unit 23, an operation reception unit 24, and a display unit 25.
- the communication unit 21 transmits and receives various information to and from the LSP proxy 10.
- the communication unit 21 is realized by, for example, a NIC. In the example shown in FIG.
- the transmitting unit 211 transmits various information to the LSP proxy 10. For example, the transmitting unit 211 transmits to the LSP proxy 10 a command related to an editing process for the code.
- the receiving unit 212 receives various information from the LSP proxy 10. For example, the receiving unit 212 receives from the LSP proxy 10 source code that does not include confidential code.
- the control unit 22 controls the entire development tool 20.
- the control unit 22 is configured with one or more processors having programs that define various processing procedures and internal memory that stores control information, and the processor executes each process using the programs and internal memory.
- the control unit 22 is realized, for example, by electronic circuits such as a CPU, MPU, GPU, or integrated circuits such as an ASIC or FPGA.
- the storage unit 23 stores various information.
- the storage unit 23 stores source code that does not include confidential code, and an OS and various programs executed by the development tool 20.
- the storage unit 23 is realized by, for example, a storage device such as an HDD, SSD, or optical disk, or a semiconductor memory such as a RAM, flash memory, or NVSRAM that is capable of rewriting information.
- the operation reception unit 24 receives various operations.
- the operation reception unit 24 receives commands related to editing processes for code from a developer's terminal.
- the operation reception unit 24 is realized, for example, by a unit that receives editing operations related to editing processes from a developer's terminal via the Internet, or by a GUI, etc.
- the display unit 25 displays various information. For example, the display unit 25 displays the contents of a reply to a command.
- the display unit 25 is realized by, for example, the desktop of the terminal.
- the language server 30 is a server independent of the editing device.
- the language server 30 is a server for performing editing processing independent of the development tool 20.
- the language server 30 has a communication unit 31, a control unit 32, and a storage unit 33.
- the communication unit 31 transmits and receives various information to and from the LSP proxy 10.
- the communication unit 31 is realized by, for example, a NIC. In the example shown in FIG.
- the transmitting unit 311 transmits various information to the LSP proxy 10. For example, the transmitting unit 311 transmits to the LSP proxy 10 a reply to a command.
- the receiving unit 312 receives various information from the LSP proxy 10. As one example, the receiving unit 312 receives source code including confidential code from the LSP proxy 10. As another example, the receiving unit 312 receives a command from the LSP proxy 10 including stack frames of functions such as NGClass, RefNGClass, and SecretFramework that are not on the permission list.
- the control unit 32 controls the entire language server 30.
- the control unit 32 is configured with one or more processors having programs that define various processing procedures and internal memory that stores control information, and the processor executes each process using the programs and internal memory.
- the control unit 32 is realized, for example, by electronic circuits such as a CPU, MPU, GPU, or integrated circuits such as an ASIC or FPGA.
- the storage unit 33 stores various information.
- the storage unit 33 stores source code including confidential code, an OS and various programs executed by the language server 30.
- the storage unit 33 is realized by, for example, a storage device such as an HDD, SSD, or optical disk, or a semiconductor memory such as a RAM, flash memory, or NVSRAM that is capable of rewriting information.
- FIG. 5 is a flowchart showing an example of the flow of processing executed by the control system according to the first embodiment.
- the transmission unit 111 transmits code that does not include confidential code to a development tool 20 for editing program code.
- the transmission unit 111 transmits source code that does not include confidential code to the development tool 20, and transmits source code that includes confidential code to the language server 30.
- step S12 the receiving unit 112 receives from the development tool 20 a command related to editing the code that does not contain confidential code, which was sent by the sending unit 111.
- the receiving unit 112 receives a command related to the code editing process from the communication unit 21 of the development tool 20 via a network such as the Internet.
- step S13 the access check unit 121 checks access to the code and controls editing based on the command received by the receiving unit 112.
- the access check unit 121 requests the language server 30 to modify the OKClass file, such as by adding a variable to OKClass2 on the memory unit 33 of the language server 30.
- FIG. 6 and Fig. 7 are diagrams for explaining an example of an outline of a control system according to the second embodiment.
- the control system 1X has an LSP proxy 10X instead of the LSP proxy 10 according to the first embodiment.
- the control system 1X prohibits the operation that may lead to the leakage of confidential code information through the LSP proxy 10X. This allows the control system 1X to reduce the risk of confidential code leakage in interactions with the development tool 20 associated with the editing process.
- the examples shown in Figs. 6 and 7 are merely examples, and the control system 1X according to this embodiment is not limited to the examples shown in Figs. 6 and 7.
- the LSP proxy 10X when a command includes an operation that can lead to the leakage of confidential code information, the LSP proxy 10X can prohibit the operation that can lead to the leakage of confidential code information.
- Fig. 7 is also a sequence diagram showing an example of the flow of the prohibition process of operations that may lead to leakage of confidential code information by the control system 1X.
- the development tool 20 accepts an editing operation from the developer via the GUI of the developer's terminal and a network such as the Internet to perform a code jump to RefNGClass, which is internal hidden code (operation to jump to RefNGClass (0) in FIG. 6).
- the development tool 20 transmits, for example, a command to the LSP proxy 10X to notify it of a code jump to RefNGClass (command transmission (jump notification to RefNGClass) in FIG. 6 (1)).
- the access check unit 121X of the LSP proxy 10X analyzes the command received from the development tool 20, and if the command includes an operation that leads to information leakage of the confidential code, prohibits the operation that leads to information leakage of the confidential code. As an example, the access check unit 121X of the LSP proxy 10X determines that the command includes an operation notifying a code jump to RefNGClass, which is an internal hidden code, and prohibits this operation. The LSP proxy 10X does not notify the language server 30 of the code jump to RefNGClass. Next, the LSP proxy 10X, for example, replies to the command notifying the development tool 20 that the code jump is NG (No good) ((2) Command reply (notification of jump NG) in FIG. 6). The development tool 20 displays that the operation notifying a code jump to RefNGClass has been prohibited ((3) Display of prohibition of jump to RefNGClass in FIG. 6).
- the development tool 20 sends a command to the LSP proxy 10X notifying it of a code jump to RefNGClass ((1) Command transmission (jump notification to RefNGClass) in FIG. 7).
- the access check unit 121X of the LSP proxy 10X analyzes the command received from the development tool 20, and if the command includes an operation that could lead to the leakage of confidential code information, the access check unit 121X prohibits the operation that could lead to the leakage of confidential code information.
- the access check unit 121X of the LSP proxy 10X determines that the command includes an operation to notify a code jump to RefNGClass, which is internal hidden code.
- the access check unit 121X of the LSP proxy 10X also determines that, for example, RefNGClass is executable but is internal hidden code that cannot be made public, and therefore the code jump should be prohibited.
- the LSP proxy 10X sends a reply to the command, for example, to the development tool 20, notifying that the code jump is NG ((2) Command reply (notification of jump NG) in FIG. 7).
- FIG. 8 is a diagram showing an example of the configuration of a control system according to the second embodiment.
- the control system 1X has an LSP proxy 10X instead of the LSP proxy 10 according to the first embodiment.
- the LSP proxy 10X prohibits operations that lead to information leakage of confidential code when the operations include operations that lead to information leakage of confidential code.
- the LSP proxy 10X has a control unit 12X instead of the control unit 12 in the first embodiment.
- the LSP proxy 10X is similar to the LSP proxy 10 according to the first embodiment.
- Control unit 12X has an access check unit 121X instead of the access check unit 121 in the first embodiment. Except for this, the control unit 12X is similar to the control unit 12 in the first embodiment.
- the access check unit 121X prohibits the operation that may lead to leakage of confidential code information. For example, the access check unit 121X prohibits the operation of viewing the confidential code. This allows the access check unit 121X to reduce the risk of leakage of confidential code in communication with the development tool 20 associated with the editing process.
- Operations that may lead to information leakage of confidential code may include not only operations that directly access confidential code, as in the above example, but also operations that allow indirect access to confidential code.
- an operation that allows access to a function that has the ability to obtain information at the time a program is executed (hereinafter, a reflection function) (e.g., importing a reflection function) allows the developer of development tool 20 to obtain the names of functions (classes and methods) during program execution, making it possible to view confidential code by using the reflection function.
- the access check unit 121X may prohibit the operation that indirectly leads to information leakage of the confidential code.
- the access check unit 121X prohibits an operation that accesses a prohibited function such as the reflection function described above. This allows the access check unit 121X to further reduce the risk of confidential code leakage in interactions with the development tool 20 associated with the editing process.
- the access check unit 121X may prohibit the operation.
- the access check unit 121X determines that the command includes an operation notifying a code jump to RefNGClass, which is internal hidden code, the access check unit 121X prohibits this operation.
- the code function is confidential, such as internal hidden code, confidential code whose function calling is permitted may be accessed depending on the operation.
- the access check unit 121X prohibits an operation that leads to access to confidential code whose code function is not public, thereby further reducing the risk of confidential code leakage in interactions with the development tool 20 associated with the editing process.
- Fig. 9 is a flowchart showing an example of the flow of processing executed by the control system according to the second embodiment. Steps S21 and S22 in Fig. 9 are similar to steps S11 and S12 in Fig. 5.
- step S23 the access check unit 121X determines whether the command received by the receiving unit 112 includes an operation that may lead to leakage of the confidential code. If the access check unit 121X determines that the command received by the receiving unit 112 includes an operation that may lead to leakage of the confidential code (Yes in step S23), then in step S24, the access check unit 121X prohibits the operation that may lead to leakage of the confidential code. For example, the access check unit 121X prohibits the operation of viewing the confidential code.
- the access check unit 121X determines that the command received by the receiving unit 112 does not include an operation that could lead to information leakage of confidential code (No in step S23), it executes control over editing in step S25.
- the code to be edited that is, OKClass
- the access check unit 121 requests the language server 30 to modify the file of OKClass, such as by adding a variable to OKClass2 on the memory unit 33 of the language server 30.
- Fig. 10 is a diagram for comparison with the control system according to the first embodiment.
- the development tool 20 of the control system 1 accepts an input operation of "com.xxx.” from a developer via the GUI of the developer's terminal and a network such as the Internet ((0) Input com.xxx. in FIG. 10).
- the development tool 20 transmits, for example, a command to the LSP proxy 10 to notify it of the completion of code based on "com.xxx.” ((1) Send command (notification of code completion) in FIG. 10).
- the access check unit 121 of the LSP proxy 10 checks access to the code and controls editing, for example, based on the command. For example, if the code being accessed is publicly available code such as OKClass, the LSP proxy 10 determines that the access conditions are met, and sends a command to the language server 30 to notify it that the code will be completed based on "com.xxx.” ((2) Command transmission (notification of code completion) in FIG. 10).
- the language server 30 analyzes the source code based on, for example, a command received from the LSP proxy 10, lists up a list of class names of code of completion candidates under "com.xxx.”, including classes of completely concealed code, and returns this to the LSP proxy 10 ((3) Command return (list of class names of completion candidates) in FIG. 10).
- the LSP proxy 10 returns, for example, a list of class names of code of completion candidates under "com.xxx.”, including classes of completely concealed code, received from the language server 30, to the development tool 20 ((4) Command return (list of class names of completion candidates) in FIG. 10).
- the development tool 20 displays completion candidates based on, for example, the list of class names of code of completion candidates under "com.xxx.”, including classes of completely concealed code, received from the LSP proxy 10 ((5) Display of completion candidates in FIG. 10).
- the development tool 20 can also request analysis (compilation, etc.) of the confidential code. Therefore, even if the development tool 20 does not have the confidential code, if the name and path of the completion candidate code is known, the development tool 20 can obtain internal information about the confidential code (property and method names), and it is not impossible that the implementation details can be understood. Thus, in the control system 1 according to the first embodiment, there is a non-zero risk that the implementation details of the confidential code will be leaked from the reply to the command.
- control system 1Y sends a reply regarding the edit to the development tool 20, and if the reply regarding the edit contains content that could lead to information leakage of confidential code, the control system 1Y conceals or deletes that content.
- the control system 1Y can further reduce the risk of confidential code leakage in interactions with the development tool 20 associated with the edit process, compared to the control system 1 according to the first embodiment.
- Fig. 11 and Fig. 12 are diagrams for explaining an example of the outline of a control system according to the third embodiment.
- the control system 1Y has an LSP proxy 10Y instead of the LSP proxy 10 according to the first embodiment.
- the LSP proxy 10Y further has a reply content concealment unit 122.
- control system 1Y according to this embodiment is not limited to the example shown in FIG. 11 and FIG. 12.
- the control system 1Y according to this embodiment sends a reply regarding the edit to the development tool 20 via the LSP proxy 10Y, and if the content of the reply regarding the edit includes content that could lead to the leakage of confidential code information, the content can be made confidential or deleted.
- FIG. 12 is also a sequence diagram showing an example of the flow of concealment or deletion processing of contents that may lead to information leakage of confidential code by the control system 1Y.
- the reply content concealment unit 122 of the LSP proxy 10Y which is a relay mechanism, analyzes the reply content to the command, and if the reply content includes content that could lead to information leakage of confidential code, the reply content is concealed by masking the reply content, or deleted (hereinafter, concealment or deletion is also referred to as "masking"). For example, if the reply content includes a completely concealed code class such as NGClass, or a function name or path, the reply content concealment unit 122 deletes the completely concealed code class such as NGClass, the function name or path from the completion candidates ((4) Masking reply content (class of confidential code (completely concealed code) is deleted) in FIG. 11).
- the LSP proxy 10Y sends a reply to the command notifying, for example, a list of class names of completion candidates in which confidential code such as completely concealed code has been masked ((5) Command reply (list of class names of masked completion candidates) in FIG. 11).
- the development tool 20 displays a list of class names of completion candidate codes in which confidential code, such as completely concealed code, has been masked ((6) Display of completion candidates in FIG. 11).
- the confidential code class is not displayed among the completion candidates, so the developer does not know that confidential code such as completely concealed code exists. Therefore, the LSP proxy 10Y can allow the developer to edit the code without showing the developer any clues that might expose the confidential code.
- the reply content concealment unit 122 of the LSP proxy 10Y analyzes the reply content to the command, and if the reply content includes content that could lead to information leakage of confidential code, the reply content is concealed by masking the reply content, or deleted. For example, if the reply content to the command includes a completely concealed code class such as NGClass that is neither publicly accessible nor executable, or a function name or path, the reply content concealment unit 122 deletes the completely concealed code class such as NGClass, the function name or path from the completion candidates ((4) Reply content concealment (masking) in FIG. 12).
- the LSP proxy 10Y sends a reply to the command notifying, for example, a list of class names of completion candidates in which confidential code such as completely concealed code has been masked ((5) Command reply (confidential code (completely concealed code class deleted) in FIG. 12).
- FIG. 13 is a diagram showing an example of the configuration of a control system according to the third embodiment.
- the control system 1Y has an LSP proxy 10Y instead of the LSP proxy 10 according to the first embodiment.
- the LSP proxy 10Y sends a reply regarding the edit to the development tool 20, and if the reply contains content that could lead to information leakage of confidential code, the reply conceals or deletes the content.
- the LSP proxy 10Y has a control unit 12Y instead of the control unit 12 in the first embodiment.
- the LSP proxy 10Y is similar to the LSP proxy 10 according to the first embodiment.
- the control unit 12Y further includes a reply content concealment unit 122. Except for this, the control unit 12Y is similar to the control unit 12 in the first embodiment.
- the reply content concealment unit 122 conceals or deletes the content. This allows the reply content concealment unit 122 to further reduce the risk of confidential code leakage in communication with the development tool 20 accompanying the edit process.
- the reply content concealment unit 122 may conceal or delete the content.
- the reply content to a command includes a completely concealed code class such as NGClass that is neither publicly accessible nor executable, a function name, or a path
- the reply content concealment unit 122 deletes the completely concealed code class such as NGClass, the function name, or path from the completion candidates.
- the reply content concealment unit 122 can further reduce the risk of confidential code leakage by concealing or deleting content that leads to information leakage of confidential code in which the code function is not public and the function cannot be called.
- FIG. 14 is a flowchart showing an example of the flow of processing executed by the control system according to the third embodiment. Steps S31 to S33 in Fig. 14 are similar to steps S11 to S13 in Fig. 5.
- step S34 the reply content concealment unit 122 determines whether the reply content regarding the edit performed by the transmission unit 111 includes content that could lead to information leakage of confidential code. If the reply content concealment unit 122 determines that the reply content includes content that could lead to information leakage of confidential code (Yes in step S34), in step S35, the reply content concealment unit 122 conceals or deletes the content. For example, if the reply content to the command includes a completely concealed code class such as NGClass that is neither publicly accessible nor executable, or a function name or path, the reply content concealment unit 122 deletes the completely concealed code class such as NGClass, the function name and path from the completion candidates.
- NGClass completely concealed code class
- the reply content concealment unit 122 deletes the completely concealed code class such as NGClass, the function name and path from the completion candidates.
- step S36 the transmission unit 111 transmits the reply content to the development tool 20.
- the transmission unit 111 transmits a reply to the development tool 20 for a command in which the class of completely concealed code such as NGClass, and the name and path of the function have been deleted from the completion candidates.
- the LSP proxy 10Y of the control system 1Y according to the third embodiment can also be extended to a relay mechanism with the execution environment.
- the execution environment refers to a device that executes an edit-related process, such as a test environment that is a device that tests an edit-related process. If the contents of the execution result by the execution environment performed by the transmission unit 111 include contents that lead to information leakage of confidential code, the reply content concealment unit 122 of the LSP proxy 10Y of the control system 1Y conceals or deletes the contents.
- FIG. 15 is a diagram for explaining an example of an overview of a control system according to a modified example of the control system according to the third embodiment.
- the language server 30 has been changed to an execution environment 40.
- the development tool 20 sends a command to the LSP proxy 10Y regarding a request for test execution ((1) Command transmission (request for test execution) in FIG. 15).
- the LSP proxy 10Y sends a command to the execution environment 40 regarding a request for test execution ((2) Command transmission (request for test execution) in FIG. 15).
- the execution environment 40 executes a test based on the request for test execution received from the LSP proxy 10Y, for example.
- the execution environment 40 sends a reply to the command to the LSP proxy 10Y notifying it of a stack trace (a history of functions, methods, etc. that were executed immediately before the failure) which is the test execution result when the test fails, for example, if an error occurs during the test.
- the execution environment sends a reply to the command to the LSP proxy 10Y notifying it of the test execution result (stack trace) which includes a completely hidden code class such as NGClass ((3) Command reply (test execution result) in FIG. 15).
- the reply content concealment unit 122 of the LSP proxy 10Y conceals or deletes the contents.
- the reply content concealment unit 122 since the contents of the test execution result include a class of complete concealment code such as NGClass, the reply content concealment unit 122 conceals the class of complete concealment code by masking the class of complete concealment code such as NGClass ((4) Concealment (masking) of reply content in FIG. 15).
- the LSP proxy 10Y sends a reply to the command to the development tool 20, notifying the development tool 20 of the test execution result in which the contents that may lead to information leakage of the confidential code have been concealed or deleted by the concealment process of the reply content concealment unit 122.
- the LSP proxy 10Y sends a reply to the command to the development tool 20, notifying the development tool 20 of the test execution result in which the class of the complete concealment code has been concealed by a mask that covers the class of the complete concealment code, such as NGClass ((5) Sending a command in FIG. 15 (Test execution result in which the confidential code (complete concealment code) has been concealed)).
- the reply content concealment unit 122 of the LSP proxy 10Y in the control system 1Y can also be applied to masking the test execution results, and can also contribute to preventing information leakage from interactions with the execution environment 40.
- the reply content concealment unit 122 can suggest to the developer that the contents include confidential code by concealing the contents.
- the reply content concealment unit 122 may be able to suggest, for example, that the cause of an error is not due to the developer's editing process or the like, but due to the concealed contents. Therefore, by concealing the contents of the execution result by the execution environment 40, such as a test environment, the reply content concealment unit 122 can make it easier for the developer to understand the cause of the error compared to the case of deleting the contents.
- the LSP proxy 10, the LSP proxy 10X, and the LSP proxy 10Y can be implemented by installing a control program as package software or online software in a computer.
- the computer can function as the LSP proxy 10, the LSP proxy 10X, and the LSP proxy 10Y by executing the control program.
- FIG. 16 is a diagram showing an example of the configuration of a computer that executes a control program.
- the computer 1000 has a memory 1010, a CPU 1020, a hard disk drive interface 1030, a disk drive interface 1040, a serial port interface 1050, a video adapter 1060, and a network interface 1070. Each of these components is connected by a bus 1080.
- the memory 1010 includes a ROM (Read Only Memory) 1011 and a RAM 1012.
- the ROM 1011 stores a boot program such as a BIOS (Basic Input Output System).
- BIOS Basic Input Output System
- the hard disk drive interface 1030 is connected to a hard disk drive 1090.
- the disk drive interface 1040 is connected to a disk drive 1100.
- a removable storage medium such as a magnetic disk or optical disk is inserted into the disk drive 1100.
- the serial port interface 1050 is connected to, for example, a mouse 1110 and a keyboard 1120.
- the video adapter 1060 is connected to, for example, a display 1130.
- the hard disk drive 1090 stores, for example, an OS 1091, an application program 1092, a program module 1093, and program data 1094. That is, the program that defines each process executed by the LSP proxy 10 is implemented as a program module 1093 in which computer-executable code is written.
- the program module 1093 is stored, for example, in the hard disk drive 1090.
- a program module 1093 for executing processes similar to the functional configuration of the LSP proxy 10 is stored in the hard disk drive 1090.
- the hard disk drive 1090 may be replaced by an SSD.
- the data used in the processing of the above-described embodiment is stored as program data 1094, for example, in memory 1010 or hard disk drive 1090. Then, the CPU 1020 reads the program module 1093 or program data 1094 stored in memory 1010 or hard disk drive 1090 into RAM 1012 as necessary and executes it.
- the program module 1093 and program data 1094 are not limited to being stored in the hard disk drive 1090, but may be stored in a removable storage medium, for example, and read by the CPU 1020 via the disk drive 1100 or the like. Alternatively, the program module 1093 and program data 1094 may be stored in another computer connected via a network (such as a LAN (Local Area Network), WAN (Wide Area Network)). The program module 1093 and program data 1094 may then be read by the CPU 1020 from the other computer via the network interface 1070.
- a network such as a LAN (Local Area Network), WAN (Wide Area Network)
- Control system 10 LSP proxy (control device) 11, 21, 31 Communication unit 12, 22, 32 Control unit 13, 23, 33 Storage unit 20 Development tool (editing device) 24 Operation reception unit 25 Display unit 30 Language server 111, 211, 311 Transmission unit 112, 212, 312 Reception unit 121 Access check unit
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
LSPプロキシ(10)は、プログラムのコードを編集するための開発ツール(20)に、機密コードが含まれないコードを送信する送信部(111)と、送信部(111)によって送信された機密コードが含まれないコードの編集に関するコマンドを開発ツール(20)から受信する受信部(112)と、受信部(112)によって受信されたコマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行するアクセスチェック部(121)と、を有する。
Description
本発明は、制御装置、制御方法および制御プログラムに関する。
ソフトウェア開発の現状として、フリーランスやクラウドソーシングの活用、リモートワークの推進により、企業の管理区画外(自宅やシェアオフィス等)でのプログラムのコードの編集、デバッグ等の開発の遂行が増加している。例えば、通常はコードを編集するための編集装置(プログラムの編集、デバッグ等の開発を行うための開発ツール等)によって提供されるプログラミング支援機能を、編集装置とは独立したサーバから提供可能にするための通信処理等を行うコードの編集処理の公開プロトコル(LSP:Language Server Protocol)が近年公開されている。LSPの活用例として、LSPによって、コードジャンプといったコードの定義の参照元に移動する定義移動や、コードの入力の途中で文脈に沿うようにコードを提供してコードを補完するコード補完等のプログラミング支援機能を、編集装置から独立したサーバ(以降、言語サーバ)からの提供を可能とする例が存在する(例えば、非特許文献1参照)。
Language Server Protocol,[online],[2023年6月19日検索],インターネット<https://microsoft.github.io/language-server-protocol/>
しかし、従来技術では、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を行わせることができない場合がある。例えば、従来技術では、企業によって保有されていたり、顧客から委託されたりするプログラムに含まれる機密コードが、リモートでコードの編集等を行う開発者によって閲覧されうるセキュリティ上の懸念がある。また、開発者が外部の攻撃者ではない開発プロジェクトに所属するリモート開発者であっても、開発者によるオペレーションミス等により、外部のWebサイトや外部のリポジトリに、機密コードが公開されてしまうコードの漏洩のリスクが高くなっている。
上述の課題を解決するため、本発明は、プログラムのコードを編集するための編集装置に、機密コードが含まれないコードを送信する送信部と、前記送信部によって送信された前記機密コードが含まれないコードの編集に関するコマンドを前記編集装置から受信する受信部と、前記受信部によって受信された前記コマンドに基づいて、前記コードへのアクセスに関するチェックおよび前記編集に関する制御を実行する制御部と、を有する。
本発明によれば、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を行わせることができる。
以下、図面を用いて本発明の実施形態について説明するが、本発明は、以下の実施形態に限定されない。また、図面の記載は、同一部分には同一の符号を付しており、重複する説明は省略され、同様の機能を有する部材および同様の処理の説明も省略される。
[0.参考技術]
[概要の一例]
本実施形態について説明する前に、図17を用いて、参考技術に係る制御システム1#の概要の一例について説明する。図17は、参考技術に係る制御システムの概要の一例について説明するための図である。制御システム1#は、コードの編集処理を行う。図17に示される例では、制御システム1#は、プログラミング支援機能(コードジャンプといった定義移動やコード補完等)を、開発ツール20と、開発ツール20とは独立した言語サーバ30と、LSP10#とを有する。LSP10#は、言語サーバ30のコードに対する編集処理を提供するための通信処理を行う編集処理の公開プロトコルである。
[概要の一例]
本実施形態について説明する前に、図17を用いて、参考技術に係る制御システム1#の概要の一例について説明する。図17は、参考技術に係る制御システムの概要の一例について説明するための図である。制御システム1#は、コードの編集処理を行う。図17に示される例では、制御システム1#は、プログラミング支援機能(コードジャンプといった定義移動やコード補完等)を、開発ツール20と、開発ツール20とは独立した言語サーバ30と、LSP10#とを有する。LSP10#は、言語サーバ30のコードに対する編集処理を提供するための通信処理を行う編集処理の公開プロトコルである。
[プログラミング支援機能の利用の一例]
まず、図17を用いて、制御システム1#によるプログラミング支援機能の利用の一例について説明する。図17に示される例では、制御システム1#のLSP10#は、あらかじめ、参照用のソースコードを開発ツール20および言語サーバ30に送信する。ソースコードとは、例えば、プログラミング言語等の人間が理解、記述しやすい言語やデータ形式によって書き記されたコンピュータプログラムのことをいう。
まず、図17を用いて、制御システム1#によるプログラミング支援機能の利用の一例について説明する。図17に示される例では、制御システム1#のLSP10#は、あらかじめ、参照用のソースコードを開発ツール20および言語サーバ30に送信する。ソースコードとは、例えば、プログラミング言語等の人間が理解、記述しやすい言語やデータ形式によって書き記されたコンピュータプログラムのことをいう。
図17に示される例では、制御システム1#の開発ツール20は、開発者からOKClass2というコードにコードジャンプする編集操作を受け付ける(図17の(0)OKClass2にジャンプする操作)。次に、LSP10#は、例えば、開発ツール20から受信した編集処理に関するコマンド(OKClass2というコードにコードジャンプする編集操作の通知(命令))を言語サーバ30に送信する(図17の(1)コマンド送信(OKClass2へのジャンプ通知))。次に、言語サーバ30は、例えば、コマンドの内容に含まれるジャンプ先であるOKClass2というコードを解析し、このコードの位置情報を取得する(図17の(2)ジャンプ先の位置情報を取得)。
次に、LSP10#は、例えば、言語サーバ30から受信したコマンドに対する返信を開発ツール20に対して行う(図17の(3)コマンド返信(OKClass2の位置情報))。次に、開発ツール20は、例えば、LSP10#から受信したコマンドに対する返信におけるOKClass2というコードの位置情報に基づき、コードジャンプする(図17の(4)位置情報に基づきジャンプ)。次に、開発ツール20は、例えば、コードジャンプしたジャンプ先を開発者に向けて表示する(図17の(5)ジャンプ先を表示)。
[課題の一例]
上述のように制御システム1#がLSP10#を利用した場合、参考技術には、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を行わせることができない場合がある。例えば、参考技術では、企業によって保有されていたり、顧客から委託されたりするプログラムに含まれる機密コードが、リモートでコードの編集等を行う開発者によって閲覧されうるセキュリティ上の懸念がある。また、開発者が外部の攻撃者ではない開発プロジェクトに所属するリモート開発者であっても、開発者によるオペレーションミス等により、外部のWebサイトや外部のリポジトリに、機密コードが公開されてしまうコードの漏洩のリスクが高くなっている。
上述のように制御システム1#がLSP10#を利用した場合、参考技術には、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を行わせることができない場合がある。例えば、参考技術では、企業によって保有されていたり、顧客から委託されたりするプログラムに含まれる機密コードが、リモートでコードの編集等を行う開発者によって閲覧されうるセキュリティ上の懸念がある。また、開発者が外部の攻撃者ではない開発プロジェクトに所属するリモート開発者であっても、開発者によるオペレーションミス等により、外部のWebサイトや外部のリポジトリに、機密コードが公開されてしまうコードの漏洩のリスクが高くなっている。
本実施形態は、上述の課題を解決するためになされたものであり、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を行わせることができる。
[1.第一の実施形態]
[概要の一例]
以下、図1~図4を用いて、第一の実施形態に係る制御システム1の概要の一例について説明する。図1および図3は、制御システムの概要の一例について説明するための図である。図2は、機密コードの一例を示す図である。図1~図3に示される例では、制御システム1は、参考技術に係るLSP10#の代わりに、LSPプロキシ10を有する。
[概要の一例]
以下、図1~図4を用いて、第一の実施形態に係る制御システム1の概要の一例について説明する。図1および図3は、制御システムの概要の一例について説明するための図である。図2は、機密コードの一例を示す図である。図1~図3に示される例では、制御システム1は、参考技術に係るLSP10#の代わりに、LSPプロキシ10を有する。
図1~図4に示される例では、制御システム1は、LSPプロキシ10によって、開発ツール20に、機密コードが含まれないコードを送信し、機密コードが含まれないコードの編集に関するコマンドを開発ツール20から受信し、コマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行する。これにより、制御システム1は、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を行わせることができる。
ここで、LSPプロキシ10とは、例えば、開発ツール20と言語サーバ30との中継機構であり、参考技術のLSP10#に対応するものをいう。開発ツール20とは、例えば、プログラムのコードを編集するための編集装置のことをいう。コマンドとは、例えば、コードの編集に関するコマンドのことをいう。編集に関する制御とは、例えば、編集に関する操作や表示の制御のことをいい、例えば、編集に関する操作を禁止する制御のことをいう。機密コードとは、例えば、開発者に対して、関数の中身等を非公開にすべきコードのことをいう。
また、図1~図4に示される例では、制御システム1は、開発ツール20とは独立した言語サーバ30に機密コードが含まれるコードを送信し、コマンドに基づいて、言語サーバ30の機密コードが含まれるコードに編集の内容を反映させる。これにより、制御システム1は、開発ツール20側には機密コードを含めず、開発ツール20および言語サーバ30の双方にソースコード等のコードを保持させることができる。また、制御システム1は、開発ツール20側に、機密コード以外のコードの編集のみを実施させ、LSPコマンドの中継機構であるLSPプロキシ10を介して、言語サーバ30のソースコード等のコードに編集内容を反映させることができる。
なお、図1~図4に示される例は一例にすぎず、本実施形態に係る制御システム1は、図1~図4に示される例に限定されない。本実施形態に係る制御システム1は、LSPプロキシ10によって、機密コードが含まれないコードを送信し、機密コードが含まれないコードの編集に関するコマンドを開発ツール20から受信し、コマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行すればよい。
[機密コードの一例]
次に、図2を用いて機密コードの一例について説明する。プログラムの開発では、ソースコードを解析し、コンピュータが直接実行可能な形式のプログラムに変換するコンパイルを行い、プログラムを実行することが要求される。機密コードも、開発過程において、別コードから呼び出される場合がある。
次に、図2を用いて機密コードの一例について説明する。プログラムの開発では、ソースコードを解析し、コンピュータが直接実行可能な形式のプログラムに変換するコンパイルを行い、プログラムを実行することが要求される。機密コードも、開発過程において、別コードから呼び出される場合がある。
そこで、図1~図4に示される例では、制御システム1は、機密コードを内部隠ぺいコードと完全隠ぺいコードとの二つに分類する。図2に示されるように、内部隠ぺいコードとは、関数の中身が非公開である一方で、関数の呼び出しは許可されているコードのことをいう。すなわち、内部隠ぺいコードとは、開発者がプログラミングをする上で、呼び出せるコードであり、開発者に対して、関数の存在そのものは秘匿にしないコードのことをいう。完全隠ぺいコードとは、関数の中身が非公開であることに加えて、関数の呼び出しが許可されていないコードのことをいう。すなわち、完全隠ぺいコードとは、開発者がプログラミングをする上で、呼び出せないコードであり、開発者に対し、関数の存在そのものも秘匿にするコードのことをいう。図1~図4に示される例では、制御システム1は、どちらのコードであっても、開発過程において実装内容を秘匿することを目的とする。
[機密コードの分離およびアクセスチェックの一例]
図1および図3を用いて制御システム1による機密コードの分離およびアクセスチェックの一例について説明する。図3は、制御システム1による機密コードの分離およびアクセスチェック処理の流れの一例を示すシーケンス図でもある。
図1および図3を用いて制御システム1による機密コードの分離およびアクセスチェックの一例について説明する。図3は、制御システム1による機密コードの分離およびアクセスチェック処理の流れの一例を示すシーケンス図でもある。
図1に示される例では、まず、開発ツール20は、開発者の端末のGUI(Grafic User Interface)およびインターネット等のネットワークを介して、開発者からOKClassに変数を追加する編集操作を受け付ける(図1の(0)OKClassに変数を追加する操作)。次に、開発ツール20は、例えば、LSPプロキシ10に、OKClassのファイルを変更することを通知するコマンドを送信する(図1の(1)コマンド送信(OKClassのファイル変更通知))。次に、LSPプロキシ10のアクセスチェック部121は、例えば、コマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行する。一例として、アクセスチェック部121は、編集されるコードであるOKClassが公開可能コードであるかどうかで、アクセスの条件が満たされるかどうかをチェックする。ここで、アクセスの条件とは、例えば、コードにアクセス可能な条件のことをいう。一例として、アクセスの条件とは、アクセス先のコードが機密コードでないコード(例えば、後述のアクセスすることができるAllow list(許可リスト=公開可能コードのリスト)として設定されているOKClassおよびOKClass2等)であることをいう。
次に、LSPプロキシ10は、例えば、アクセスの条件が満たされる場合、言語サーバ30に、OKClassのファイルを変更することを通知するコマンドを送信する(図1の(2)コマンド送信(OKClassのファイル変更通知))。一例として、LSPプロキシ10は、編集されるコードであるOKClassが公開可能コードであれば、アクセスの条件が満たされると判断し、言語サーバ30のメモリ(記憶部)上のOKClass2に変数を追加する等、言語サーバ30にOKClassのファイルを変更することを依頼する。これにより、アクセスチェック部121は、アクセス先のコードが公開可能コード等の機密コードでない場合のみ、プログラムのコードの編集を行わせるため、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を行わせることができる。
次に、開発ツール20は、例えば、最初にLSPプロキシ10から送信された機密コードが含まれないソースコードを更新する(図1の(3-1)ソースコードの更新)。次に、開発ツール20は、例えば、LSPプロキシ10に、OKClassのファイルを保存することを通知するコマンドを送信する(図1の(3-2)コマンド送信(OKClassのファイル保存通知))。
次に、アクセスチェック部121は、例えば、コマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行する。一例として、アクセスチェック部121は、保存されるコードであるOKClassが公開可能コードであるかどうかで、アクセスの条件が満たされるかどうかをチェックする。次に、LSPプロキシ10は、例えば、アクセスの条件が満たされる場合、言語サーバ30に、OKClassのファイルを保存することを通知するコマンドを送信する(図1の(3-3)コマンド送信(OKClassのファイル保存通知))。一例として、LSPプロキシ10は、保存されるコードであるOKClassが公開可能コードであれば、アクセスの条件が満たされると判断し、言語サーバ30に、OKClassのファイルを保存することを依頼する。これにより、LSPプロキシ10は、アクセス先のコードが公開可能コード等の機密コードでない場合のみ、プログラムのコードの編集を行わせるため、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を行わせることができる。
次に、言語サーバ30は、例えば、開発ツール20側(LSPプロキシ10)からのファイルを保存することを通知するコマンドに基づいて、開発ツール20側のソースコードと同期して、言語サーバ30のソースコードを更新する(図1の(4)ソースコードの更新(開発ツール側からのファイル保存通知により、ソースコードを更新する(開発ツール側のソースコードと同期する))。
図3に示される例では、LSPプロキシ10には、コードへのアクセスの条件が定義されたアクセス条件定義ファイルによって、アクセスすることができるAllow list(許可リスト=公開可能コードのリスト)として、OKClassおよびOKClass2があらかじめ設定されている。また、図3に示される例では、LSPプロキシ10には、アクセス条件定義ファイルによって、アクセスできない場合があるExecutable list(実行可能リスト=内部隠ぺいコードのリスト)として、RefNGClassがあらかじめ設定されている。
図3に示される例では、LSPプロキシ10は、言語サーバ30に参照される機密コードが含まれるソースコードから機密コードを分離する。これにより、LSPプロキシ10は、機密コードが除かれたソースコードを作成し、機密コードが含まれないソースコードを開発ツール20に送信する。次に、開発ツール20は、例えば、LSPプロキシ10に、OKClassのファイルを変更することを通知するコマンドを送信する(図3の(1)コマンド送信(OKClassのファイル変更通知))。
次に、LSPプロキシ10は、例えば、コマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行する。一例として、LSPプロキシ10は、編集されるコードであるOKClassが公開可能コードであるかどうかで、アクセスの条件が満たされるかどうかをチェックする。次に、LSPプロキシ10は、アクセスの条件が満たされる場合、言語サーバ30にOKClassのファイルを変更することを通知するコマンドを送信する(図3の(2)コマンド送信(OKClassのファイル変更通知))。一例として、LSPプロキシ10は、編集されるコードであるOKClassが公開可能コードであれば、アクセスの条件が満たされると判断し、言語サーバ30のメモリ(記憶部)上のOKClass2に変数を追加する等、言語サーバ30にOKClassのファイルの変更を依頼する。
これにより、LSPプロキシ10は、アクセス先のコードが公開可能コード等の機密コードでない場合のみ、プログラムのコードの編集を行わせるため、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を行わせ、言語サーバ30のコードに反映させることができる。
次に、開発ツール20は、例えば、最初にLSPプロキシ10から送信された機密コードが含まれないソースコードを更新する(図3の(3-1)更新)。次に、開発ツール20は、例えば、LSPプロキシ10に、OKClassのファイルを保存することを通知するコマンドを送信する(図3の(3-2)コマンド送信(OKClassのファイル保存通知))。
次に、LSPプロキシ10は、例えば、コマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行する。一例として、LSPプロキシ10は、保存されるコードであるOKClassが公開可能コードであるかどうかでアクセスの条件が満たされるかどうかチェックする。次に、LSPプロキシ10は、例えば、アクセスの条件が満たされる場合、言語サーバ30に、OKClassのファイルを保存することを通知するコマンドを送信する(図3の(3-3)コマンド送信(OKClassのファイル保存通知))。一例として、LSPプロキシ10は、編集されるコードであるOKClassが公開可能コードであれば、アクセスの条件が満たされると判断し、言語サーバ30にOKClassのファイルを変更することを依頼する。
これにより、LSPプロキシ10は、アクセス先のコードが公開可能コード等の機密コードでない場合のみ、プログラムのコードの編集を行わせるため、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を行わせ、言語サーバ30のコードに反映させることができる。次に、言語サーバ30は、例えば、開発ツール20側(LSPプロキシ10)からのファイルを保存することを通知するコマンドに基づいて、開発ツール20側のソースコードと同期して言語サーバ30のソースコードを更新する(図3の(4)ソースコードの更新)。
[制御システムの構成の一例]
図4を用いて、第一の実施形態に係る制御システム1の構成の一例について説明する。図4は、第一の実施形態に係る制御システムの構成の一例を示す図である。図4に示される例では、制御システム1は、LSPプロキシ10と、開発ツール20と、言語サーバ30とを有する。
図4を用いて、第一の実施形態に係る制御システム1の構成の一例について説明する。図4は、第一の実施形態に係る制御システムの構成の一例を示す図である。図4に示される例では、制御システム1は、LSPプロキシ10と、開発ツール20と、言語サーバ30とを有する。
[LSPプロキシの構成の一例]
LSPプロキシ10は、開発ツール20に、機密コードが含まれないコードを送信し、機密コードが含まれないコードの編集に関するコマンドを開発ツール20から受信し、コマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行する制御装置である。図4に示される例では、制御装置は、編集処理の公開プロトコルであるLSPプロキシ10であるが、上述の機能を有するものであれば、特に限定されない。ただし、制御装置は、LSPプロキシ10に適用されることにより、参画プロジェクト(PJ:Project)によって採用されるプログラミング言語や開発環境によらず、PJが変更されても、開発者自身の開発ツールを切り替えずに、プログラミング支援機能を利用できる。図4に示される例では、LSPプロキシ10は、通信部11と、制御部12と、記憶部13とを有する。
LSPプロキシ10は、開発ツール20に、機密コードが含まれないコードを送信し、機密コードが含まれないコードの編集に関するコマンドを開発ツール20から受信し、コマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行する制御装置である。図4に示される例では、制御装置は、編集処理の公開プロトコルであるLSPプロキシ10であるが、上述の機能を有するものであれば、特に限定されない。ただし、制御装置は、LSPプロキシ10に適用されることにより、参画プロジェクト(PJ:Project)によって採用されるプログラミング言語や開発環境によらず、PJが変更されても、開発者自身の開発ツールを切り替えずに、プログラミング支援機能を利用できる。図4に示される例では、LSPプロキシ10は、通信部11と、制御部12と、記憶部13とを有する。
[通信部]
通信部11は、開発ツール20と言語サーバ30との間で各種情報を送受信する。通信部11は、例えば、NIC(Network Interface Card)等によって実現される。図4に示される例では、通信部11は、送信部111と、受信部112とを有する。
通信部11は、開発ツール20と言語サーバ30との間で各種情報を送受信する。通信部11は、例えば、NIC(Network Interface Card)等によって実現される。図4に示される例では、通信部11は、送信部111と、受信部112とを有する。
[送信部]
送信部111は、開発ツール20や言語サーバ30に各種情報を送信する。例えば、送信部111は、プログラムのコードを編集するための開発ツール20に、機密コードが含まれないコードを送信する。例えば、送信部111は、開発ツール20とは独立した言語サーバ30に機密コードが含まれるコードを送信してよい。一例として、送信部111は、機密コードが含まれないソースコードを開発ツール20に送信し、機密コードが含まれるソースコードを言語サーバ30に送信し、開発ツール20および言語サーバ30の双方にソースコードを保持させつつ、開発ツール20には機密コードを保持させない。
送信部111は、開発ツール20や言語サーバ30に各種情報を送信する。例えば、送信部111は、プログラムのコードを編集するための開発ツール20に、機密コードが含まれないコードを送信する。例えば、送信部111は、開発ツール20とは独立した言語サーバ30に機密コードが含まれるコードを送信してよい。一例として、送信部111は、機密コードが含まれないソースコードを開発ツール20に送信し、機密コードが含まれるソースコードを言語サーバ30に送信し、開発ツール20および言語サーバ30の双方にソースコードを保持させつつ、開発ツール20には機密コードを保持させない。
ここで、開発者は、開発ツール20に全てのソースコード等のコードが存在しなくても、コードが送信されていれば、開発ツール20によって編集処理を実行することができる。このように、機密コードを物理的に開発ツール20内に配置する必要がないため、送信部111は、機密コードが含まれないコードを開発ツール20に送信することによって、機密コードを開発ツール20から分離して機密コードの漏洩を抑制した上で、開発ツール20による編集処理を可能とする。
[受信部]
受信部112は、送信部111によって送信された機密コードが含まれないコードの編集に関するコマンドを開発ツール20から受信する。例えば、受信部112は、インターネット等のネットワークを介して、開発ツール20の通信部21から、コードの編集処理に関するコマンドを受信する。例えば、受信部112は、言語サーバ30から、編集処理に関する返信を受信してよい。一例として、受信部112は、ネットワークを介して、言語サーバ30の通信部31からコマンドに対する返信を受信する。
受信部112は、送信部111によって送信された機密コードが含まれないコードの編集に関するコマンドを開発ツール20から受信する。例えば、受信部112は、インターネット等のネットワークを介して、開発ツール20の通信部21から、コードの編集処理に関するコマンドを受信する。例えば、受信部112は、言語サーバ30から、編集処理に関する返信を受信してよい。一例として、受信部112は、ネットワークを介して、言語サーバ30の通信部31からコマンドに対する返信を受信する。
[制御部]
制御部12は、LSPプロキシ10全体を制御する。例えば、制御部12は、各種処理手順が規定されたプログラムや、制御情報が格納された内部メモリを有する一以上のプロセッサによって構成され、プロセッサは、プログラムや内部メモリを用いて各処理を実行する。制御部12は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等の電子回路やASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路によって実現される。図4に示される例では、制御部12は、アクセスチェック部121を有する。
制御部12は、LSPプロキシ10全体を制御する。例えば、制御部12は、各種処理手順が規定されたプログラムや、制御情報が格納された内部メモリを有する一以上のプロセッサによって構成され、プロセッサは、プログラムや内部メモリを用いて各処理を実行する。制御部12は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等の電子回路やASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路によって実現される。図4に示される例では、制御部12は、アクセスチェック部121を有する。
[アクセスチェック部]
アクセスチェック部121は、受信部112によって受信されたコマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行する。これにより、アクセスチェック部121は、アクセス先のコードが公開可能コード等の機密コードでない場合のみ、プログラムのコードの編集を行わせるため、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を行わせることができる。
アクセスチェック部121は、受信部112によって受信されたコマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行する。これにより、アクセスチェック部121は、アクセス先のコードが公開可能コード等の機密コードでない場合のみ、プログラムのコードの編集を行わせるため、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を行わせることができる。
例えば、アクセスチェック部121は、受信部112によって受信されたコマンドに基づいて、言語サーバ30の機密コードが含まれるコードに編集の内容を反映させてよい。一例として、アクセスチェック部121は、編集されるコードであるOKClassが公開可能コードであれば、言語サーバ30の記憶部33上のOKClass2に変数を追加する等、言語サーバ30にOKClassのファイルを変更することを依頼する。これにより、アクセスチェック部121は、機密コードの漏洩のリスクを抑制しつつ、プログラムのコードの編集を言語サーバ30のコードに反映させることができる。
[記憶部]
記憶部13は、各種情報を記憶する。例えば、記憶部13は、機密コードが含まれるソースコードおよびLSPプロキシ10によって実行されるOS(Operating System)や各種プログラム等を記憶する。記憶部13は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置やRAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)等の情報を書き換え可能な半導体メモリ等によって実現される。
記憶部13は、各種情報を記憶する。例えば、記憶部13は、機密コードが含まれるソースコードおよびLSPプロキシ10によって実行されるOS(Operating System)や各種プログラム等を記憶する。記憶部13は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置やRAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)等の情報を書き換え可能な半導体メモリ等によって実現される。
[開発ツールの構成の一例]
開発ツール20は、プログラムのコードに対して編集処理を行うための編集装置である。開発ツール20は、例えば、Vscode等によって実現される。図4に示される例では、編集装置は、プログラムの編集、デバッグ等の開発を行うための開発ツール20であるが、上述の機能を有するものであれば、特に限定されない。図4に示される例では、開発ツール20は、通信部21と、制御部22と、記憶部23と、操作受付部24と、表示部25とを有する。
開発ツール20は、プログラムのコードに対して編集処理を行うための編集装置である。開発ツール20は、例えば、Vscode等によって実現される。図4に示される例では、編集装置は、プログラムの編集、デバッグ等の開発を行うための開発ツール20であるが、上述の機能を有するものであれば、特に限定されない。図4に示される例では、開発ツール20は、通信部21と、制御部22と、記憶部23と、操作受付部24と、表示部25とを有する。
[通信部]
通信部21は、LSPプロキシ10との間で各種情報を送受信する。通信部21は、例えば、NIC等によって実現される。図4に示される例では、通信部21は、送信部211と、受信部212とを有する。
通信部21は、LSPプロキシ10との間で各種情報を送受信する。通信部21は、例えば、NIC等によって実現される。図4に示される例では、通信部21は、送信部211と、受信部212とを有する。
[送信部]
送信部211は、LSPプロキシ10に各種情報を送信する。例えば、送信部211は、コードに対する編集処理に関するコマンドをLSPプロキシ10に送信する。
送信部211は、LSPプロキシ10に各種情報を送信する。例えば、送信部211は、コードに対する編集処理に関するコマンドをLSPプロキシ10に送信する。
[受信部]
受信部212は、LSPプロキシ10から各種情報を受信する。例えば、受信部212は、LSPプロキシ10から機密コードが含まれないソースコードを受信する。
受信部212は、LSPプロキシ10から各種情報を受信する。例えば、受信部212は、LSPプロキシ10から機密コードが含まれないソースコードを受信する。
[制御部]
制御部22は、開発ツール20全体を制御する。例えば、制御部22は、各種処理手順が規定されたプログラムや、制御情報が格納された内部メモリを有する一以上のプロセッサによって構成され、プロセッサは、プログラムや内部メモリを用いて各処理を実行する。制御部22は、例えば、CPU、MPU、GPU等の電子回路やASIC、FPGA等の集積回路によって実現される。
制御部22は、開発ツール20全体を制御する。例えば、制御部22は、各種処理手順が規定されたプログラムや、制御情報が格納された内部メモリを有する一以上のプロセッサによって構成され、プロセッサは、プログラムや内部メモリを用いて各処理を実行する。制御部22は、例えば、CPU、MPU、GPU等の電子回路やASIC、FPGA等の集積回路によって実現される。
[記憶部]
記憶部23は、各種情報を記憶する。例えば、記憶部23は、機密コードが含まれないソースコードおよび開発ツール20によって実行されるOSや各種プログラム等を記憶する。記憶部23は、例えば、HDD、SSD、光ディスク等の記憶装置やRAM、フラッシュメモリ、NVSRAM等の情報を書き換え可能な半導体メモリ等により実現される。
記憶部23は、各種情報を記憶する。例えば、記憶部23は、機密コードが含まれないソースコードおよび開発ツール20によって実行されるOSや各種プログラム等を記憶する。記憶部23は、例えば、HDD、SSD、光ディスク等の記憶装置やRAM、フラッシュメモリ、NVSRAM等の情報を書き換え可能な半導体メモリ等により実現される。
[操作受付部]
操作受付部24は、各種操作を受け付ける。例えば、操作受付部24は、開発者の端末から、コードに対する編集処理に関するコマンドの操作を受け付ける。操作受付部24は、例えば、インターネットを介して開発者の端末から編集処理に関する編集操作を受け付けるものや、GUI等によって実現される。
操作受付部24は、各種操作を受け付ける。例えば、操作受付部24は、開発者の端末から、コードに対する編集処理に関するコマンドの操作を受け付ける。操作受付部24は、例えば、インターネットを介して開発者の端末から編集処理に関する編集操作を受け付けるものや、GUI等によって実現される。
[表示部]
表示部25は、各種情報を表示する。例えば、表示部25は、コマンドに対する返信の内容を表示する。表示部25は、例えば、端末のデスクトップ等によって実現される。
表示部25は、各種情報を表示する。例えば、表示部25は、コマンドに対する返信の内容を表示する。表示部25は、例えば、端末のデスクトップ等によって実現される。
[言語サーバの構成の一例]
言語サーバ30は、編集装置とは独立したサーバである。図4に示される例では、言語サーバ30は、開発ツール20とは独立した編集処理を行うためのサーバである。図4に示される例では、言語サーバ30は、通信部31と制御部32と記憶部33とを有する。
言語サーバ30は、編集装置とは独立したサーバである。図4に示される例では、言語サーバ30は、開発ツール20とは独立した編集処理を行うためのサーバである。図4に示される例では、言語サーバ30は、通信部31と制御部32と記憶部33とを有する。
[通信部]
通信部31は、LSPプロキシ10との間で各種情報を送受信する。通信部31は、例えば、NIC等によって実現される。図4に示される例では、通信部31は、送信部311と、受信部312とを有する。
通信部31は、LSPプロキシ10との間で各種情報を送受信する。通信部31は、例えば、NIC等によって実現される。図4に示される例では、通信部31は、送信部311と、受信部312とを有する。
[送信部]
送信部311は、LSPプロキシ10に各種情報を送信する。例えば、送信部311は、コマンドに対する返信をLSPプロキシ10に送信する。
送信部311は、LSPプロキシ10に各種情報を送信する。例えば、送信部311は、コマンドに対する返信をLSPプロキシ10に送信する。
[受信部]
受信部312は、LSPプロキシ10から各種情報を受信する。一例として、受信部312は、LSPプロキシ10から機密コードが含まれるソースコードを受信する。別の一例として、受信部312は、LSPプロキシ10から許可リストに無いNGClass、RefNGClassおよびSecretFramework等の関数のスタックフレームが含まれるコマンドを受信する。
受信部312は、LSPプロキシ10から各種情報を受信する。一例として、受信部312は、LSPプロキシ10から機密コードが含まれるソースコードを受信する。別の一例として、受信部312は、LSPプロキシ10から許可リストに無いNGClass、RefNGClassおよびSecretFramework等の関数のスタックフレームが含まれるコマンドを受信する。
[制御部]
制御部32は、言語サーバ30全体を制御する。例えば、制御部32は、各種処理手順が規定されたプログラムや、制御情報が格納された内部メモリを有する一以上のプロセッサによって構成され、プロセッサは、プログラムや内部メモリを用いて各処理を実行する。制御部32は、例えば、CPU、MPU、GPU等の電子回路やASIC、FPGA等の集積回路によって実現される。
制御部32は、言語サーバ30全体を制御する。例えば、制御部32は、各種処理手順が規定されたプログラムや、制御情報が格納された内部メモリを有する一以上のプロセッサによって構成され、プロセッサは、プログラムや内部メモリを用いて各処理を実行する。制御部32は、例えば、CPU、MPU、GPU等の電子回路やASIC、FPGA等の集積回路によって実現される。
[記憶部]
記憶部33は、各種情報を記憶する。例えば、記憶部33は、機密コードが含まれるソースコードおよび言語サーバ30により実行されるOSや各種プログラム等を記憶する。記憶部33は、例えば、HDD、SSD、光ディスク等の記憶装置やRAM、フラッシュメモリ、NVSRAM等の情報を書き換え可能な半導体メモリ等により実現される。
記憶部33は、各種情報を記憶する。例えば、記憶部33は、機密コードが含まれるソースコードおよび言語サーバ30により実行されるOSや各種プログラム等を記憶する。記憶部33は、例えば、HDD、SSD、光ディスク等の記憶装置やRAM、フラッシュメモリ、NVSRAM等の情報を書き換え可能な半導体メモリ等により実現される。
[処理の流れの一例]
以下、図5を用いて、第一の実施形態に係る制御システム1のLSPプロキシ10によって実行される処理の流れの一例について説明する。図5は、第一の実施形態に係る制御システムによって実行される処理の流れの一例を示すフローチャートである。
以下、図5を用いて、第一の実施形態に係る制御システム1のLSPプロキシ10によって実行される処理の流れの一例について説明する。図5は、第一の実施形態に係る制御システムによって実行される処理の流れの一例を示すフローチャートである。
ステップS11において、送信部111は、プログラムのコードを編集するための開発ツール20に、機密コードが含まれないコードを送信する。例えば、送信部111は、機密コードが含まれないソースコードを開発ツール20に送信し、機密コードが含まれるソースコードを言語サーバ30に送信する。
ステップS12において、受信部112は、送信部111によって送信された機密コードが含まれないコードの編集に関するコマンドを開発ツール20から受信する。例えば、受信部112は、インターネット等のネットワークを介して、開発ツール20の通信部21から、コードの編集処理に関するコマンドを受信する。
ステップS13において、アクセスチェック部121は、受信部112によって受信されたコマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行する。一例として、アクセスチェック部121は、編集されるコードであるOKClassが公開可能コードであれば、言語サーバ30の記憶部33上のOKClass2に変数を追加する等、言語サーバ30にOKClassのファイルを変更することを依頼する。
[2.第二の実施形態]
[概要の一例]
以下、図6および図7を用いて第二の実施形態に係る制御システム1Xの概要の一例について説明する。図6および図7は、第二の実施形態に係る制御システムの概要の一例について説明するための図である。図6および図7に示される例では、制御システム1Xは、第一の実施形態に係るLSPプロキシ10の代わりにLSPプロキシ10Xを有する。
[概要の一例]
以下、図6および図7を用いて第二の実施形態に係る制御システム1Xの概要の一例について説明する。図6および図7は、第二の実施形態に係る制御システムの概要の一例について説明するための図である。図6および図7に示される例では、制御システム1Xは、第一の実施形態に係るLSPプロキシ10の代わりにLSPプロキシ10Xを有する。
図6および図7に示される例では、制御システム1Xは、LSPプロキシ10Xによって、コマンドに、機密コードの情報漏洩につながる操作が含まれる場合、機密コードの情報漏洩につながる操作を禁止する。これにより、制御システム1Xは、編集処理に伴う開発ツール20とのやりとりにおいて、機密コードの漏洩のリスクを抑制できる。
なお、図6および図7に示される例は一例にすぎず、本実施形態に係る制御システム1Xは、図6および図7に示される例に限定されない。本実施形態に係る制御システム1Xは、LSPプロキシ10Xによって、コマンドに、機密コードの情報漏洩につながる操作が含まれる場合、機密コードの情報漏洩につながる操作を禁止すればよい。
[機密コードの情報漏洩につながる操作の禁止の一例]
図6および図7を用いて、制御システム1Xによる機密コードの情報漏洩につながる操作の禁止の一例について説明する。図7は、制御システム1Xによる機密コードの情報漏洩につながる操作の禁止処理の流れの一例を示すシーケンス図でもある。
図6および図7を用いて、制御システム1Xによる機密コードの情報漏洩につながる操作の禁止の一例について説明する。図7は、制御システム1Xによる機密コードの情報漏洩につながる操作の禁止処理の流れの一例を示すシーケンス図でもある。
図6に示される例では、まず、開発ツール20は、開発者の端末のGUIおよびインターネット等のネットワークを介して、開発者から内部隠ぺいコードであるRefNGClassへコードジャンプする編集操作を受け付ける(図6の(0)RefNGClassへジャンプする操作)。次に、開発ツール20は、例えば、LSPプロキシ10Xに、RefNGClassへコードジャンプすることを通知するコマンドを送信する(図6の(1)コマンド送信(RefNGClassへのジャンプ通知))。
次に、LSPプロキシ10Xのアクセスチェック部121Xは、例えば、開発ツール20から受信したコマンドを解析し、コマンドに機密コードの情報漏洩につながる操作が含まれる場合、機密コードの情報漏洩につながる操作を禁止する。一例として、LSPプロキシ10Xのアクセスチェック部121Xは、コマンドに内部隠ぺいコードであるRefNGClassへコードジャンプすることを通知する操作が含まれていると判断し、この操作を禁止する。LSPプロキシ10Xは、言語サーバ30に、RefNGClassへコードジャンプすることを通知しない。次に、LSPプロキシ10Xは、例えば、開発ツール20に、コードジャンプがNG(No good)であることを通知する、コマンドに対する返信を行う(図6の(2)コマンド返信(ジャンプNGの通知))。開発ツール20は、RefNGClassへコードジャンプすることを通知する操作が禁止されたことを表示する(図6の(3)RefNGClassへはジャンプ禁止の表示)。
図7に示される例では、開発ツール20は、LSPプロキシ10XにRefNGClassへコードジャンプすることを通知するコマンドを送信する(図7の(1)コマンド送信(RefNGClassへのジャンプ通知))。例えば、LSPプロキシ10Xのアクセスチェック部121Xは開発ツール20から受信したコマンドを解析し、コマンドに機密コードの情報漏洩につながる操作が含まれる場合、機密コードの情報漏洩につながる操作を禁止する。
図7に示される例では、LSPプロキシ10Xのアクセスチェック部121Xは、コマンドに内部隠ぺいコードであるRefNGClassへコードジャンプすることを通知する操作が含まれていると判断する。また、LSPプロキシ10Xのアクセスチェック部121Xは、例えば、RefNGClassについて、実行可能であるが、公開不可な内部隠ぺいコードなので、コードジャンプを禁止するように判断する。次に、LSPプロキシ10Xは、例えば、開発ツール20に、コードジャンプがNGであることを通知する、コマンドに対する返信を行う(図7の(2)コマンド返信(ジャンプNGの通知))。
[制御システムの構成の一例]
図8を用いて、第二の実施形態に係る制御システム1Xの構成の一例について説明する。図8は、第二の実施形態に係る制御システムの構成の一例を示す図である。図8に示される例では、制御システム1Xは、第一の実施形態に係るLSPプロキシ10の代わりに、LSPプロキシ10Xを有する。
図8を用いて、第二の実施形態に係る制御システム1Xの構成の一例について説明する。図8は、第二の実施形態に係る制御システムの構成の一例を示す図である。図8に示される例では、制御システム1Xは、第一の実施形態に係るLSPプロキシ10の代わりに、LSPプロキシ10Xを有する。
[LSPプロキシの構成の一例]
LSPプロキシ10Xは、機密コードの情報漏洩につながる操作が含まれる場合、機密コードの情報漏洩につながる操作を禁止する。図8に示される例では、LSPプロキシ10Xは第一の実施形態における制御部12の代わりに制御部12Xを有する。この点以外、LSPプロキシ10Xは第一の実施形態に係るLSPプロキシ10と同様である。
LSPプロキシ10Xは、機密コードの情報漏洩につながる操作が含まれる場合、機密コードの情報漏洩につながる操作を禁止する。図8に示される例では、LSPプロキシ10Xは第一の実施形態における制御部12の代わりに制御部12Xを有する。この点以外、LSPプロキシ10Xは第一の実施形態に係るLSPプロキシ10と同様である。
[制御部]
制御部12Xは、第一の実施形態におけるアクセスチェック部121の代わりに、アクセスチェック部121Xを有する。この点以外、制御部12Xは、第一の実施形態における制御部12と同様である。
制御部12Xは、第一の実施形態におけるアクセスチェック部121の代わりに、アクセスチェック部121Xを有する。この点以外、制御部12Xは、第一の実施形態における制御部12と同様である。
[アクセスチェック部]
アクセスチェック部121Xは、受信部112によって受信されたコマンドに、機密コードの情報漏洩につながる操作が含まれる場合、機密コードの情報漏洩につながる操作を禁止する。例えば、アクセスチェック部121Xは、機密コードの閲覧の操作を禁止する。これにより、アクセスチェック部121Xは、編集処理に伴う開発ツール20とのやりとりにおいて、機密コードの漏洩のリスクを抑制することができる。
アクセスチェック部121Xは、受信部112によって受信されたコマンドに、機密コードの情報漏洩につながる操作が含まれる場合、機密コードの情報漏洩につながる操作を禁止する。例えば、アクセスチェック部121Xは、機密コードの閲覧の操作を禁止する。これにより、アクセスチェック部121Xは、編集処理に伴う開発ツール20とのやりとりにおいて、機密コードの漏洩のリスクを抑制することができる。
ここで、機密コードの情報漏洩につながる操作には、上述の例のような機密コードに直接的にアクセスする操作だけではなく、機密コードへの間接的なアクセスを可能にする操作も含まれうる。例えば、プログラムの実行時の情報を取得する機能(リフレクション)を有する関数(以降、リフレクション関数)へのアクセスを可能にする操作(例えば、リフレクション関数のインポート)によって、開発ツール20の開発者は、プログラム実行中の関数名(クラスやメソッド)を取得できるため、リフレクション関数を利用すると機密コード閲覧が可能となる。
そこで、アクセスチェック部121Xは、例えば、受信部112によって受信されたコマンドに、機密コードの情報漏洩に間接的につながる操作が含まれる場合、機密コードの情報漏洩に間接的につながる操作を禁止してよい。一例として、アクセスチェック部121Xは、上述のリフレクション関数のような禁止関数へアクセスする操作を禁止する。これにより、アクセスチェック部121Xは、編集処理に伴う開発ツール20とのやりとりにおいて、機密コードの漏洩のリスクをより抑制することができる。
例えば、アクセスチェック部121Xは、受信部112によって受信されたコマンドに、コードの関数が非公開の機密コードへのアクセスにつながる操作が含まれる場合、コードの関数が非公開の機密コードへのアクセスにつながる操作を禁止してよい。一例として、アクセスチェック部121Xは、コマンドに内部隠ぺいコードであるRefNGClassへコードジャンプすることを通知する操作が含まれていると判断した場合、この操作を禁止する。内部隠ぺいコード等、コードの関数が非公開の機密コードであっても、関数の呼び出しは許可されている機密コードは、操作によってはアクセスにつながるおそれがある。これに対し、アクセスチェック部121Xは、コードの関数が非公開の機密コードへのアクセスにつながる操作を禁止することによって、編集処理に伴う開発ツール20とのやりとりにおいて、機密コードの漏洩のリスクをより抑制することができる。
[処理の流れの一例]
以下、図9を用いて、第二の実施形態に係る制御システム1XのLSPプロキシ10Xによって実行される処理の流れの一例について説明する。図9は、第二の実施形態に係る制御システムによって実行される処理の流れの一例を示すフローチャートである。図9のステップS21およびステップS22は、図5のステップS11およびステップS12と同様である。
以下、図9を用いて、第二の実施形態に係る制御システム1XのLSPプロキシ10Xによって実行される処理の流れの一例について説明する。図9は、第二の実施形態に係る制御システムによって実行される処理の流れの一例を示すフローチャートである。図9のステップS21およびステップS22は、図5のステップS11およびステップS12と同様である。
ステップS23において、アクセスチェック部121Xは、受信部112によって受信されたコマンドに、機密コードの情報漏洩につながる操作が含まれるかどうかを判定する。アクセスチェック部121Xは、受信部112によって受信されたコマンドに、機密コードの情報漏洩につながる操作が含まれると判断した場合(ステップS23のYes)、ステップS24において、機密コードの情報漏洩につながる操作を禁止する。例えば、アクセスチェック部121Xは、機密コードの閲覧の操作を禁止する。
アクセスチェック部121Xは、受信部112によって受信されたコマンドに、機密コードの情報漏洩につながる操作が含まれないと判断した場合(ステップS23のNо)、ステップS25において、編集に関する制御を実行する。一例として、アクセスチェック部121は、編集されるコードであるOKClassが公開可能コードであれば、言語サーバ30の記憶部33上のOKClass2に変数を追加する等、言語サーバ30にOKClassのファイルを変更することを依頼する。
[3.第三の実施形態]
[第一の実施形態との比較の一例]
第三の実施形態に係る制御システム1Yの概要の一例について説明する前に、図10を用いて第三の実施形態に係る制御システム1Yと第一の実施形態に係る制御システム1とを比較する。図10は、第一の実施形態に係る制御システムと比較するための図である。
[第一の実施形態との比較の一例]
第三の実施形態に係る制御システム1Yの概要の一例について説明する前に、図10を用いて第三の実施形態に係る制御システム1Yと第一の実施形態に係る制御システム1とを比較する。図10は、第一の実施形態に係る制御システムと比較するための図である。
図10に示される例では、第一の実施形態に係る制御システム1の開発ツール20は、開発者の端末のGUIおよびインターネット等のネットワークを介して、開発者から「com.xxx.」という入力操作を受け付ける(図10の(0)com.xxx.と入力)。次に、開発ツール20は、例えば、LSPプロキシ10に「com.xxx.」に基づいてコードを補完する旨を通知するコマンドを送信する(図10の(1)コマンド送信(コード補完の通知))。
次に、LSPプロキシ10のアクセスチェック部121は、例えば、コマンドに基づいて、コードへのアクセスに関するチェックおよび編集に関する制御を実行する。例えば、LSPプロキシ10は、アクセスされるコードがOKClass等の公開可能コードであれば、アクセスの条件が満たされると判断し、言語サーバ30に、「com.xxx.」に基づいてコードを補完することを通知するコマンドを送信する(図10の(2)コマンド送信(コード補完の通知))。
次に、言語サーバ30は、例えば、LSPプロキシ10から受信したコマンドに基づいてソースコードを解析し、完全隠ぺいコードのクラスも含まれる「com.xxx.」以下の補完候補のコードのクラス名の一覧をリストアップし、LSPプロキシ10に返信する(図10の(3)コマンド返信(補完候補のクラス名一覧))。次に、LSPプロキシ10は、例えば、言語サーバ30から受信した、完全隠ぺいコードのクラスも含まれる「com.xxx.」以下の補完候補のコードのクラス名の一覧を開発ツール20に返信する(図10の(4)コマンド返信(補完候補のクラス名一覧))。次に、開発ツール20は、例えば、LSPプロキシ10から受信した完全隠ぺいコードのクラスも含まれる「com.xxx.」以下の補完候補のコードのクラス名の一覧に基づいて、補完候補を表示する(図10の(5)補完候補の表示)。
ここで、コマンドの種類によっては、上述のように、コードの補完の要求(リクエスト)の返信内容の補完候補に、機密コードの関数の名前やパスが含まれる等、コマンドに対する返信内容に機密コードの情報も含まれてしまう場合も零ではない。また、補完候補に含まれる機密コードの名前やパスが分かれば、開発ツール20側でも機密コードの解析(コンパイル等)の要求が可能となる。このため、たとえ開発ツール20側に機密コードがなくても、補完候補のコードの名前やパスが分かれば、開発ツール20側は、機密コードの内部情報(プロパティやメソッドの名前)を取得できるため、実装内容を把握できてしまう場合も零ではない。このように、第一の実施形態に係る制御システム1では、コマンドの返信内容から機密コードの実装内容が漏洩してしまうリスクも零ではない。
これに対し、第三の実施形態に係る制御システム1Yは、編集に関する返信を開発ツール20に行い、編集に関する返信の内容に、機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にするか、または削除する。これにより、制御システム1Yは、第一の実施形態に係る制御システム1と比較して、編集処理に伴う開発ツール20とのやりとりにおいて、機密コードの漏洩のリスクをより抑制することができる。
[概要の一例]
以下、図11および図12を用いて第三の実施形態に係る制御システム1Yの概要の一例について説明する。図11および図12は、第三の実施形態に係る制御システムの概要の一例について説明するための図である。図11および図12に示される例では、制御システム1Yは、第一の実施形態に係るLSPプロキシ10の代わりにLSPプロキシ10Yを有する。LSPプロキシ10Yは、返信内容秘匿部122をさらに有する。
以下、図11および図12を用いて第三の実施形態に係る制御システム1Yの概要の一例について説明する。図11および図12は、第三の実施形態に係る制御システムの概要の一例について説明するための図である。図11および図12に示される例では、制御システム1Yは、第一の実施形態に係るLSPプロキシ10の代わりにLSPプロキシ10Yを有する。LSPプロキシ10Yは、返信内容秘匿部122をさらに有する。
なお、図11および図12に示される例は一例にすぎず、本実施形態に係る制御システム1Yは、図11および図12に示される例に限定されない。本実施形態に係る制御システム1Yは、LSPプロキシ10Yによって、編集に関する返信を開発ツール20に行い、編集に関する返信の内容に、機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にするか、または削除すればよい。
[機密コードの情報漏洩につながる内容の秘匿または削除の一例]
図11および図12を用いて、制御システム1Yによる機密コードの情報漏洩につながる内容の秘匿または削除の一例について説明する。図12は、制御システム1Yによる機密コードの情報漏洩につながる内容の秘匿処理または削除処理の流れの一例を示すシーケンス図でもある。
図11および図12を用いて、制御システム1Yによる機密コードの情報漏洩につながる内容の秘匿または削除の一例について説明する。図12は、制御システム1Yによる機密コードの情報漏洩につながる内容の秘匿処理または削除処理の流れの一例を示すシーケンス図でもある。
図11に示される例では、中継機構であるLSPプロキシ10Yの返信内容秘匿部122はコマンドに対する返信内容を解析し、返信内容に機密コードの情報漏洩につながる内容が含まれる場合、返信内容を覆い隠すマスクにより返信内容を秘匿にするか、または削除する(以下、秘匿、または削除を「マスキング」ともいう)。例えば、返信内容秘匿部122は、返信内容にNGClass等の完全隠ぺいコードのクラス、関数の名前やパスが含まれる場合、NGClass等の完全隠ぺいコードのクラス、関数の名前やパスを補完候補から削除する(図11の(4)返信内容のマスキング(機密コード(完全隠ぺいコード)のクラスは削除))。次に、LSPプロキシ10Yは、例えば、完全隠ぺいコード等の機密コードがマスキングされた補完候補のコードのクラス名の一覧を通知する、コマンドに対する返信を行う(図11の(5)コマンド返信(マスキングされた補完候補のクラス名一覧))。次に、開発ツール20は、例えば、完全隠ぺいコード等の機密コードがマスキングされた補完候補のコードのクラス名の一覧を表示する(図11の(6)補完候補の表示)。
図11に示される例では、補完候補の中に、機密コードのクラスは表示されないため、開発者には、完全隠ぺいコード等の機密コードが存在することは分からない。このため、LSPプロキシ10Yは、機密コードの露見の手がかりを開発者に見せることなく、コードの編集を行わせることができる。
図12に示される例では、LSPプロキシ10Yの返信内容秘匿部122は、コマンドに対する返信内容を解析し、返信内容に、機密コードの情報漏洩につながる内容が含まれる場合、返信内容を覆い隠すマスクによって返信内容を秘匿にするか、または削除する。例えば、返信内容秘匿部122は、コマンドに対する返信内容に公開可能でも実行可能でもないNGClass等の完全隠ぺいコードのクラス、関数の名前やパスが含まれる場合、NGClass等の完全隠ぺいコードのクラス、関数の名前やパスを補完候補から削除する(図12の(4)返信内容の秘匿(マスキング))。次に、LSPプロキシ10Yは、例えば、完全隠ぺいコード等の機密コードがマスキングされた補完候補のコードのクラス名の一覧を通知する、コマンドに対する返信を行う(図12の(5)コマンド返信(機密コード(完全隠ぺいコードのクラスは削除))。
[制御システムの構成の一例]
図13を用いて、第三の実施形態に係る制御システム1Yの構成の一例について説明する。図13は、第三の実施形態に係る制御システムの構成の一例を示す図である。図13に示される例では、制御システム1Yは、第一の実施形態に係るLSPプロキシ10の代わりに、LSPプロキシ10Yを有する。
図13を用いて、第三の実施形態に係る制御システム1Yの構成の一例について説明する。図13は、第三の実施形態に係る制御システムの構成の一例を示す図である。図13に示される例では、制御システム1Yは、第一の実施形態に係るLSPプロキシ10の代わりに、LSPプロキシ10Yを有する。
[LSPプロキシの構成の一例]
LSPプロキシ10Yは、編集に関する返信を開発ツール20に行い、返信の内容に、機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にするか、または削除する。図13に示される例では、LSPプロキシ10Yは、第一の実施形態における制御部12の代わりに、制御部12Yを有する。この点以外、LSPプロキシ10Yは、第一の実施形態に係るLSPプロキシ10と同様である。
LSPプロキシ10Yは、編集に関する返信を開発ツール20に行い、返信の内容に、機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にするか、または削除する。図13に示される例では、LSPプロキシ10Yは、第一の実施形態における制御部12の代わりに、制御部12Yを有する。この点以外、LSPプロキシ10Yは、第一の実施形態に係るLSPプロキシ10と同様である。
[制御部]
制御部12Yは、返信内容秘匿部122をさらに有する。この点以外、制御部12Yは、第一の実施形態における制御部12と同様である。
制御部12Yは、返信内容秘匿部122をさらに有する。この点以外、制御部12Yは、第一の実施形態における制御部12と同様である。
[返信内容秘匿部]
返信内容秘匿部122は、送信部111によって行われる編集に関する返信の内容に、機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にするか、または削除する。これにより、返信内容秘匿部122は、編集処理に伴う開発ツール20とのやりとりにおいて、機密コードの漏洩のリスクをより抑制することができる。
返信内容秘匿部122は、送信部111によって行われる編集に関する返信の内容に、機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にするか、または削除する。これにより、返信内容秘匿部122は、編集処理に伴う開発ツール20とのやりとりにおいて、機密コードの漏洩のリスクをより抑制することができる。
例えば、返信内容秘匿部122は、送信部111によって行われる編集に関する返信の内容に、コードの関数が非公開であり、当該関数を呼び出すことができない機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にするか、または削除してよい。一例として、返信内容秘匿部122は、コマンドに対する返信内容に公開可能でも実行可能でもないNGClass等の完全隠ぺいコードのクラス、関数の名前やパスが含まれる場合、NGClass等の完全隠ぺいコードのクラス、関数の名前やパスを補完候補から削除する。コードの関数が非公開であり、当該関数を呼び出すことができない機密コードの漏洩は特に漏洩のリスクが高いため、返信内容秘匿部122は、コードの関数が非公開であり、当該関数を呼び出すことができない機密コードの情報漏洩につながる内容を秘匿にするか、または削除することによって、機密コードの漏洩のリスクをさらに抑制できる。
[処理の流れの一例]
図14を用いて第三の実施形態に係る制御システム1YのLSPプロキシ10Yにより実行される処理の流れの一例について説明する。図14は、第三の実施形態に係る制御システムによって実行される処理の流れの一例を示すフローチャートである。図14のステップS31~ステップS33は、図5のステップS11~ステップS13と同様である。
図14を用いて第三の実施形態に係る制御システム1YのLSPプロキシ10Yにより実行される処理の流れの一例について説明する。図14は、第三の実施形態に係る制御システムによって実行される処理の流れの一例を示すフローチャートである。図14のステップS31~ステップS33は、図5のステップS11~ステップS13と同様である。
ステップS34において、返信内容秘匿部122は、送信部111によって行われる編集に関する返信の内容に、機密コードの情報漏洩につながる内容が含まれるかどうかを判断する。返信内容秘匿部122は、返信の内容に機密コードの情報漏洩につながる内容が含まれると判断した場合(ステップS34のYes)、ステップS35において、当該内容を秘匿にするか、または削除する。例えば、返信内容秘匿部122は、コマンドに対する返信内容に公開可能でも実行可能でもないNGClass等の完全隠ぺいコードのクラス、関数の名前やパスが含まれる場合、NGClass等の完全隠ぺいコードのクラス、関数の名前やパスを補完候補から削除する。
ステップS35の後、または、返信内容秘匿部122によって、返信の内容に機密コードの情報漏洩につながる内容が含まれないと判断された場合(ステップS34のNо)、ステップS36において、送信部111は、返信の内容を開発ツール20に送信する。例えば、送信部111は、ステップS35の後、NGClass等の完全隠ぺいコードのクラス、関数の名前やパスが補完候補から削除されたコマンドに対する返信を開発ツール20に対して行う。
[4.第三の実施形態の変形例]
第三の実施形態に係る制御システム1YのLSPプロキシ10Yは、実行環境との中継機構にも拡張可能である。実行環境とは、例えば、編集に関する処理をテストする装置であるテスト環境等、編集に関する処理を実行する装置のことをいう。制御システム1YのLSPプロキシ10Yの返信内容秘匿部122は、例えば、送信部111によって行われる実行環境による実行結果の内容に、機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にするか、または削除する。
第三の実施形態に係る制御システム1YのLSPプロキシ10Yは、実行環境との中継機構にも拡張可能である。実行環境とは、例えば、編集に関する処理をテストする装置であるテスト環境等、編集に関する処理を実行する装置のことをいう。制御システム1YのLSPプロキシ10Yの返信内容秘匿部122は、例えば、送信部111によって行われる実行環境による実行結果の内容に、機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にするか、または削除する。
以下、図15を用いて、第三の実施形態の変形例に係る制御システム1Yの概要の一例について説明する。図15は、第三の実施形態に係る制御システムの変形例に係る制御システムの概要の一例について説明するための図である。図15に示される例では、言語サーバ30は、実行環境40に変更されている。
図15に示される例では、まず、開発ツール20は、LSPプロキシ10Yにテスト実行のリクエストに関するコマンドを送信する(図15の(1)コマンド送信(テスト実行のリクエスト))。次に、LSPプロキシ10Yは、例えば、実行環境40にテスト実行のリクエストに関するコマンドを送信する(図15の(2)コマンド送信(テスト実行のリクエスト))。次に、実行環境40は、例えば、LSPプロキシ10Yから受信したテスト実行のリクエストに基づいて、テストを実行する。
次に、実行環境40は、例えば、テストが失敗し、エラーが発生した場合、テストが失敗した場合のテスト実行結果であるスタックトレース(失敗直前まで実行されていた関数やメソッド等の履歴)を通知する、コマンドに対する返信をLSPプロキシ10Yに行う。一例として、実行環境は、NGClass等の完全隠ぺいコードのクラスが含まれるテスト実行結果(スタックトレース)を通知する、コマンドに対する返信をLSPプロキシ10Yに対して行う(図15の(3)コマンド返信(テスト実行結果))。
次に、LSPプロキシ10Yの返信内容秘匿部122は、例えば、送信部111によって行われる実行環境40によるテスト実行結果の内容に、機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にするか、または削除する。一例として、返信内容秘匿部122は、テスト実行結果の内容に、NGClass等の完全隠ぺいコードのクラスが含まれるので、NGClass等の完全隠ぺいコードのクラスを覆い隠すマスクによって、完全隠ぺいコードのクラスを秘匿にする(図15の(4)返信内容の秘匿(マスキング))。
次に、LSPプロキシ10Yは、例えば、返信内容秘匿部122の秘匿処理により機密コードの情報漏洩につながる内容が秘匿にされたか、または削除されたテスト実行結果を通知する、コマンドに対する返信を開発ツール20に対して行う。一例として、LSPプロキシ10Yは、NGClass等の完全隠ぺいコードのクラスを覆い隠すマスクによって、完全隠ぺいコードのクラスが秘匿にされたテスト実行結果を通知する、コマンドに対する返信を開発ツール20に対して行う(図15の(5)コマンドの送信(機密コード(完全隠ぺいコード)が秘匿されたテスト実行結果)。
例えば、テストが失敗した場合のテスト実行結果のスタックトレースに機密コードが存在すれば、機密コードの関数やメソッド名が露見してしまう。これに対し、第三の実施形態の変形例に係る制御システム1YにおけるLSPプロキシ10Yの返信内容秘匿部122は、テスト実行結果のマスキングにも適用でき、実行環境40とのやりとりからの情報漏洩の抑制にも貢献することができる。
また、返信内容秘匿部122は、上述の例のように、送信部111によって行われる実行環境40による実行結果の内容に、機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にすることによって、当該内容に機密コードが含まれることを開発者に示唆することができる。これにより、返信内容秘匿部122は、例えば、エラーの原因が開発者の編集処理等によるものではなく、秘匿にされた内容によるものであることを示唆することができる場合がある。このため、返信内容秘匿部122は、テスト環境等の実行環境40による実行結果の内容を秘匿することによって、当該内容を削除する場合に比べて、開発者にエラーの原因を把握させやすくすることができる。
[5.プログラム]
LSPプロキシ10、LSPプロキシ10XおよびLSPプロキシ10Yは、パッケージソフトウェアやオンラインソフトウェアとして制御プログラムをコンピュータにインストールさせることにより実装できる。例えば、コンピュータが制御プログラムを実行することにより、LSPプロキシ10、LSPプロキシ10XおよびLSPプロキシ10Yとして機能させることができる。
LSPプロキシ10、LSPプロキシ10XおよびLSPプロキシ10Yは、パッケージソフトウェアやオンラインソフトウェアとして制御プログラムをコンピュータにインストールさせることにより実装できる。例えば、コンピュータが制御プログラムを実行することにより、LSPプロキシ10、LSPプロキシ10XおよびLSPプロキシ10Yとして機能させることができる。
図16は、制御プログラムを実行するコンピュータの構成の一例を示す図である。図16に示される例では、コンピュータ1000は、メモリ1010とCPU1020とハードディスクドライブインタフェース1030とディスクドライブインタフェース1040とシリアルポートインタフェース1050とビデオアダプタ1060とネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えば、マウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えば、ディスプレイ1130に接続される。
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。すなわち、LSPプロキシ10によって実行される各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えば、ハードディスクドライブ1090に記憶される。例えば、LSPプロキシ10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSDによって代替されてよい。
また、上述の実施形態の処理において用いられるデータは、プログラムデータ1094として、例えば、メモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を、必要に応じてRAM1012に読み出して実行する。
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限定されず、例えば、着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093およびプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続される他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093およびプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
1 制御システム
10 LSPプロキシ(制御装置)
11、21、31 通信部
12、22、32 制御部
13、23、33 記憶部
20 開発ツール(編集装置)
24 操作受付部
25 表示部
30 言語サーバ
111、211、311 送信部
112、212、312 受信部
121 アクセスチェック部
10 LSPプロキシ(制御装置)
11、21、31 通信部
12、22、32 制御部
13、23、33 記憶部
20 開発ツール(編集装置)
24 操作受付部
25 表示部
30 言語サーバ
111、211、311 送信部
112、212、312 受信部
121 アクセスチェック部
Claims (8)
- プログラムのコードを編集するための編集装置に、機密コードが含まれないコードを送信する送信部と、
前記送信部によって送信された前記機密コードが含まれないコードの編集に関するコマンドを前記編集装置から受信する受信部と、
前記受信部によって受信された前記コマンドに基づいて、前記コードへのアクセスに関するチェックおよび前記編集に関する制御を実行する制御部と、
を有することを特徴とする制御装置。 - 前記送信部は、前記編集装置とは独立したサーバに前記機密コードが含まれるコードを送信し、
前記制御部は、前記受信部によって受信された前記コマンドに基づいて、前記サーバの前記機密コードが含まれるコードに前記編集の内容を反映させることを特徴とする請求項1に記載の制御装置。 - 前記制御部は、前記受信部によって受信された前記コマンドに、前記機密コードの情報漏洩につながる操作が含まれる場合、前記機密コードの情報漏洩につながる操作を禁止することを特徴とする請求項1または2に記載の制御装置。
- 前記制御部は、前記受信部によって受信された前記コマンドに、前記機密コードへのアクセスに間接的につながる操作が含まれる場合、前記機密コードへのアクセスに間接的につながる操作を禁止することを特徴とする請求項3に記載の制御装置。
- 前記送信部は、前記編集に関する返信を前記編集装置に行い、
前記制御部は、前記送信部によって行われる前記編集に関する返信の内容に、前記機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にするか、または削除することを特徴とする請求項1に記載の制御装置。 - 前記制御部は、前記送信部によって行われる前記編集に関する返信の内容に、前記コードの関数が非公開であり、当該関数を呼び出すことができない前記機密コードの情報漏洩につながる内容が含まれる場合、当該内容を秘匿にするか、または削除することを特徴とする請求項5に記載の制御装置。
- 制御装置によって実行される制御方法であって、
プログラムのコードを編集するための編集装置に、機密コードが含まれないコードを送信する送信工程と、
前記送信工程によって送信された前記機密コードが含まれないコードの編集に関するコマンドを前記編集装置から受信する受信工程と、
前記受信工程によって受信された前記コマンドに基づいて、前記コードへのアクセスに関するチェックおよび前記編集に関する制御を実行する制御工程と、
を含むことを特徴とする制御方法。 - プログラムのコードを編集するための編集装置に、機密コードが含まれないコードを送信する送信ステップと、
前記送信ステップによって送信された前記機密コードが含まれないコードの編集に関するコマンドを前記編集装置から受信する受信ステップと、
前記受信ステップによって受信された前記コマンドに基づいて、前記コードへのアクセスに関するチェックおよび前記編集に関する制御を実行する制御ステップと、
をコンピュータに実行させことを特徴とする制御プログラム。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2023/025784 WO2025013261A1 (ja) | 2023-07-12 | 2023-07-12 | 制御装置、制御方法および制御プログラム |
| JP2025532334A JPWO2025013261A1 (ja) | 2023-07-12 | 2023-07-12 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2023/025784 WO2025013261A1 (ja) | 2023-07-12 | 2023-07-12 | 制御装置、制御方法および制御プログラム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2025013261A1 true WO2025013261A1 (ja) | 2025-01-16 |
Family
ID=94215273
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2023/025784 Pending WO2025013261A1 (ja) | 2023-07-12 | 2023-07-12 | 制御装置、制御方法および制御プログラム |
Country Status (2)
| Country | Link |
|---|---|
| JP (1) | JPWO2025013261A1 (ja) |
| WO (1) | WO2025013261A1 (ja) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2008064049A2 (en) * | 2006-11-16 | 2008-05-29 | Cisco Technology, Inc. | Filtering access to data objects |
| JP2009129326A (ja) * | 2007-11-27 | 2009-06-11 | Canon Inc | ソフトウェア開発システム、そのアクセス制限方法、サーバ装置、プログラムおよび記憶媒体 |
-
2023
- 2023-07-12 WO PCT/JP2023/025784 patent/WO2025013261A1/ja active Pending
- 2023-07-12 JP JP2025532334A patent/JPWO2025013261A1/ja active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2008064049A2 (en) * | 2006-11-16 | 2008-05-29 | Cisco Technology, Inc. | Filtering access to data objects |
| JP2009129326A (ja) * | 2007-11-27 | 2009-06-11 | Canon Inc | ソフトウェア開発システム、そのアクセス制限方法、サーバ装置、プログラムおよび記憶媒体 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPWO2025013261A1 (ja) | 2025-01-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR101002489B1 (ko) | 커널 모드 프로세싱과 사용자 모드 프로세싱 모두에 공통되는 하나 이상의 동작들의 단일 구현을 가능하게 하는 방법 및 컴퓨터 판독가능 기록 매체 | |
| US20230036357A1 (en) | Method and apparatus for authority control, computer device and storage medium | |
| US20040268293A1 (en) | Automating the life cycle of a distributed Computing application | |
| CN110716720A (zh) | 一种实现应用热部署的方法和装置 | |
| CN105302563A (zh) | 移动应用服务的插件化方法及系统 | |
| CN112269570B (zh) | 安全代码开发方法及设备、计算设备和介质 | |
| CN113760339A (zh) | 漏洞修复方法和装置 | |
| KR20130017337A (ko) | 하이브리드 앱 개발 플랫폼 구조 및 그 테스트 방법, 그리고 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체. | |
| CN115859280A (zh) | 内存马的检测方法、装置、设备及存储介质 | |
| CN115421740A (zh) | 云原生应用的部署方法和装置 | |
| US20100306734A1 (en) | Method and apparatus for multi-language software development | |
| US12061901B2 (en) | Documentation enforcement during compilation | |
| WO2024139849A1 (zh) | 一种用于生成漏洞挖掘模型的平台及相关方法 | |
| KR102272635B1 (ko) | 대용량 애플리케이션 변환 장치 및 방법 | |
| WO2025013261A1 (ja) | 制御装置、制御方法および制御プログラム | |
| CN112583891B (zh) | 接口文档获取方法、装置和服务器 | |
| US20220413954A1 (en) | Data collecting in issue tracking systems | |
| CN114138374A (zh) | 一种可信计算任务执行方法以及可信计算系统 | |
| CN114461223A (zh) | 一种代码生成方法、装置及终端设备 | |
| CN114547559A (zh) | 符号混淆方法、装置、介质和计算设备 | |
| CN117874808A (zh) | 基于安全u盘的办公方法及系统 | |
| CN109947407B (zh) | 一种数据获取方法及装置 | |
| CN115563433A (zh) | 浏览器插件与浏览器的网页脚本交互方法及相关设备 | |
| KR102471221B1 (ko) | 애플리케이션 변환 장치 및 방법 | |
| WO2025013262A1 (ja) | 制御装置、制御方法および制御プログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 23945134 Country of ref document: EP Kind code of ref document: A1 |
|
| ENP | Entry into the national phase |
Ref document number: 2025532334 Country of ref document: JP Kind code of ref document: A |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2025532334 Country of ref document: JP |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |