RU2775354C1 - Method and apparatus for launching arbitrary (untrusted) code on a cluster in an isolated environment - Google Patents

Method and apparatus for launching arbitrary (untrusted) code on a cluster in an isolated environment Download PDF

Info

Publication number
RU2775354C1
RU2775354C1 RU2021103036A RU2021103036A RU2775354C1 RU 2775354 C1 RU2775354 C1 RU 2775354C1 RU 2021103036 A RU2021103036 A RU 2021103036A RU 2021103036 A RU2021103036 A RU 2021103036A RU 2775354 C1 RU2775354 C1 RU 2775354C1
Authority
RU
Russia
Prior art keywords
program code
user program
data
code
computing
Prior art date
Application number
RU2021103036A
Other languages
Russian (ru)
Inventor
Илья Григорьевич Анисковец
Александр Николаевич Смирнов
Андрей Анатольевич Валукин
Виктория Олеговна Тестова
Original Assignee
Публичное Акционерное Общество "Сбербанк России" (Пао Сбербанк)
Filing date
Publication date
Application filed by Публичное Акционерное Общество "Сбербанк России" (Пао Сбербанк) filed Critical Публичное Акционерное Общество "Сбербанк России" (Пао Сбербанк)
Application granted granted Critical
Publication of RU2775354C1 publication Critical patent/RU2775354C1/en

Links

Images

Abstract

FIELD: computing technology.
SUBSTANCE: method for launching user software code on a computing node, containing the stages of: receiving a request to launch user software code on a computing node in an isolated data processing environment; delivering the user software code to the computing node; launching an isolated environment on the computing node; loading the user software code on the isolated environment; determining data for the user software code to be processed by the user software code; uploading the data for the user software code to the isolated environment; processing the data for the user software code in the isolated environment; retrieving and storing the data processing results on at least one data storage apparatus.
EFFECT: provided possibility of automated launch of user software code on a computing node in an isolated environment.
6 cl, 2 dwg

Description

ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY

[0001] Представленное техническое решение относится, в общем, к области обработки цифровых данных, а в частности к способу и устройству запуска произвольного пользовательского (недоверенного) кода на кластере или сервере в изолированной среде.[0001] The presented technical solution relates, in general, to the field of digital data processing, and in particular to a method and device for running arbitrary user (untrusted) code on a cluster or server in an isolated environment.

УРОВЕНЬ ТЕХНИКИBACKGROUND OF THE INVENTION

[0002] Из уровня техники известны решения, позволяющие запустить пользовательский код в изолированной среде.[0002] In the prior art, solutions are known that allow you to run user code in an isolated environment.

