Способ обработки данных пользователя
METHOD OF PROCESSING USER DATA

Область техники
Данное изобретение относится области компьютерной техники, обеспечивающей защиту пользовательских данных, более конкретно, к средствам для обработки данных пользователя, обеспечивающих защиту от несанкционированного доступа к информации, обрабатываемой и хранимой в облачных компьютерных информационно-вычислительных системах. Уровень техники
Из уровня техники известен способ управления контейнерными приложениями на пограничном устройстве, описанный в US 20220164177 А1, G06F 8/65, опубл. 26.05.2022. Согласно известному решению через пограничный механизм сетевого устройства выполняют управление, запрос или получение информации о механизме контейнера, работающем на сетевом устройстве. С помощью механизма контейнера осуществляют извлечение и управление контейнером приложения. Контейнер включает в себя обученную модель машинного обучения, и может быть получен из магазина приложений. В известном способе запускают обученную модель машинного обучения для генерации данных и выводят данные для отображения в пользовательском интерфейсе. Механизм докера содержит клиент и сервер, соединенные с возможностью обмена данными через высокоуровневый REST API. Клиент может запускать команды, каждая из которых транслируется с помощью REST API и отправляется на сервер. Указанное решение обеспечивает возможность безопасного развертывания контейнерных приложений.
Известна система предоставления доступа к пользовательским данным, описанная в US 20180121447 A1, G06F 21/60, опубл. 03.05.2018. В известном решении сервисная система реализует веб-систему управления отношениями с клиентами (CRM), которая предоставляет пользователям услуги CRM. Система включает в себя серверы приложений, сконфигурированные для реализации и выполнения программных приложений CRM, а также предоставления связанных данных, кода, форм, веб-страниц и другой информации на клиентские устройства и с них, а также для хранения и извлечения, данных, объектов и содержимого вебстраницы. Система определяет политики, применимые к данным. Определенные политики указывают преобразования, которые должны быть выполнены с данными для обеспечения конфиденциальности пользователей. Система преобразует пользовательские данные в соответствии с политиками и предоставляет преобразованные пользовательские данные администратору. Известное решение направлено на обеспечение защиты конфиденциальности данных пользователей.
Известен способ открытия непроверенного контента в отдельной одноразовой виртуализированной среде с использованием временной виртуальной машины (ВМ) (US 2015089497 A1, опубл. 26.03.2015, кл. G06F 21/00). Известный способ включает в себя перехват запроса на открытие/доступ к непроверенному контенту от стороннего удаленного сервера и сравнение конкретной информации/атрибутов непроверенного контента с предварительно определенными критериями. Пользовательское устройство может подключиться с использованием протокола удаленного представления к временной виртуальной машине в отдельной одноразовой среде, так что вывод непроверенного контента может быть транспортирован и отображен в отдельной одноразовой среде. Соединение с временной виртуальной машиной может быть разорвано, а отдельная одноразовая среда может быть очищена, чтобы снизить риск наличия вредоносного кода в непроверенном содержимом.
Из уровня техники известен способ обработки данных, описанный в CN 110471740 A, G06F 9/455, опубл. 19.11.2019, взятый в качестве прототипа. В известном решении сервер представляет собой поставщика облачных услуг, способного создавать виртуальную машину на облачном сервере и выполнять задачи машинного обучения. После получения задачи машинного обучения от пользователя сервер определяет базовый образ. Определяется образ контейнера, соответствующий базовому образу, и соответствующий задаче машинного обучения. На облачном сервере создается виртуальная машина с использованием базового образа, а затем в созданной виртуальной машине создается экземпляр контейнера Docker с использованием созданного образа. После монтирования данных, соответствующих задаче машинного обучения, в экземпляр контейнера, запускается экземпляр контейнера, чтобы начать выполнение задачи машинного обучения. Известное решение направлено на повышение эффективности обработки данных и выполнения задач машинного обучения.
В указанных аналогах не описано и не предполагается осуществление анализа данных о загруженности вычислительных ресурсов облачной инфраструктуры для получения показателя загруженности и создание виртуальной машины на его основе; и после загрузки подготовленного docker-контейнера с данными пользователя в виртуальную машину осуществление идентификации пользователя с получением идентификатора пользователя из информации о текущем сеансе работы пользователя при осуществлении доступа к контейнеру и проверки прав доступа при осуществлении доступа к контейнеру.
Поставленная задача заключается в создании решения, позволяющего распределять нагрузку между узлами облачной инфраструктуры и обеспечивающего защиту данных от несанкционированного доступа.
Технический результат заключается в обеспечении безопасной обработки данных пользователя с учетом балансировки нагрузки между узлами облачной среды.
Сущность изобретения
Указанный технический результат достигается и поставленная задача решается за счет того, что:
способ обработки данных пользователя, включающий в себя передачу данных пользователя посредством закрытой VPN-сети от тонкого клиента,
выполненного в виде web-приложения, к серверной части, где взаимодействие серверной части с клиентом осуществляется посредством REST API, а передача данных производится через сервер приложений, содержит этап, на котором данные пользователя анализируются на предмет наличия в них вредоносных данных; а также этапы, заключающиеся в размещении переданных данных пользователя в приватной виртуальной сети хранения данных (СХД);
анализе данных о загруженности вычислительных ресурсов облачной инфраструктуры для получения показателя загруженности;
создании виртуальной машины на основе показателя загруженности;
загрузке подготовленного docker-контейнера с данными пользователя в виртуальную машину;
идентификации пользователя и проверке прав доступа при осуществлении доступа к контейнеру, включающих получение идентификатора пользователя из информации о текущем сеансе работы пользователя при осуществлении доступа к контейнеру и проверку прав доступа пользователя к контейнеру;
обработке требуемых наборов данных виртуальной машиной под управлением полученных данных пользователя;
загрузке результатов обработки требуемых наборов данных на сервер;
дезактивации виртуальной машины для обработки полученных данных пользователя;
передаче результатов обработки требуемых наборов данных в СХД; предоставлении доступа пользователя к результатам обработки требуемых наборов данных.
Кроме того, в заявленном решении закрытая VPN-сеть может быть построена на технологии VipNet.
Кроме того, в заявленном решении данные пользователя включают по меньшей мере модель искусственного интеллекта и наборы данных для обучения модели.
Кроме того, в заявленном решении доступ к данным пользователя может быть определен только для пользователя их загрузившего.
Кроме того, проверка прав доступа пользователя к контейнеру может осуществляется в соответствии с матрицей полномочий доступа.
Осуществление изобретения
Варианты реализации изобретения обеспечивают механизмы для обработки данных пользователя с использованием виртуальной машины.
Настоящее раскрытие описывает способ обработки данных пользователя в системе, имеющей сервисную архитектуру, представляющую из себя тонкий клиент в виде web-приложения и серверную часть, реализующую взаимодействие с клиентом посредством REST API.
Все подключения клиентского приложения к серверу происходят внутри закрытой VPN-сети, таким образом исключая возможность компрометации передаваемой и получаемой информации на стадии обмена данными.
Все запросы, которые приходят на сервер со стороны тонкого клиента, проходят анализ на предмет наличия вредоносных данных. Все входные параметры для взаимодействия строго ограничены. Таким образом не допускается возможность использования вредоносных запросов со стороны клиента.
Пользователям предоставлена возможность загрузки в систему своих моделей и наборов данных.
После анализа данных на предмет наличия в них вредоносных данных, данные пользователя размещаются в приватной виртуальной сети хранения данных (СХД).
Перемещение пользовательских файлов после их загрузки для исполнения функционала системы происходит только внутри закрытой сети облака между серверами и сервисами. Для реализации работы модели на предоставленном наборе данных создается новая виртуальная машина, закрытая от внешнего доступа.
Виртуальная машина создается на основании данных о загруженности вычислительных ресурсов облачной инфраструктуры.
Набор микроприложений Load Balancing, запущенных в облачной инфраструктуре, распределяет запросы пользователей между конечными исполнителями с целью равномерности нагрузки. Использование модульного принципа позволяет использовать различные подходы для реализации механизма балансировки. Одним из вариантов таких подходов может быть подход, выполненный на основе среднеквадратичного отклонения.
Сервис позволяет автоматизировать балансировку нагрузки между узлами. Он собирает данные, анализирует их и принимает решение о миграции виртуальных машин с одного узла на другой. Сервис является частью системы, что позволяет вызывать внутренние функции без использования внешнего API.
Структура решения следующая
- Модуль сбора статистических данных;
- Модуль анализа собранных данных и принятия решений;
- Модуль балансировки виртуальных машин (overload-алгоритм);
- Модуль определения недостаточности загруженности вычислительных узлов (underload-алгоритм);
- Вспомогательные службы (API, правила балансировщика);
Данные модули имеют базовые классы, что позволяет использовать собственные реализации классов.
Для анализа требуется получать с каждого узла данные о загруженности вычислительных ресурсов. Показатель загруженности CPU узла получается с использованием Python-библиотеки psutil. Показатель свободной оперативной памяти узла вычисляется как сумма свободной, кэшируемой и буферной памяти. Библиотека управления виртуализацией libvirt позволяет получать актуальные данные об использовании ресурсов виртуальной машиной. Сервис модифицирован таким образом, чтобы он с определенным интервалом отправлял данные по загруженности узла (процентная загруженность CPU, загруженность РчАМ в мегабайтах) и загруженности каждой виртуальной машины (процессорное время, загруженность RAM в мегабайтах), расположенной на нем, в менеджер процессов, обеспечивающий взаимодействие с базой данных. Полученная информация записывается в соответствующие таблицы базы данных. Данные о загруженности виртуальных машин и узлов заполняются за счет использования атомарного метода UPSERT.
По показателям CPU и RAM в конфигурационном файле устанавливаются пороговые значения среднеквадратичного отклонения. Данный модуль запускается с определенной в конфигурационном файле периодичностью. Собранные данные преобразуются в процентные показатели. Следует нормализовать показатели в границах [0, 1]. Для этого процессорное время переводится в загруженность CPU по следующей формуле:
где:
cpu_time - процессорное время, затраченное виртуальной машиной для обработки процессов (задач). Выражено в наносекундах.
oldcpu_time - процессорное время, затраченное виртуальной машиной в предыдущий момент времени (во время time_old).
time_current - время, в которое был снят показатель cpu_time. Выражено в секундах.
time_old - время, в которое был снят показатель oldcpu_time. Выражено в секундах.
vcpus - количество ядер, выделенное данной виртуальной машине.
Загруженность RAM вычисляется как отношение занятой памяти к общему количеству памяти узла. После обработки загруженности по всем узлам, вычисляется среднее арифметическое по CPU и RAM и среднеквадратичное отклонение. Полученные значения сравниваются с пороговыми значениями, указанными в конфигурационном файле, на основании чего делается вывод о необходимости стабилизации кластера. В случае, если полученные значения ниже пороговых, балансировщик проверит кластер underload-алгоритмом на энергоэффективность. В противном случае, запускается модуль балансировки виртуальных машин.
Модуль балансировки нагрузки виртуальных машин позволяет создавать собственные реализации балансировки, либо воспользоваться реализацией на основе среднеквадратичного отклонения.
Балансировщик получает текущие значения загруженности всех узлов и их виртуальных машин. На основе полученных данных проводится симуляция перемещения каждой виртуальной машины на каждый узел (кроме исходного для виртуальной машины узла), в ходе которой меняются показатели загруженности для определения нового вероятного среднеквадратичного отклонения. Результаты симуляции записывается в список в виде словаря {узел, виртуальная машина, отклонение}. Данный список, по завершении всех симуляций, сортируется по возрастанию с ключом среднеквадратичного отклонения. Полученный список характеризует все возможные случаи перемещений виртуальных машин, из которых нас интересуют те, что сводят отклонение к минимуму. Взятая пара {узел, виртуальная машина} должна пройти фильтрацию. Фильтры позволяют определить, возможно ли запустить виртуальную машину на заданном узле. В случае, если один из фильтров не завершился успешно, пара {узел, виртуальная машина} пропускает дальнейшую фильтрацию и отбрасывается.
В случае, если пара прошла фильтрацию, вызывается метод live-migration, перемещающий виртуальную машину с исходного узла на целевой. В ходе миграции создается новый домен в libvirt, в который копируется содержимое оперативной памяти виртуальной машины. Когда копирование близко к завершению, гипервизор приостанавливает работу виртуальной машины, копирует оставшиеся данные и активирует домен виртуальной машины, возобновляя ее работу. По окончанию миграции, модуль балансировки прекращает свою работу до следующего вызова в случае перегрузки.
Если пара сервисом не прошла фильтрацию, из списка берется следующая пара. Подобная реализация позволяет поэтапно стабилизировать нагрузку в кластере до тех пор, пока среднеквадратичное отклонение по узлам будет ниже порогового значения. Изменение порогового значения позволяет регулировать "чувствительность" балансировщика к перегрузкам.
После создания на основе показателя загруженности виртуальной машины осуществляется загрузка подготовленного docker-контейнера с данными пользователя в виртуальную машину.
Заявленный способ обработки данных предполагает выполнение этапа идентификации пользователя и проверки прав доступа при осуществлении доступа к контейнеру.
Основными компонентами подсистемы контроля и разграничения доступа являются модуль идентификации пользователя и модуль проверки прав доступа. Модуль идентификации пользователя выполняет идентификацию пользователей, аутентифицированных в операционной системе, за счет информации о текущем сеансе работы пользователя при осуществлении доступа к обфусцированному контейнеру. Модуль проверки прав доступа реализует проверку прав доступа пользователей к обфусцированному контейнеру. Матрица полномочий доступа хранится в формате защищенного контейнера в качестве дополнительной секции исполняемого файла.
Целью функционирования подсистемы изолированной программной среды является обеспечение защиты от несанкционированного доступа к файлам среды и базам данных в оперативной памяти и на носителях информации в процессе их обработки.
В качестве базовой операционной системы для реализации системы контролируемого разграничения доступа к файлам документальных форматов была выбрана ОС семейства Linux (Ubuntu 18.04). Обусловлено это тем, что данные ОС имеют открытый исходный код и широко применяются в различных государственных организациях и ведомственных структурах.
На основе предложенной архитектуры была разработана структурная модель функционирования системы контролируемого разграничения доступа к массивам данных.
Необходимо отметить, что массив данных, извлеченный из обфусцированного контейнера, помещается в пространство изолированной программной среды. Таким образом, злоумышленник не может осуществить несанкционированный доступ к нему, поскольку документ не хранится в оперативной памяти, доступной для приложений уровня пользователя.
Согласно структурной модели функционирования системы контролируемого разграничения доступа к данным, предполагаются следующие этапы:
1. Модель обработки данных осуществляет попытку получения доступа к данным в обфусцированном контейнере. Подсистема контроля и разграничения доступа осуществляет идентификацию пользователя и проверку прав доступа. В случае разрешения доступа документ извлекается из защищенного контейнера и помещается в каталог «input_buf», который одновременно подключен к изолированной программной среде.
2. Модель обработки данных работает с данными в изолированной программной среде. По окончании работы система назначает права доступа к данным, аналогичные тем, что были ранее. Затем документ сохраняется в каталог «output_buf», который является каталогом изолированной программной среды, но при этом подключен к базовой ОС. Пользователь не имеет прав на доступ к каталогу «output_buf», лишь подсистема контроля и разграничения доступа может получить доступ к данному каталогу.
3. При появлении документа в каталоге «output_buf» подсистема преобразования данных внедряет документ и права доступа в шаблон исполняемого файла, а затем применяется процедура неразличимой обфускации.
Для реализации изолированной программной среды был выбран подход на основе технологии Linux Containers (LXC). Технология LXC представляет собой систему виртуализации на уровне ОС, которая создает виртуальное окружение с собственным пространством процессов и сетевым стеком. В LXC встроены механизмы контроля и ограничения доступа к ресурсам памяти и файловой системы. Для доступа к LXC предлагается использовать систему Docker (программное обеспечение для автоматизации развертывания и управления приложениями в среде виртуализации на уровне ОС). Она позволяет инкапсулировать приложение со всем его окружением и зависимыми библиотеками в контейнер, который может быть перенесен на любую ОС семейства Linux, с поддержкой механизма ядра cgroups.
Клиентская часть позволяет из интерфейса командной строки управлять контейнерами. Серверная часть обеспечивает полную изоляцию запускаемых на узле контейнеров на уровне файловой системы (у каждого контейнера собственная корневая файловая система), на уровне процессов (процессы имеют доступ только к собственной файловой системе контейнера, а ресурсы разделены средствами LXC), на уровне сети (каждый контейнер имеет доступ только к привязанному к нему сетевому пространству имен и соответствующим виртуальным сетевым интерфейсам). Docker-контейнер работает в пользовательском пространстве базовой ОС как изолированный процесс и использует ресурсы ядра совместно с другими контейнерами. При этом каждый Docker контейнер представляет собой изолированную программную среду, которая является безопасной платформой для извлечения документов из обфусцированных контейнеров и работы с ними.
Важным моментом реализации системы контролируемого разграничения доступа к данным является формирование шаблона исполняемого файла. Исполняемый файл, состоит из ряда заголовков, содержащих служебные данные, предназначенные для информирования загрузчика ОС о структуре и размерах данных; секций файла, содержащих данные и машинный код, реализующий функциональное предназначение данной программы. Заголовок файла (.header) имеет фиксированное расположение в начале файла и содержит общее описание структуры файла и его основные характеристики, такие как: тип, версия формата, архитектура процессора, виртуальный адрес точки входа, размеры и смещения остальных частей файла.
Секции файла - это блоки данных, содержащие информацию о местоположении машинного кода и данных программы в файле, а также место расположения этих данных в виртуальном адресном пространстве и сами данные.
Секция.code содержит следующие основные функции, реализующие базовый функционал системы контроля и разграничения доступа:
• RunApp() - предназначена для загрузки и инициализации всех компонентов контейнера и системы контроля и разграничения доступа;
• UserID() - предназначена для получения идентификатора пользователя из информации о текущем сеансе работы пользователя при осуществлении доступа к обфусцированному контейнеру;
• CheckRights() - предназначена для проверки прав доступа пользователя к документу в обфусцированном контейнере в соответствии с матрицей полномочий доступа, хранящейся вместе с документом;
• Extract() - предназначена для извлечения документа из обфусцированного контейнера.
После обработки требуемых наборов данных виртуальной машиной под управлением полученных данных пользователя осуществляется загрузка результатов обработки требуемых наборов данных на сервер, а виртуальная машина полностью уничтожается, исключая возможность дальнейшей утечки каких-либо данных.
Результаты обработки требуемых наборов данных передаются в СХД и становятся доступны пользователю.
Закрытая VPN-сеть может быть построена на базе технологии VipNet.
Данные пользователя включают по меньшей мере модель искусственного интеллекта и наборы данных для обучения модели. Доступ к данным пользователя определен только для пользователя их загрузившего.
Облачная среда может включать в себя вычислительные устройства, где каждое из устройств имеет процессор для управления работой вычислительного устройства и связанных с ним компоненты, включая оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), модуль связи. Вычислительное устройство может включать в себя множество машиночитаемых носителей. Машиночитаемый носитель может быть любым доступным носителем, к которому может обращаться вычислительное устройство, может быть постоянным и может включать энергозависимые и энергонезависимые, съемные и несъемные носители.
Вычислительное устройство может работать в сетевой среде, поддерживающей соединения с одним или более удаленными вычислительными устройствами. Вычислительные устройства могут быть персональными вычислительными устройствами или серверами, которые включают в себя многие или все элементы, описанные выше относительно вычислительного устройства.
Описанные выше этапы способа обеспечивают возможность безопасной обработки данных пользователя с учетом балансировки нагрузки между узлами облачной среды.