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 PDFInfo
- 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
Links
- 240000007419 Hura crepitans Species 0.000 claims description 32
- 238000005516 engineering process Methods 0.000 abstract description 3
- 230000000694 effects Effects 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 238000004891 communication Methods 0.000 description 10
- 238000000034 method Methods 0.000 description 5
- 230000003287 optical Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 206010002855 Anxiety Diseases 0.000 description 2
- 241001025261 Neoraja caerulea Species 0.000 description 2
- 208000000810 Separation Anxiety Diseases 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000000903 blocking Effects 0.000 description 2
- 230000001066 destructive Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 210000004544 DC2 Anatomy 0.000 description 1
- 210000001525 Retina Anatomy 0.000 description 1
- 230000003190 augmentative Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001010 compromised Effects 0.000 description 1
- 230000000875 corresponding Effects 0.000 description 1
- 238000005755 formation reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002530 ischemic preconditioning Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006011 modification reaction Methods 0.000 description 1
- 230000002085 persistent Effects 0.000 description 1
- 230000003068 static Effects 0.000 description 1
- 230000001131 transforming Effects 0.000 description 1
Images
Abstract
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
[0027] Устройство 100 запуска пользовательского кода может содержать: модуль 101 планировки задач; модуль 102 управления вычислительными ресурсами; по меньшей мере один модуль 103 управления вычислительным узлом; по меньшей мере один модуль 104 запуска изолированной среды; по меньшей мере один модуль 105 обмена данных с изолированной средой; по меньшей мере один модуль 106 запуска кода в изолированной среде; и по меньшей мере один модуль 107 хранения данных. Все перечисленные модули могут быть реализованы на базе программно-аппаратных средств упомянутого устройства 100.[0027] The
[0028] Например, модуль 101 планировки задач может быть реализован на базе Apache Oozie - серверной системы планирования рабочих процессов для управления заданиями Hadoop.[0028] For example,
[0029] Модуль 102 управления вычислительными ресурсами может быть реализован на базе YARN (Yet Another Resource Negotiator) - модуля, отвечающего за управление ресурсами кластеров и планирование заданий.[0029] Compute
[0030] Модуль 103 управления вычислительными узлами может быть реализован на базе YARN NodeManager, управляющего всеми узлами в кластере YARN (см. например, статью https://www.ibm.com/developerworks/ru/library/bd-hadoopyarn/).[0030] Compute
Модуль 104 запуска изолированной среды может быть реализован на базе ядра Linux, выполненного с возможностью осуществления функции пространства имен. Пространство имен (от англ. namespaces) - это функция ядра Linux, позволяющая изолировать и виртуализировать глобальные системные ресурсы множества процессов. Примеры ресурсов, которые можно виртуализировать: ID процессов, имена хостов, ID пользователей, доступ к сетям, межпроцессное взаимодействие и файловые системы. Более подробно функция пространства имен раскрыта в статье «user_namespaces - overview of Linux user namespaces», размещенной в Интернет по адресу: 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
[0033] Модуль 106 запуска кода в изолированной среде может быть реализован на базе по меньшей мере одного вычислительного устройства, оснащенного устройством памяти, и выполнен с возможностью запуска пользовательского кода, сохраненного в устройстве памяти.[0033] The
[0034] Модуль 107 хранения данных может представлять собой жесткий диск (HDD), твердотельный накопитель данных (SSD), флэш-память (EEPROM, NAND и т.п.), оптические носители информации (CD-R/RW, DVD-R/RW, BlueRay Disc, MD) и др. В модуле 107 хранения данных может быть сохранен по меньшей мере один пользовательский код и данные, которые следует обработать при помощи пользовательского кода, которые далее будут назваться данными для пользовательского кода. В альтернативном варианте реализации представленного технического решения упомянутое устройство 100 может содержать только один модуль 107 хранения данных, который будет являться общим для всех вычислительных узлов.[0034] The
[0035] На первом этапе работы системы обработки данных устройство 10 управления запуском пользовательского кода формирует запрос на запуск пользовательского программного кода, который является произвольным (недоверенным) кодом. Формирование упомянутого запроса может быть инициировано пользователем устройства 10 посредством устройств ввода данных, широко известных из уровня техники. Например, пользователь посредством специализированного графического интерфейса может указать: ссылку на пользовательский код, который хранится в модуле 107 хранения данных; ссылку на данные для пользовательского кода, которые будут обработаны пользовательским кодом; и параметры, характеризующие вычислительные ресурсы для запуска пользовательского кода.[0035] In the first step of the data processing system, the user code
[0036] Соответственно, после ввода пользователем указанной выше информации устройство 10 управления запуском пользовательского кода формирует запрос на запуск пользовательского программного кода, в который включается ссылка на пользовательский код, ссылка на данные для пользовательского кода и параметры вычислительных ресурсов, после чего сформированный запрос направляется в устройство 100 автоматизированного запуска пользовательского кода.[0036] Accordingly, after the user enters the above information, the 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
[0038] При получении упомянутым устройством 100 запроса на запуск пользовательского программного кода упомянутый запрос поступает в модуль 101 планировки задач, который определяет вычислительный узел для запуска пользовательского кода. Например, для определения упомянутого вычислительного узла упомянутый модуль 101 может сформировать и направить соответствующий запрос в модуль 102 управления вычислительными ресурсами, который в ответ на запрос направит данные о вычислительных узлах, их вычислительных характеристиках и текущей вычислительной нагрузке. Список вычислительных узлов и их вычислительные характеристики могут быть заранее сохранены в упомянутом модуле 102, а данные о текущей вычислительной нагрузке вычислительных узлов могут быть запрошены модулем 102 у по меньшей мере одного модуля 103 управления вычислительными узлами широко известными из уровня техники методами.[0038] When said
[0039] При получении модулем 101 данных о вычислительных узлах, их вычислительных характеристиках и текущей вычислительной нагрузке упомянутый модуль 101, например, выбирает наименее загруженный вычислительные узел, вычислительные характеристики которого соответствуют параметрам, характеризующим вычислительные ресурсы для запуска пользовательского кода. Далее модуль 101 формирует запрос на запуск пользовательского кода, в который включаются данные о вычислительном узле для запуска пользовательского кода, ссылка на пользовательский код и ссылка на данные для пользовательского кода, после чего сформированный запрос передается в модуль 102 управления вычислительными ресурсами, который осуществляет поиск вычислительного узла, указанного в данных о вычислительном узле для запуска пользовательского кода, и передает сформированный запрос в данный вычислительный узел.[0039] When the
[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
[0041] Модуль 105 обмена данных с изолированной средой обращается по ссылке на пользовательский код и извлекает из модуля 107 хранения данных пользовательский код, после чего извлеченные данные загружаются модулем 105 в изолированную среду, запущенную в модуле 106. Для загрузки пользовательского кода может быть, например, использована ссылка на папку, полученная от модуля 104 ранее. Как только пользовательский код загружен в модуль 106, модуль 105 направляет уведомление о завершении загрузки пользовательского кода, после чего модуль 104 направляет в модуль 106 команду для выполнения пользовательского кода в изолированной среде (т.е. модуль 104 инициирует запуск пользовательского кода в модуле 106). Таким образом, обеспечивается доставка пользовательского программного кода и данных на вычислительный узел.[0041] The
[0042] Далее упомянутый модуль 105 создает именованный канал (именованный конвейер (англ. named pipe) или альтернативный вариант unix socket (для случая двухстороннего обмена) для обмена данными с запущенным пользовательским кодом в изолированной среде, после чего упомянутый модуль 105 по ссылке извлекает данные для пользовательского кода из модуля 107 хранения данных и через именованный канал направляет данные в изолированную среду модуля 106 для обработки извлеченных данных, предназначенных для обработки пользовательским кодом.[0042] Further, the mentioned
[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
[0044] Результаты обработки данных для пользовательского кода могут быть сохранены в модуле 106 запуска кода в изолированной среде, например, в специально выделенной области памяти модуля 106 (в частности, размещены в папке, предназначенной для хранения результатов обработки данных), после чего результаты обработки данных могут быть извлечены модулем 105 обмена данных с изолированной средой из упомянутого модуля 106, и сохранены в модуле 107 хранения данных, либо направлены непосредственно в устройство 10 управления запуском пользовательского кода в ответ на запрос на запуск пользовательского программного кода. Результаты обработки данных могут быть просмотрены пользователем, либо другим лицом, имеющим доступ к данным, сохраненным в модуле 107 хранения данных, при помощи широко известных средств отображения информации.[0044] The data processing results for the user code can be stored in the
[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
[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)
Publications (1)
Publication Number | Publication Date |
---|---|
RU2775354C1 true RU2775354C1 (en) | 2022-06-29 |
Family
ID=
Citations (6)
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)
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 |