[0003] В частности, известно решение, обеспечивающее возможность изолировать процессы Linux в их собственных небольших системных средах, раскрытое в статье «Separation Anxiety: A Tutorial for Isolating Your System with Linux Namespaces» (http://hadooptutorial.info/separation-anxiety-a-tutorial-for-isolating-vour-system-with-linux-namespaces/).[0003] In particular, a solution is known that provides the ability to isolate Linux processes in their own small system environments, disclosed in the article "Separation Anxiety: A Tutorial for Isolating Your System with Linux Namespaces" (http://hadooptutorial.info/separation-anxiety -a-tutorial-for-isolating-vour-system-with-linux-namespaces/).

[0004]Также известен способ управления облачной распределенной вычислительной средой (CBDCE), раскрытый в заявке US 2020/0068010 А1, опубл. 27.02.2020. В данном решении несколько служб одновременно выполняются на вычислительных узлах CBDCE, при этом каждая служба содержит несколько экземпляров службы, которые одновременно выполняются на нескольких отдельных вычислительных узлах CBDCE. Во время работы система использует распределенную базу данных для отслеживания состояния CBDCE, чтобы обеспечить постоянную стабильность и масштабируемость CBDCE. После получения запроса, связанного с конфигурацией CBDCE, служба получает доступ к информации о статусе CBDCE из распределенной базы данных, чтобы ответить на запрос.[0004] A cloud distributed computing environment (CBDCE) control method is also known, as disclosed in US 2020/0068010 A1, publ. 02/27/2020. In this solution, multiple services run concurrently on CBDCE compute nodes, with each service containing multiple service instances that run concurrently on multiple separate CBDCE compute nodes. During operation, the system uses a distributed database to keep track of the state of the CBDCE to ensure that the CBDCE is always stable and scalable. Upon receiving a request related to the CBDCE configuration, the service accesses the CBDCE status information from the distributed database in order to respond to the request.

[0005] Подобного рода решения не позволяют безопасно запускать пользовательский код на кластере или сервере (на произвольном узле), т.к. обладают следующими недостатками:[0005] Such solutions do not allow you to safely run user code on a cluster or server (on an arbitrary node), because have the following disadvantages:

- не исключается доступ к данным недоверенным кодом;- access to data by an untrusted code is not excluded;

- отсутствует возможность безопасно запускать произвольный код на кластере или сервере (т.е. в промышленной (пром.) среде) и защита от вредоносного кода, деструктивных действий, ошибок и т.д.;- there is no possibility to safely run arbitrary code on a cluster or server (i.e. in an industrial (industrial) environment) and protection from malicious code, destructive actions, errors, etc.;

- отсутствует безопасный способ поставки данных в изолированное окружение для возможности безопасной обработки таких данных недоверенным кодом на кластере или сервере;- there is no safe way to deliver data to an isolated environment for the possibility of secure processing of such data by untrusted code on a cluster or server;

- не обеспечивают доставку и запуск недоверенного кода в пром. среду;- do not provide delivery and launch of untrusted code in prom. environment;

- не позволяют определять необходимые ресурсы (CPU, Memory) для запуска недоверенного кода.- do not allow to determine the necessary resources (CPU, Memory) to run untrusted code.

СУЩНОСТЬ ТЕХНИЧЕСКОГО РЕШЕНИЯESSENCE OF THE TECHNICAL SOLUTION

[0006] Технической проблемой или технической задачей, поставленной в данном техническом решении, является создание нового эффективного, простого и безопасного решения для автоматизированного запуска произвольного (недоверенного) кода на кластере или сервере в изолированной среде.[0006] The technical problem or technical challenge posed in this technical solution is to create a new efficient, simple and secure solution for the automated execution of arbitrary (untrusted) code on a cluster or server in an isolated environment.

[0007] Техническим результатом, достигаемым при решении вышеуказанной технической проблемы или технической задачи, является обеспечение возможности автоматизированного запуска произвольного (недоверенного) кода, в частности пользовательского кода, на вычислительном узле в изолированной среде.[0007] The technical result achieved when solving the above technical problem or technical problem is to enable automated launch of arbitrary (untrusted) code, in particular user code, on a computing node in an isolated environment.

[0008] Указанный технический результат достигается благодаря осуществлению способа запуска пользовательского (недоверенного) кода на вычислительном узле, выполняемый по меньшей мере одним вычислительным устройством, содержащего этапы, на которых:[0008] The specified technical result is achieved due to the implementation of a method for launching a user (untrusted) code on a computing node, performed by at least one computing device, comprising the steps of:

- получают запрос на запуск пользовательского программного кода;- receive a request to run the user program code;

- доставляют пользовательский программный код на вычислительный узел- deliver the user program code to the computing node

- запускают на вычислительном узле изолированную среду, предназначенную для безопасного исполнения компьютерных программ;- running on the computing node an isolated environment designed for the safe execution of computer programs;

- загружают пользовательский код в изолированную среду;- upload user code to the isolated environment;

- загружают в изолированную среду данные для пользовательского кода, которые будут обработаны пользовательским кодом;- loading into the sandbox data for the user code, which will be processed by the user code;

- обрабатывают данные для пользовательского кода посредством пользовательского кода в изолированной среде для получения результатов обработки данных;- processing data for the user code through the user code in an isolated environment to obtain data processing results;

- извлекают результаты обработки данных из изолированной среды и сохраняют их в по меньшей мере одном устройстве хранения данных.- extract the results of data processing from the isolated environment and store them in at least one data storage device.

[0009] В одном из частных примеров осуществления способа запрос на запуск пользовательского программного кода содержит пользовательский код и/или данные для пользовательского кода, причем пользовательский код и/или данные для пользовательского кода для загрузки в изолированную среду извлекаются из упомянутого запроса.[0009] In one particular embodiment of the method, the request to run the user code contains user code and/or data for the user code, wherein the user code and/or data for the user code to load into the sandbox is retrieved from said request.

[0010] В другом частном примере осуществления способа запрос на запуск пользовательского программного кода содержит ссылку на пользовательский код и/или ссылку на данные для пользовательского кода, которые будут обработаны пользовательским кодом, причем пользовательский код и/или данные для пользовательского кода для загрузки в изолированную среду извлекаются из устройства хранения данных по упомянутым ссылкам, содержащимся в упомянутом запросе.[0010] In another particular embodiment of the method, the request to run the user code contains a link to the user code and/or a link to data for the user code to be processed by the user code, wherein the user code and/or data for the user code to be loaded into the sandbox the medium is retrieved from the data storage device via said links contained in said request.

[0011] В другом частном примере осуществления способа для загрузки в изолированную среду данных для пользовательского кода и извлечения результатов обработки данных формируют именованный канал или unix socket для обмена данными с запущенным пользовательским кодом в изолированной среде или обеспечивают прямую заливку/загрузку упомянутых данных и кода в папку внутри изолированной среды.[0011] In another particular embodiment of the method for loading data for user code into an isolated environment and extracting the results of data processing, a named pipe or unix socket is formed to exchange data with running user code in an isolated environment or provide direct upload / download of the mentioned data and code in folder inside the sandbox.

[0012] В другом частном примере осуществления способа запрос на запуск пользовательского программного кода дополнительно содержит параметры вычислительных ресурсов, причем способ дополнительно содержит этап, на котором осуществляют определение вычислительного узла для запуска пользовательского кода на основе упомянутых параметров вычислительных ресурсов в зависимости от вычислительных характеристик вычислительного узла и их текущей вычислительной нагрузке.[0012] In another particular embodiment of the method, the request to run the user program code further comprises computing resource parameters, the method further comprising determining a computing node to run the custom code based on said computing resource parameters depending on the computing characteristics of the computing node and their current computing load.

[0013] В другом предпочтительном варианте осуществления заявленного решения представлено устройство запуска пользовательского (недоверенного) кода на вычислительном узле, содержащее по меньшей мере одно вычислительное устройство и по меньшей мере одну память, содержащую машиночитаемые инструкции, которые при их исполнении по меньшей мере одним вычислительным устройством выполняют вышеуказанный способ.[0013] In another preferred embodiment of the claimed solution, a device for launching user (untrusted) code on a computing node is presented, containing at least one computing device and at least one memory containing machine-readable instructions that, when executed by at least one computing device perform the above method.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

[0014] Признаки и преимущества настоящего технического решения станут очевидными из приводимого ниже подробного описания технического решения и прилагаемых чертежей, на которых:[0014] The features and advantages of the present technical solution will become apparent from the following detailed description of the technical solution and the accompanying drawings, in which:

[0015] На Фиг. 1 представлена схема системы обработки данных.[0015] In FIG. 1 is a diagram of a data processing system.

[0016] На Фиг. 2 пример общего вида вычислительного устройства.[0016] In FIG. 2 is an example of a general view of a computing device.

ОСУЩЕСТВЛЕНИЕ ТЕХНИЧЕСКОГО РЕШЕНИЯIMPLEMENTATION OF THE TECHNICAL SOLUTION

[0017] Ниже будут описаны понятия и термины, необходимые для понимания данного технического решения.[0017] The concepts and terms necessary for understanding this technical solution will be described below.

[0018] В данном техническом решении под системой подразумевается, в том числе компьютерная система, ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированные системы управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность операций (действий, инструкций).[0018] In this technical solution, the system means, including a computer system, a computer (electronic computer), CNC (numerical control), PLC (programmable logic controller), computerized control systems and any other devices capable of performing a given , a well-defined sequence of operations (actions, instructions).

[0019] Под устройством обработки команд подразумевается электронный блок, вычислительное устройство, либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы).[0019] A command processing device is an electronic unit, a computing device, or an integrated circuit (microprocessor) that executes machine instructions (programs).

[0020] Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройств хранения данных. В роли устройства хранения данных могут выступать, но не ограничиваясь, жесткие диски (HDD), флеш-память, ПЗУ (постоянное запоминающее устройство), твердотельные накопители (SSD), оптические приводы.[0020] The instruction processing device reads and executes machine instructions (programs) from one or more data storage devices. The role of a storage device can be, but not limited to, hard drives (HDD), flash memory, ROM (read only memory), solid state drives (SSD), optical drives.

[0021] Программа - последовательность инструкций, предназначенных для исполнения устройством управления вычислительной машины или устройством обработки команд.[0021] A program is a sequence of instructions intended to be executed by a computer control device or command processing device.

[0022] Виртуальная машина - абстрактный компьютер, работа которого реализуется (эмулируется) на реальной машине с помощью программных и/или аппаратных средств.[0022] A virtual machine is an abstract computer whose operation is implemented (emulated) on a real machine using software and/or hardware.

[0023] Доверенный код - это код, который, перед запуском на пром. среде, прошел определенные этапы, которые гарантируют безопасность запуска такого кода в пром. среде. Как правило к таким этапам относятся: проведение ревью кода (другими разработчиками); выполнение статического анализа кода различными инструментами (например, Sonar) на предмет выявления слабых мест или вредоносного кода; выполнение тестирования, включающего: функциональное, нагрузочное тестирование и проведение приемо-сдаточных испытаний, фиксация артефактов, например, в виде дистрибутива, который по установленному DevOps процессу устанавливается на пром. среду. Проблема доверенного кода-это время вывода в пром. среду, поскольку для тестирования кода нужно сначала разработать тесты и т.д.[0023] A trusted code is a code that, before running on prom. environment, has gone through certain stages that guarantee the safety of running such code in prom. environment. As a rule, these stages include: code review (by other developers); performing static code analysis with various tools (for example, Sonar) to identify weaknesses or malicious code; testing, including: functional, load testing and acceptance testing, fixing artifacts, for example, in the form of a distribution kit, which is installed on the industrial platform according to the established DevOps process. Wednesday. The trusted code problem is the output time in the prom. environment, because to test the code, you must first develop tests, etc.

[0024] Произвольный пользовательский (недоверенный) код - это код, который не прошел этапов присущих доверенному коду и поэтому не может считаться безопасным, поскольку может содержать вредоносный код, деструктивные действия, ошибки и т.д. Далее по тексту термины «пользовательский» и «недоверенный», применяемые в отношении термина «код», используются взаимозаменяемо.[0024] Arbitrary user (untrusted) code is code that has not gone through the steps inherent in trusted code and therefore cannot be considered safe, since it may contain malicious code, destructive actions, errors, etc. Hereinafter, the terms "user" and "untrusted" as used in relation to the term "code" are used interchangeably.

[0025] Необходимость запуска недоверенного кода в пром. среде возникает, например, когда инженеры данных (Data Engineer) или эксперты по анализу массивов данных (Data Scientist) разрабатывают код по трансформации данных или разрабатывают модели, написанные, например, на коде на Python, и хотят быстро и автоматизировано внедрить такой код в пром. среду, в том числе с минимальными проверками, которые выполняют сами разработчики, но без прохождения этапов для доверенного кода. Проблема недоверенного кода - это его безопасность, т.к. никто не проверяет такой код.[0025] The need to run untrusted code in prom. environment arises, for example, when data engineers (Data Engineer) or experts in the analysis of data arrays (Data Scientist) develop data transformation code or develop models written, for example, in Python code, and want to quickly and automatically implement such code in industry . environment, including those with minimal checks performed by the developers themselves, but without going through the stages for trusted code. The problem with untrusted code is its security. nobody checks such code.

[0026] Представленная система обработки данных решает задачу автоматизированной поставки и безопасного запуска произвольного (недоверенного) кода на кластере (пром. среда) за счет:[0026] The presented data processing system solves the problem of automated delivery and safe launch of arbitrary (untrusted) code on a cluster (industrial environment) due to:

- обеспечения доставки и запуска недоверенного кода в пром. среде;- ensuring the delivery and launch of untrusted code in the prom. environment;

- обеспечения такому коду доступа только к данным, предназначенным для обработки упомянутым кодом (доверенный код упомянутой системы определяет, какие данные требуются для обработки, читает данные с источника и кладет их в изолированное окружение недоверенного кода);- providing such a code with access only to data intended for processing by said code (the trusted code of said system determines what data is required for processing, reads the data from the source and puts it in an isolated environment of the untrusted code);

- исключения возможности доступа к любым другим данным за счет блокировки доступа к сети из изолированного окружения (закрыт доступ к любым хранилищам, базам данных, файловым системам и т.д.);- exclusion of the possibility of access to any other data by blocking access to the network from an isolated environment (access to any storages, databases, file systems, etc. is closed);

- выделения определенного количества ресурсов (CPU, MEM и т.д.) для работы недоверенного кода, что исключает вредоносные действия, связанные с попытками перегрузки системы- allocation of a certain amount of resources (CPU, MEM, etc.) for the operation of untrusted code, which eliminates malicious actions associated with attempts to overload the system

- блокировки любые другие вредоносные действия даже в случае компрометации учетной записи, под которой такой код был запущен.- blocking any other malicious activity even if the account under which such code was run is compromised.

[0023] В соответствии схемой, представленной на Фиг. 1, система обработки данных содержит: устройство 10 управления запуском пользовательского (недоверенного) кода и устройство 100 автоматизированного запуска пользовательского (недоверенного) кода. Упомянутые устройства могут быть реализованы на базе по меньшей мере одного вычислительного устройства (включая виртуальные машины/устройства), выполненные в программно-аппаратной части таким образом, чтобы выполнять приписанные им ниже функции. Например, устройство 10 управления запуском пользовательского кода может представлять собой портативный или стационарный компьютер, телефон, смартфон, планшет или прочее вычислительное устройство, выполненное с возможность формирования и передачи запроса на запуск пользовательского кода в устройство 100 автоматизированного запуска пользовательского кода. Запрос на запуск пользовательского кода может быть передан с использованием проводных или беспроводных каналов передачи данных, широко известных из уровня техники.[0023] According to the diagram shown in FIG. 1, the data processing system includes: a user (untrusted) code launch control device 10 and a user (untrusted) code automated launcher 100. Said devices may be implemented on the basis of at least one computing device (including virtual machines/devices) configured in firmware in such a way as to perform the functions assigned to them below. For example, the user code launch control device 10 may be a laptop or desktop computer, telephone, smartphone, tablet, or other computing device configured to generate and transmit a request to run the user code to the automated user code launcher 100 . The request to run the user code may be transmitted using wired or wireless data channels widely known in the art.

[0027] Устройство 100 запуска пользовательского кода может содержать: модуль 101 планировки задач; модуль 102 управления вычислительными ресурсами; по меньшей мере один модуль 103 управления вычислительным узлом; по меньшей мере один модуль 104 запуска изолированной среды; по меньшей мере один модуль 105 обмена данных с изолированной средой; по меньшей мере один модуль 106 запуска кода в изолированной среде; и по меньшей мере один модуль 107 хранения данных. Все перечисленные модули могут быть реализованы на базе программно-аппаратных средств упомянутого устройства 100.[0027] The user code launcher 100 may include: a task scheduling module 101; a computing resource management module 102; at least one computing node control module 103; at least one sandbox launcher 104; at least one sandbox communication module 105; at least one module 106 run code in an isolated environment; and at least one data storage module 107 . All of the listed modules can be implemented on the basis of the firmware of the mentioned device 100.

[0028] Например, модуль 101 планировки задач может быть реализован на базе Apache Oozie - серверной системы планирования рабочих процессов для управления заданиями Hadoop.[0028] For example, task scheduling module 101 may be implemented on Apache Oozie, a server-side workflow scheduling system for managing Hadoop jobs.

[0029] Модуль 102 управления вычислительными ресурсами может быть реализован на базе YARN (Yet Another Resource Negotiator) - модуля, отвечающего за управление ресурсами кластеров и планирование заданий.[0029] Compute resource management module 102 may be implemented on the basis of YARN (Yet Another Resource Negotiator), a module responsible for cluster resource management and job scheduling.

[0030] Модуль 103 управления вычислительными узлами может быть реализован на базе YARN NodeManager, управляющего всеми узлами в кластере YARN (см. например, статью https://www.ibm.com/developerworks/ru/library/bd-hadoopyarn/).[0030] Compute node management module 103 can be implemented on the basis of a YARN NodeManager that manages all nodes in a YARN cluster (see, for example, the article https://www.ibm.com/developerworks/ru/library/bd-hadoopyarn/).

Модуль 104 запуска изолированной среды может быть реализован на базе ядра Linux, выполненного с возможностью осуществления функции пространства имен. Пространство имен (от англ. namespaces) - это функция ядра Linux, позволяющая изолировать и виртуализировать глобальные системные ресурсы множества процессов. Примеры ресурсов, которые можно виртуализировать: ID процессов, имена хостов, ID пользователей, доступ к сетям, межпроцессное взаимодействие и файловые системы. Более подробно функция пространства имен раскрыта в статье «user_namespaces - overview of Linux user namespaces», размещенной в Интернет по адресу: https://man7.org/linux/man-pages/man7/user_namespaces.7.html.Sandbox launcher 104 may be implemented based on a Linux kernel capable of implementing a namespace function. Namespace (from the English namespaces) is a feature of the Linux kernel that allows you to isolate and virtualize the global system resources of many processes. Examples of resources that can be virtualized are process IDs, hostnames, user IDs, network access, interprocess communication, and filesystems. For a more detailed description of the namespace function, see the article "user_namespaces - overview of Linux user namespaces" posted on the Internet at: https://man7.org/linux/man-pages/man7/user_namespaces.7.html.

[0032] Модуль 105 обмена данных с изолированной средой предназначен для взаимодействия с модулем 107 хранения данных, а также для поставки и получения данных и пользовательского кода в/из изолированной среды. Упомянутый модуль 105 может быть реализован на базе технологии unix named pipes/sockets, раскрытой в статье «А Socket-based IPC Tutorial», опубликованной в Интернет по адресу: http://www.qnx.com/developers/docs/qnx 4.25 docs/tcpip50/prog_guide/sock_ipc_tut.html.[0032] The sandbox communication module 105 is designed to interact with the data storage module 107, and to supply and receive data and user code to/from the sandbox. Said module 105 may be implemented based on the unix named pipes/sockets technology disclosed in the article "A Socket-based IPC Tutorial" published on the Internet at: http://www.qnx.com/developers/docs/qnx 4.25 docs /tcpip50/prog_guide/sock_ipc_tut.html.

[0033] Модуль 106 запуска кода в изолированной среде может быть реализован на базе по меньшей мере одного вычислительного устройства, оснащенного устройством памяти, и выполнен с возможностью запуска пользовательского кода, сохраненного в устройстве памяти.[0033] The sandbox code launcher 106 may be implemented on at least one computing device equipped with a memory device and configured to run user code stored in the memory device.

[0034] Модуль 107 хранения данных может представлять собой жесткий диск (HDD), твердотельный накопитель данных (SSD), флэш-память (EEPROM, NAND и т.п.), оптические носители информации (CD-R/RW, DVD-R/RW, BlueRay Disc, MD) и др. В модуле 107 хранения данных может быть сохранен по меньшей мере один пользовательский код и данные, которые следует обработать при помощи пользовательского кода, которые далее будут назваться данными для пользовательского кода. В альтернативном варианте реализации представленного технического решения упомянутое устройство 100 может содержать только один модуль 107 хранения данных, который будет являться общим для всех вычислительных узлов.[0034] The data storage unit 107 may be a hard disk drive (HDD), a solid state data drive (SSD), flash memory (EEPROM, NAND, etc.), optical storage media (CD-R/RW, DVD-R /RW, BlueRay Disc, MD), etc. In the data storage unit 107, at least one user code and data to be processed with the user code, hereinafter referred to as user code data, can be stored. In an alternative implementation of the presented technical solution, said device 100 may contain only one data storage module 107, which will be common to all computing nodes.

[0035] На первом этапе работы системы обработки данных устройство 10 управления запуском пользовательского кода формирует запрос на запуск пользовательского программного кода, который является произвольным (недоверенным) кодом. Формирование упомянутого запроса может быть инициировано пользователем устройства 10 посредством устройств ввода данных, широко известных из уровня техники. Например, пользователь посредством специализированного графического интерфейса может указать: ссылку на пользовательский код, который хранится в модуле 107 хранения данных; ссылку на данные для пользовательского кода, которые будут обработаны пользовательским кодом; и параметры, характеризующие вычислительные ресурсы для запуска пользовательского кода.[0035] In the first step of the data processing system, the user code launch control device 10 generates a request to run the user program code, which is arbitrary (untrusted) code. The formation of said request may be initiated by the user of the device 10 by means of data input devices widely known in the art. For example, the user through a specialized graphical interface can specify: a link to the user code, which is stored in the module 107 data storage; a link to data for the user code that will be processed by the user code; and parameters characterizing computing resources for running user code.

[0036] Соответственно, после ввода пользователем указанной выше информации устройство 10 управления запуском пользовательского кода формирует запрос на запуск пользовательского программного кода, в который включается ссылка на пользовательский код, ссылка на данные для пользовательского кода и параметры вычислительных ресурсов, после чего сформированный запрос направляется в устройство 100 автоматизированного запуска пользовательского кода.[0036] Accordingly, after the user enters the above information, the user code launch control device 10 generates a request to run the user code, which includes a link to the user code, a link to data for the user code, and computing resource parameters, after which the generated request is sent to device 100 for automated launching of user code.

[0037] В альтернативном варианте реализации заявленного решения упомянутый запрос на запуск пользовательского программного кода вместо ссылки на пользовательский код может содержать непосредственно пользовательский код, а вместо ссылки на данные для пользовательского кода - непосредственно данные для пользовательского кода, которые следует обработать пользовательским кодом. Пользовательский код и данные для пользовательского кода могут быть загружены посредством специализированного графического интерфейса, упомянутого ранее, и добавлены в запрос на запуск пользовательского программного кода упомянутым устройством 10. Таким образом, может быть выполнена доставка пользовательского программного кода и данных на вычислительный узел.[0037] In an alternative implementation of the claimed solution, said request to run the user program code, instead of referring to the user code, may contain directly the user code, and instead of referring to data for the user code, directly the data for the user code, which should be processed by the user code. The user code and data for the user code can be downloaded via the dedicated graphical interface mentioned earlier and added to a request to run the user code by said device 10. Thus, delivery of the user code and data to the computing node can be performed.

[0038] При получении упомянутым устройством 100 запроса на запуск пользовательского программного кода упомянутый запрос поступает в модуль 101 планировки задач, который определяет вычислительный узел для запуска пользовательского кода. Например, для определения упомянутого вычислительного узла упомянутый модуль 101 может сформировать и направить соответствующий запрос в модуль 102 управления вычислительными ресурсами, который в ответ на запрос направит данные о вычислительных узлах, их вычислительных характеристиках и текущей вычислительной нагрузке. Список вычислительных узлов и их вычислительные характеристики могут быть заранее сохранены в упомянутом модуле 102, а данные о текущей вычислительной нагрузке вычислительных узлов могут быть запрошены модулем 102 у по меньшей мере одного модуля 103 управления вычислительными узлами широко известными из уровня техники методами.[0038] When said device 100 receives a request to run a user program code, said request goes to the task scheduling module 101, which determines a computing node to run the user code. For example, to determine said computing node, said module 101 may generate and send a corresponding request to the computing resource management module 102, which, in response to the request, will send data about the computing nodes, their computing characteristics, and the current computing load. The list of computing nodes and their computing characteristics can be stored in advance in the mentioned module 102, and data on the current computing load of the computing nodes can be requested by the module 102 from at least one computing node management module 103 by methods widely known from the prior art.

[0039] При получении модулем 101 данных о вычислительных узлах, их вычислительных характеристиках и текущей вычислительной нагрузке упомянутый модуль 101, например, выбирает наименее загруженный вычислительные узел, вычислительные характеристики которого соответствуют параметрам, характеризующим вычислительные ресурсы для запуска пользовательского кода. Далее модуль 101 формирует запрос на запуск пользовательского кода, в который включаются данные о вычислительном узле для запуска пользовательского кода, ссылка на пользовательский код и ссылка на данные для пользовательского кода, после чего сформированный запрос передается в модуль 102 управления вычислительными ресурсами, который осуществляет поиск вычислительного узла, указанного в данных о вычислительном узле для запуска пользовательского кода, и передает сформированный запрос в данный вычислительный узел.[0039] When the module 101 receives data about the computing nodes, their computing characteristics and the current computing load, the said module 101, for example, selects the least loaded computing node, the computing characteristics of which correspond to the parameters characterizing the computing resources for running user code. Next, the module 101 generates a request to run the user code, which includes data about the computing node to run the user code, a link to the user code, and a link to the data for the user code, after which the generated request is transmitted to the module 102 of the computing resource management, which searches for the computing node specified in the compute node data to run the user code, and sends the generated request to this compute node.

[0040] Соответственно, запрос на запуск пользовательского кода поступает в модуль 103 управления вычислительным узлом, который при получении упомянутого запроса осуществляет запуск модуля 104 запуска изолированной среды посредством направления соответствующей команды, после чего направляет полученный запрос в упомянутый модуль 104. При получении запроса на запуск пользовательского кода модуль 104 осуществляет запуск изолированной среды в модуле 106 запуска кода в изолированной среде. Например, запуск изолированной среды может осуществляться посредством размещения модулем 104 папок и файлов приложения (например, операционной системы) предназначенного для запуска пользовательского кода, после чего модуль 104 извлекает из полученного запроса ссылку на пользовательский код и ссылку на данные для пользовательского кода, которые направляются в модуль 105 обмена данных с изолированной средой. Дополнительно модуль 104 может направить в модуль 105 ссылку на папку, в которой размещены файлы изолированной среды для возможности размещения в данной папке данных пользовательского кода и/или данных для пользовательского кода.[0040] Accordingly, the request to run the user code is received by the computing node control module 103, which, upon receiving the above request, starts the sandbox launch module 104 by sending the appropriate command, and then sends the received request to the said module 104. Upon receipt of the start request user code module 104 executes sandbox launch in sandbox code launcher 106 . For example, launching the sandbox can be accomplished by having module 104 place folders and files of an application (e.g., an operating system) intended to run user code, whereupon module 104 extracts from the received request a user code reference and a data reference for the user code, which are sent to module 105 communication with an isolated environment. Additionally, module 104 may direct module 105 to a folder containing sandbox files so that user code data and/or user code data can be placed in that folder.

[0041] Модуль 105 обмена данных с изолированной средой обращается по ссылке на пользовательский код и извлекает из модуля 107 хранения данных пользовательский код, после чего извлеченные данные загружаются модулем 105 в изолированную среду, запущенную в модуле 106. Для загрузки пользовательского кода может быть, например, использована ссылка на папку, полученная от модуля 104 ранее. Как только пользовательский код загружен в модуль 106, модуль 105 направляет уведомление о завершении загрузки пользовательского кода, после чего модуль 104 направляет в модуль 106 команду для выполнения пользовательского кода в изолированной среде (т.е. модуль 104 инициирует запуск пользовательского кода в модуле 106). Таким образом, обеспечивается доставка пользовательского программного кода и данных на вычислительный узел.[0041] The sandbox communication module 105 references the user code and retrieves the user code from the data storage module 107, after which the extracted data is loaded by module 105 into the sandbox running in module 106. To download the user code, for example, , the link to the folder received from the module 104 earlier is used. Once the user code has been loaded into module 106, module 105 sends a notification that the user code has been loaded, after which module 104 sends a command to module 106 to execute the user code in a sandbox (i.e., module 104 initiates the execution of user code in module 106) . Thus, the delivery of the user program code and data to the computing node is ensured.

[0042] Далее упомянутый модуль 105 создает именованный канал (именованный конвейер (англ. named pipe) или альтернативный вариант unix socket (для случая двухстороннего обмена) для обмена данными с запущенным пользовательским кодом в изолированной среде, после чего упомянутый модуль 105 по ссылке извлекает данные для пользовательского кода из модуля 107 хранения данных и через именованный канал направляет данные в изолированную среду модуля 106 для обработки извлеченных данных, предназначенных для обработки пользовательским кодом.[0042] Further, the mentioned module 105 creates a named pipe (named pipeline (English named pipe) or an alternative unix socket (for the case of two-way exchange) for exchanging data with running user code in an isolated environment, after which the mentioned module 105 retrieves the data by reference for user code from the storage module 107 and sends the data via a named pipe to the sandbox of the module 106 for processing the retrieved data to be processed by the user code.

[0043] В альтернативном варианте реализации заявленного решения после загрузки пользовательского кода в изолированную среду модуль 105 обмена данных с изолированной средой может выполнить загрузку в изолированную среду данных, предназначенных для обработки пользовательским кодом, в специально выделенной области памяти модуля 106, например, в папку, предназначенную для размещения упомянутых данных. Соответственно, как только пользовательский код и данные для пользовательского кода загружены в модуль 106, модуль 104 направляет в модуль 106 команду для выполнения пользовательского кода в изолированной среде для обработки сохраненных данных для пользовательского кода.[0043] In an alternative implementation of the claimed solution, after loading the user code into the sandbox, the data sandbox communication module 105 may load the data intended for processing by the user code into the sandbox in a specially allocated memory area of the module 106, for example, in a folder, designed to contain the said data. Accordingly, once the user code and data for the user code have been loaded into the module 106, the module 104 instructs the module 106 to execute the user code in a sandbox to process the stored data for the user code.

[0044] Результаты обработки данных для пользовательского кода могут быть сохранены в модуле 106 запуска кода в изолированной среде, например, в специально выделенной области памяти модуля 106 (в частности, размещены в папке, предназначенной для хранения результатов обработки данных), после чего результаты обработки данных могут быть извлечены модулем 105 обмена данных с изолированной средой из упомянутого модуля 106, и сохранены в модуле 107 хранения данных, либо направлены непосредственно в устройство 10 управления запуском пользовательского кода в ответ на запрос на запуск пользовательского программного кода. Результаты обработки данных могут быть просмотрены пользователем, либо другим лицом, имеющим доступ к данным, сохраненным в модуле 107 хранения данных, при помощи широко известных средств отображения информации.[0044] The data processing results for the user code can be stored in the code launcher 106 in an isolated environment, for example, in a dedicated memory area of the module 106 (in particular, located in a folder intended for storing data processing results), after which the processing results data can be retrieved by sandbox communication module 105 from said module 106, and stored in data storage module 107, or sent directly to user code launch control device 10 in response to a request to run user program code. The results of data processing can be viewed by the user, or another person having access to the data stored in the data storage unit 107, using well-known information display means.

[0045] Соответственно, если запрос на запуск пользовательского кода вместо упомянутых ссылок содержит непосредственно пользовательский код и/или данные для пользовательского кода, то эти данные извлекаются из запроса модулем 104 запуска изолированной среды и размещаются в модуле 106 запуска кода в изолированной среде после запуска изолированной среды, например, посредством размещения файлов пользовательского кода и/или данных для пользовательского кода в специально выделенной области памяти модуля 106, например, в папке, предназначенной для размещения упомянутых данных. Далее после обработки модулем 106 данных, предназначенных для пользовательского кода, упомянутый модуль 106 направляет команду в модуль 105 обмена данных с изолированной средой для извлечения из модуля 106 результатов обработки данных и сохранения их в модуле 107 хранения данных, либо направлены непосредственно в устройство 10 управления запуском пользовательского кода в ответ на запрос на запуск пользовательского программного кода.[0045] Accordingly, if the request to run the user code instead of the references mentioned contains directly the user code and/or data for the user code, then this data is extracted from the request by the sandbox launcher 104 and placed in the sandbox code launcher 106 after the sandbox is started. environment, for example, by placing files of user code and/or data for user code in a dedicated memory area of the module 106, for example, in a folder designed to accommodate said data. Further, after the module 106 has processed the data intended for the user code, the said module 106 sends a command to the communication module 105 with an isolated environment to retrieve the data processing results from the module 106 and store them in the data storage module 107, or sent directly to the launch control device 10 user code in response to a request to run user code.

[0046] В общем виде (см. Фиг. 2) вычислительное устройство (200) содержит объединенные общей шиной информационного обмена один или несколько процессоров (201), средства памяти, такие как ОЗУ (202) и ПЗУ (203) и интерфейсы ввода/вывода (204).[0046] In general terms (see Fig. 2), the computing device (200) contains one or more processors (201), memory means, such as RAM (202) and ROM (203), and input / output (204).

[0047] Процессор (201) (или несколько процессоров, многоядерный процессор и т.п.) может выбираться из ассортимента устройств, широко применяемых в настоящее время, например, таких производителей, как: Intel™, AMD™, Apple™, Samsung Exynos™, MediaTEK™, Qualcomm Snapdragon™ и т.п. Под процессором или одним из используемых процессоров в системе (200) также необходимо учитывать графический процессор, например, GPU NVIDIA с программной моделью, совместимой с CUDA, или Graphcore, тип которых также является пригодным для полного или частичного выполнения способа, а также может применяться для обучения и применения моделей машинного обучения в различных информационных системах.[0047] The processor (201) (or multiple processors, multi-core processor, etc.) can be selected from a range of devices currently widely used, for example, manufacturers such as: Intel™, AMD™, Apple™, Samsung Exynos ™, MediaTEK™, Qualcomm Snapdragon™, etc. Under the processor or one of the processors used in the system (200), it is also necessary to take into account the graphics processor, for example, NVIDIA GPU with a CUDA-compatible software model, or Graphcore, the type of which is also suitable for full or partial execution of the method, and can also be used to training and application of machine learning models in various information systems.

[0048] ОЗУ (202) представляет собой оперативную память и предназначено для хранения исполняемых процессором (201) машиночитаемых инструкций для выполнения необходимых операций по логической обработке данных. ОЗУ (202), как правило, содержит исполняемые инструкции операционной системы и соответствующих программных компонент (приложения, программные модули и т.п.). При этом в качестве ОЗУ (202) может выступать доступный объем памяти графической карты или графического процессора.[0048] RAM (202) is a random access memory and is designed to store machine-readable instructions executable by the processor (201) to perform the necessary data logical processing operations. The RAM (202) typically contains the executable instructions of the operating system and associated software components (applications, program modules, etc.). In this case, the RAM (202) may be the available memory of the graphics card or graphics processor.

[0049] ПЗУ (203) представляет собой одно или более устройств постоянного хранения данных, например, жесткий диск (HDD), твердотельный накопитель данных (SSD), флэш-память (EEPROM, NAND и т.п.), оптические носители информации (CD-R/RW, DVD-R/RW, BlueRay Disc, MD) и др.[0049] A ROM (203) is one or more persistent storage devices such as a hard disk drive (HDD), a solid state drive (SSD), flash memory (EEPROM, NAND, etc.), optical storage media ( CD-R/RW, DVD-R/RW, BlueRay Disc, MD), etc.

[0050] Для организации работы компонентов устройства (200) и организации работы внешних подключаемых устройств применяются различные виды интерфейсов В/В (204). Выбор соответствующих интерфейсов зависит от конкретного исполнения вычислительного устройства, которые могут представлять собой, не ограничиваясь: PCI, AGP, PS/2, IrDa, FireWire, LPT, COM, SATA, IDE, Lightning, USB (2.0, 3.0, 3.1, micro, mini, type C), TRS/Audio jack (2.5, 3.5, 6.35), HDMI, DVI, VGA, Display Port, RJ45, RS232 и т.п.[0050] Various types of I/O interfaces (204) are used to organize the operation of device components (200) and organize the operation of external connected devices. The choice of the appropriate interfaces depends on the specific design of the computing device, which can be, but not limited to: PCI, AGP, PS/2, IrDa, FireWire, LPT, COM, SATA, IDE, Lightning, USB (2.0, 3.0, 3.1, micro, mini, type C), TRS/Audio jack (2.5, 3.5, 6.35), HDMI, DVI, VGA, Display Port, RJ45, RS232, etc.

[0051] Для обеспечения взаимодействия пользователя с устройством (200) применяются различные средства (205) В/В информации, например, клавиатура, дисплей (монитор), сенсорный дисплей, тач-пад, джойстик, манипулятор мышь, световое перо, стилус, сенсорная панель, трекбол, динамики, микрофон, средства дополненной реальности, оптические сенсоры, планшет, световые индикаторы, проектор, камера, средства биометрической идентификации (сканер сетчатки глаза, сканер отпечатков пальцев, модуль распознавания голоса) и т.п.[0051] To ensure user interaction with the device (200), various means (205) of I/O information are used, for example, a keyboard, a display (monitor), a touch display, a touchpad, a joystick, a mouse, a light pen, a stylus, a touch panel, trackball, speakers, microphone, augmented reality tools, optical sensors, tablet, light indicators, projector, camera, biometric identification tools (retina scanner, fingerprint scanner, voice recognition module), etc.

[0052] Средство сетевого взаимодействия (206) обеспечивает передачу данных посредством внутренней или внешней вычислительной сети, например, Интранет, Интернет, ЛВС и т.п. В качестве одного или более средств (206) может использоваться, но не ограничиваться: Ethernet карта, GSM модем, GPRS модем, LTE модем, 5G модем, модуль спутниковой связи, NFC модуль, Bluetooth и/или BLE модуль, Wi-Fi модуль и др.[0052] The network communication means (206) provides data transmission via an internal or external computer network, for example, an Intranet, the Internet, a LAN, and the like. As one or more means (206) can be used, but not limited to: Ethernet card, GSM modem, GPRS modem, LTE modem, 5G modem, satellite communication module, NFC module, Bluetooth and / or BLE module, Wi-Fi module and others

[0053] Конкретный выбор элементов устройства (200) для реализации различных программно-аппаратных архитектурных решений может варьироваться с сохранением обеспечиваемого требуемого функционала.[0053] The specific choice of elements of the device (200) for the implementation of various software and hardware architectural solutions may vary while maintaining the required functionality provided.

[0054] Модификации и улучшения вышеописанных вариантов осуществления настоящего технического решения будут ясны специалистам в данной области техники. Предшествующее описание представлено только в качестве примера и не несет никаких ограничений. Таким образом, объем настоящего технического решения ограничен только объемом прилагаемой формулы.[0054] Modifications and improvements to the above embodiments of the present technical solution will be clear to experts in the art. The foregoing description is provided by way of example only and is not intended to be limiting in any way. Thus, the scope of this technical solution is limited only by the scope of the attached claims.

Claims (15)

1. Способ запуска пользовательского программного кода на вычислительном узле, выполняемый по меньшей мере одним вычислительным устройством, содержащий этапы, на которых:1. A method for launching a user program code on a computing node, executed by at least one computing device, comprising the steps of: - получают запрос на запуск пользовательского программного кода на вычислительном узле в изолированной среде для обработки данных, предназначенных для обработки упомянутым кодом;- receive a request to run a user program code on a computing node in an isolated environment for processing data intended for processing by said code; - доставляют пользовательский программный код на вычислительный узел;- delivering the user program code to the computing node; - запускают на вычислительном узле изолированную среду, предназначенную для безопасного исполнения компьютерных программ;- running on the computing node an isolated environment designed for the safe execution of computer programs; - загружают пользовательский программный код в изолированную среду;- download the user program code in an isolated environment; - определяют на основе информации упомянутого запроса данные для пользовательского программного кода, которые будут обработаны пользовательским программным кодом;- determining, based on the information of said request, data for the user program code to be processed by the user program code; - загружают в изолированную среду данные для пользовательского программного кода, которые будут обработаны пользовательским программным кодом;- loading into the sandbox data for the user program code to be processed by the user program code; - определяют, что упомянутые данные для пользовательского программного кода загружены в изолированную среду;- determine that the mentioned data for the user program code is loaded into the sandbox; - обрабатывают данные для пользовательского программного кода посредством пользовательского программного кода в изолированной среде для получения результатов обработки данных;- processing data for the user program code through the user program code in an isolated environment to obtain data processing results; - извлекают результаты обработки данных, полученных в результате обработки данных для пользовательского программного кода пользовательским программным кодом, из изолированной среды и сохраняют их в по меньшей мере одном устройстве хранения данных.extracting data processing results obtained as a result of processing data for the user program code by the user program code from the isolated environment and storing them in at least one data storage device. 2. Способ по п. 1, характеризующийся тем, что запрос на запуск пользовательского программного кода содержит пользовательский программный код и/или данные для пользовательского программного кода, причем пользовательский программный код и/или данные для пользовательского программного кода для загрузки в изолированную среду извлекаются из упомянутого запроса.2. The method according to claim 1, characterized in that the request to run the user program code contains user program code and/or data for user program code, wherein the user program code and/or data for user program code to be loaded into the sandbox are retrieved from the mentioned request. 3. Способ по п. 1, характеризующийся тем, что запрос на запуск пользовательского программного кода содержит ссылку на пользовательский программный код и/или ссылку на данные для пользовательского программного кода, которые будут обработаны пользовательским программным кодом, причем пользовательский программный код и/или данные для пользовательского программного кода для загрузки в изолированную среду извлекаются из устройства хранения данных по упомянутым ссылкам, содержащимся в упомянутом запросе.3. The method according to claim 1, characterized in that the request to run the user program code contains a link to the user program code and/or a link to data for the user program code to be processed by the user program code, wherein the user program code and/or data for custom program code to be loaded into the sandbox are retrieved from the storage device at the referenced links contained in the said request. 4. Способ по п. 1, характеризующийся тем, что для загрузки в изолированную среду данных для пользовательского программного кода и извлечения результатов обработки данных формируют именованный канал или unix socket для обмена данными с запущенным пользовательским программным кодом в изолированной среде или обеспечивают прямую заливку/загрузку упомянутых данных и кода в папку внутри изолированной среды.4. The method according to claim 1, characterized in that in order to load data for the user program code into the isolated environment and retrieve the results of data processing, a named pipe or unix socket is formed to exchange data with the running user program code in the isolated environment or provide direct upload / download mentioned data and code to a folder inside the sandbox. 5. Способ по п. 1, характеризующийся тем, что запрос на запуск пользовательского программного кода дополнительно содержит параметры вычислительных ресурсов, причем способ дополнительно содержит этап, на котором осуществляют определение вычислительного узла для запуска пользовательского программного кода на основе упомянутых параметров вычислительных ресурсов в зависимости от вычислительных характеристик вычислительного узла и их текущей вычислительной нагрузке.5. The method according to claim 1, characterized in that the request to run the user program code further comprises computing resource parameters, and the method further comprises determining a computing node to run the user program code based on said computing resource parameters depending on computing characteristics of the computing node and their current computing load. 6. Устройство запуска пользовательского программного кода на вычислительном узле, содержащее по меньшей мере одно вычислительное устройство и по меньшей мере одну память, содержащую машиночитаемые инструкции, которые при их исполнении по меньшей мере одним вычислительным устройством выполняют способ по любому из пп. 1-5.6. A device for launching user program code on a computing node, comprising at least one computing device and at least one memory containing machine-readable instructions that, when executed by at least one computing device, perform the method according to any one of paragraphs. 1-5.
RU2021103036A 2021-02-09 Method and apparatus for launching arbitrary (untrusted) code on a cluster in an isolated environment RU2775354C1 (en)

Publications (1)

Publication Number Publication Date
RU2775354C1 true RU2775354C1 (en) 2022-06-29

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8881278B2 (en) * 2010-06-11 2014-11-04 Trustwave Holdings, Inc. System and method for detecting malicious content
US20150213259A1 (en) * 2014-01-27 2015-07-30 Microsoft Corporation Web Service Sandbox System
US20150278513A1 (en) * 2012-04-06 2015-10-01 Ivan Krasin Hosted application sandboxing
US20160330215A1 (en) * 2015-05-10 2016-11-10 Hyperwise Security Ltd. Detection of potentially malicious web content by emulating user behavior and user environment
US20170039369A1 (en) * 2015-03-31 2017-02-09 Juniper Networks, Inc. Configuring a sandbox environment for malware testing
RU2665911C2 (en) * 2017-02-08 2018-09-04 Акционерное общество "Лаборатория Касперского" System and method of file analysis for maliciousness in virtual machine

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8881278B2 (en) * 2010-06-11 2014-11-04 Trustwave Holdings, Inc. System and method for detecting malicious content
US20150278513A1 (en) * 2012-04-06 2015-10-01 Ivan Krasin Hosted application sandboxing
US20150213259A1 (en) * 2014-01-27 2015-07-30 Microsoft Corporation Web Service Sandbox System
US20170039369A1 (en) * 2015-03-31 2017-02-09 Juniper Networks, Inc. Configuring a sandbox environment for malware testing
US20160330215A1 (en) * 2015-05-10 2016-11-10 Hyperwise Security Ltd. Detection of potentially malicious web content by emulating user behavior and user environment
RU2665911C2 (en) * 2017-02-08 2018-09-04 Акционерное общество "Лаборатория Касперского" System and method of file analysis for maliciousness in virtual machine

Similar Documents

Publication Publication Date Title
US9852197B2 (en) ETL tool interface for remote mainframes
US10360141B2 (en) Automated application test system
US10917456B2 (en) Application management in an application deployment pipeline
US10673712B1 (en) Parallel asynchronous stack operations
US20140331209A1 (en) Program Testing Service
US10042744B2 (en) Adopting an existing automation script to a new framework
KR101751515B1 (en) Apparatus, method, and computer program for testing
US11442765B1 (en) Identifying dependencies for processes for automated containerization
US9003231B1 (en) System for instantiating service instances for testing in a known state
US10146674B2 (en) Plugin-based software verification system
US11989539B2 (en) Continuous integration and deployment system time-based management
US20140331205A1 (en) Program Testing Service
US9904574B2 (en) Parallel computing without requiring antecedent code deployment
US11487878B1 (en) Identifying cooperating processes for automated containerization
WO2014179731A1 (en) Program testing service
Devroey et al. JUGE: An infrastructure for benchmarking Java unit test generators
RU2775354C1 (en) Method and apparatus for launching arbitrary (untrusted) code on a cluster in an isolated environment
CN110399209B (en) Data processing method, system, electronic device and storage medium
JP2020194521A (en) Method, apparatus, device, and medium for starting virtual machine
US20220350596A1 (en) Computing node allocation based on build process specifications in continuous integration environments
RU2792257C1 (en) Method and system for automated migration of information infrastructure of an enterprise to a cloud service
RU2818034C1 (en) Method and system for launching applications in simulated environment
RU2818490C1 (en) Method and system for distributing system resources for processing user requests
US20230259347A1 (en) Container based generation of inputs for generic functions
US10048970B2 (en) Portable boot configuration solution for thin client device