Система и способ для изоляции ресурсов посредством использования ресурсных менеджеров

Иллюстрации

Показать все

Изобретение относится к области защиты ресурсов операционной системы от несанкционированных изменений. Технический результат настоящего изобретения заключается в повышении безопасности доступа, хранения и использования содержимого ресурсов за счет полного контроля операций над ресурсами и предотвращения нарушения политик безопасности. Способ осуществления клиентом операций над данными ресурса с использованием ресурсного менеджера содержит этапы, на которых: получают от клиента запрос ядру операционной системы на проведение операций над данными, хранящимися в ресурсе, хранящимся в средстве хранения ресурсов; используют отдельный процесс для проведений операций над данными, хранящими в ресурсе, хранящимся в средстве хранения ресурсов, и передают ему данные, предоставленные клиентом, указатели на данные указанного ресурса и указатели на функции ресурсного менеджера, требуемые для обработки переданных данных; получают политики безопасности на произведение клиентом операций над указанным ресурсом, данных об операциях всех клиентов над указанным ресурсом, метаданные указанного ресурса; производят запрошенные клиентом операции над ресурсом, хранящимся в средстве хранения ресурсов, в случае положительных результатов анализа полученных данных, где анализ заключается в: анализе метаданных на возможность изменения текущих метаданных и нарушения изоляции указанного ресурса запрашиваемыми клиентом операциями над ресурсом; анализе информации об операциях всех клиентов системы над указанным ресурсом на возможность искажения результатов этих операций операциями текущего клиента; анализе информации о правах клиента на осуществление операций над указанным ресурсом на возможность нарушения данных прав. 2 н. и 9 з.п. ф-лы, 4 ил.

Реферат

Область техники

Изобретение относится к системам и способам защиты ресурсов операционной системы от несанкционированных изменений, а именно к системам и способам изоляции ресурсов друг от друга и от программного обеспечения, работающего с ними.

Уровень техники

В современных операционных системах доступ к ресурсам (например, к данным, хранящимся в оперативной памяти или получаемым через сокеты, к файлам на жестком диске и т.д.) может осуществляться параллельно или последовательно одним или несколькими клиентами, где клиентами являются приложения, работающие с ресурсами. Очень часто характеристики ресурсов (например, границы расположения данных в памяти, доступные порты передачи информации и т.д.) носят лишь информативный характер и слабо влияют на операции с данными этих ресурсов, а клиенты, выполняющие операции над ними, не знают о текущем состоянии ресурсов и об операциях других клиентов с ресурсами.

В результате такой организации работы с ресурсами их безопасность, т.е. конфиденциальность и достоверность хранящихся в них данных, в должной мере не может быть гарантирована.

Одними из самых частых примеров неправомерных изменений данных в ресурсах являются случаи, когда из-за ошибок в программе или из-за злонамеренных действий при записи в одну область памяти повреждаются или подменяются данные, находящиеся в соседних областях памяти. Именно на этом принципе основана работа вредоносного программного обеспечения, использующего уязвимости переполнения буфера. В лучшем случае это ведет к некорректной работе уязвимой программы, в худшем - затрагивает работу других приложений и операционной системы в целом (например, злоумышленники могут получить административные права на выполнение некоторых действий на компьютере жертвы или получить доступ к его конфиденциальным данным).

В качестве еще одного частого примера повреждения данных можно привести ситуацию, когда один клиент записывает данные в ресурс, из которого в это же время второй клиент данные считывает. При такой несинхронизированной работе двух клиентов, которые зачастую не знают о действиях друг друга, может произойти считывание поврежденной информации - первый клиент запросил данные до момента их изменения вторым клиентом, но получил уже после изменений, тем самым получив не те данные, на которые рассчитывал.

Современные операционные системы вообще и программное обеспечение в частности можно защитить от описанных выше ситуаций посредством ввода таких ограничений работы с данными, как политики безопасности, система транзакций операций, выставления четких границ областей ресурсов и проверок на то, чтобы клиенты эти границы не пересекали и т.д. К сожалению, описанные выше методы помогают лишь частично. Например, ограничивая доступ к одному ресурсу, операционные системы игнорируют обращения к его компонентам, т.е. подресурсам, из которых формируется ресурс (например, массив в оперативной памяти представляет собой набор страниц оперативной памяти, файл на жестком диске - набор кластеров жесткого диска, приложение - совокупность секций и т.д.). В результате, дописывая к концу файла новую информацию, нельзя повредить файл, находящийся рядом на диске, но можно получить доступ к жесткому диску и записывать данные покластерно, что может привести к повреждению информации в соседних файлах. Или же при запрете считывания файла с помощью политик безопасности можно все равно получить информацию о нем, обратившись к кластерам жесткого диска, в которых записана нужная информация. Зачастую при хорошей организации системы защиты ресурсов при работе разных приложений операционная система слабо защищает ресурсы при работе одного или нескольких процессов одного приложения, поскольку все его компоненты обладают равными правами при обращении к ресурсам. В результате в рамках работы одного приложения могут происходить рассинхронизации при чтении и записи в один ресурс, случайная запись в соседние ресурсы и т.д.

Для решения описанных выше проблем используют так называемые объектные или ресурсные менеджеры - модули приложений или операционной системы, которые единственные могут напрямую работать с ресурсами, обеспечивая их изоляцию друг от друга, а всем остальным клиентам для работы с ресурсами приходится контактировать с ресурсными менеджерами. Преимущество такой организации работы с данными заключается в возможности избежать большей части описанных выше проблем. Недостаток же заключается в том, что при возникновении ошибок в работе ресурсного менеджера или при его взломе вредоносным ПО безопасность данных (не только используемых конкретным приложением, но вообще всех с которыми работает данный ресурсный менеджер) ни в коей мере не может быть гарантирована.

Частично поставленные выше проблемы решаются методами, изложенными в патентах и заявках, указанных ниже.

В патенте US 7698731B2 описана общая схема работы политик безопасности в операционной системе и предоставление доступа к элементам системы в зависимости от политик безопасности. Тем не менее, сами политики безопасности никак не защищены от внесения изменения извне в случае использования уязвимостей в системе. Также работа политик безопасности изложена в заявке US 20110047613 A1, где в качестве среды используется виртуальная среда, а ресурсы изолированы от внешней системы.

В заявке US 20030014521 A1 описан промежуточный модуль, осуществляющий взаимодействие между пользователями и драйверами, предоставляющий доступ к ресурсам. Недостаток данной системы, как и предыдущих, заключается в том, что указанный модуль не защищен от внедрения в него посредством использования уязвимостей операционной системы постороннего кода, что в свою очередь никоим образом не гарантирует после этого корректную работу модуля и может предоставить доступ к ресурсу приложениям, не входящим в список доверенных.

Для обеспечения большей безопасности хранения данных необходимо, с одной стороны, осуществлять изоляцию ресурсов друг от друга и от клиентов, работающих с ними, отслеживать текущие операции над ресурсами, чтобы не допускать использование "занятых" ресурсов и контролировать конфиденциальность ресурсов, чтобы не допускать к ним недоверенных клиентов, а с другой, - максимально защищать (от воздействий извне и ошибок изнутри) те компоненты системы, которые непосредственно работают с ресурсами.

Выходом из сложившейся ситуации может стать использование компоненты операционной системы, в дальнейшем именуемой ресурсным менеджером, обладающей следующими свойствами:

- единственный модуль операционной системы, обладающий возможностями непосредственной работы с ресурсами выбранного типа;

- для каждого отдельного типа ресурса требуется отдельный ресурсный менеджер;

- если ресурс одного типа является составным и содержит в себе ресурсы других типов, то для работы с последними ресурсный менеджер первого типа обязан использовать ресурсные менеджеры соответствующих типов;

- содержит минимально возможный и необходимый доверенный инструментарий для работы с ресурсами, в первую очередь включающий в себя поддержку изоляции ресурсов (для исключения возможности ошибочной работы или использования уязвимостей вредоносным ПО, приводящих к возможности доступа к соседним ресурсам);

- все операции с ресурсами происходят в индивидуальных процессах;

- ресурсный менеджер разделен на контрольную и функциональную части, работающие в отдельных процессах;

- все клиенты, желающие произвести операции над ресурсом, должны обращаться к ресурсному менеджеру.

Такая форма организации работы клиентов с ресурсами является наиболее безопасной в плане целостности и конфиденциальности информации, хранящейся в ресурсах.

Настоящее изобретение позволяет решить задачу повышения безопасности работы с ресурсами в операционной системе за счет их изоляции от других ресурсов и клиентов, а также жесткого контроля доступа к ним, в том числе в случае, если недоверенные компоненты ресурсного менеджера содержат ошибки или были скомпрометированы.

Раскрытие изобретения

Изобретение предназначено для защиты ресурсов операционной системы от несанкционированных изменений за счет изоляции ресурсов друг от друга и от клиентов, работающих с ними.

Технический результат настоящего изобретения заключается в повышении безопасности доступа, хранения и использования ресурсов за счет полного контроля операций над ресурсами и предотвращения нарушения политик безопасности.

Система осуществления клиентом операций над данными ресурса с использованием ресурсного менеджера, которая содержит: средство хранения ресурсов, предназначенное для хранения ресурсов одного типа и предоставления их ресурсному менеджеру по его требованию и содержащее ресурс, предназначенный для хранения информации, вносимой в него ресурсным менеджером, и предоставления ее ресурсному менеджеру по его требованию и содержащий: метаданные ресурса, предназначенные для использования ресурсным менеджером с целью анализа допустимости операций над содержимым ресурса и содержимое ресурса, предназначенное для использования ядром операционной системы по запросу клиента; ядро операционной системы, представляющее собой центральную часть операционной системы и предназначенное для обеспечения клиентам координированного доступа к ресурсу компьютера, содержащемуся в средстве хранения ресурсов, и создания процесса работы с упомянутым ресурсом, предназначенного для получения от ядра операционной системы данных клиента для операций над упомянутым ресурсом, от средства хранения ресурсов - указателя на требуемый ресурс, от ресурсного менеджера - функций обработки данных ресурсного менеджера, произведения операций средствами функций обработки данных ресурсного менеджера и выдачи результатов выполненной операции ядру операционной системы; ресурсный менеджер, предназначенный для получения запроса от ядра операционной системы на проведение операций над данными, хранящимися в ресурсе, хранящемся в средстве хранения ресурсов, проверки, имеется ли у клиента, обратившегося к ядру операционной системы, достаточно прав на осуществление операции над указанным ресурсом, проверки на возможность выдачи некорректных данных другим клиентам, и осуществления операций над данными, хранящимися в указанном ресурсе, или же выдачи отказа на их исполнение, и содержащий: средство работы с данными ресурса, предназначенное для получения запроса от средства работы с клиентом на произведение, по крайней мере, одной из операций над содержимым указанного ресурса, таких как чтение, запись, а также, по крайней мере, одной из операций над указанным ресурсом, таких как создание, удаление, произведения требуемых операций и передачи результата выполнения операций средству работы с клиентом для дальнейшей обработки, средство проверки метаданных ресурса, предназначенное для получения по запросу средства работы с клиентом от указанного ресурса метаданных, вынесения решения о допустимости произведения требуемых клиентом операций с указанным ресурсом с теми условиями, чтобы запрашиваемые клиентом операции не изменяли метаданные и не нарушали изоляции указанного ресурса, и передачи результата средству работы с клиентом для дальнейшей обработки, средство проверки доступности ресурса, предназначенное для получения по запросу средства работы с клиентом данных об операциях всех клиентов над указанным ресурсом, вынесения решения о допустимости произведения требуемых клиентом операций над указанным ресурсом с теми условиями, чтобы данные операции не искажали данные из указанного ресурса, с которыми свои операции в это время производит другой клиент, и передачи результата средству работы с клиентом для дальнейшей обработки, средство работы с политиками безопасности, предназначенное для получения по запросу средства работы с клиентом у системы политик безопасности на произведение клиентом операций над указанным ресурсом, вынесения решения о допустимости произведения таких операций и передачи результата средству работы с клиентом для дальнейшей обработки, средство работы с клиентом, предназначенное для получения от ядра операционной системы запроса на выполнение клиентом операций над указанным ресурсом, подготовки и передачи данных средству работы с политиками безопасности, средству проверки доступности ресурса, средству проверки метаданных ресурса и средству работы с данными ресурса, приема результатов от этих средств ресурсного менеджера, формированию и передачи результатов ядру операционной системе; политики безопасности, представляющие собой набор правил и прав по ограничению выполнения операций клиента над ресурсом, хранящимся в средстве хранения ресурсов, а также набор правил и прав клиента на осуществление операций над указанным ресурсом, и предназначенные для использования их ресурсным менеджером в качестве одного из критериев оценки допустимости произведения операций клиентом над указанным ресурсом; клиент, представляющий собой процесс и предназначенный для работы с данными ресурса, хранящимся в средстве хранения ресурсов, посредством отправки ядру операционной системы вызовов.

В другом частном случае реализации системы ресурсный менеджер получает запрос от ядра операционной системы средствами межпроцессного взаимодействия.

Еще в одном частном случае реализации системы процесс работы с ресурсом, хранящимся в средстве хранения ресурсов, создается ядром операционной системы при обращении клиента к последнему.

В другом частном случае реализации системы над ресурсом, хранящимся в средстве хранения ресурсов, производится, по крайней мере, одна из следующих операций: поиск ресурса, создание нового ресурса, удаление существующего ресурса, чтение данных из ресурса, запись данных в ресурс.

Еще в одном частном случае реализации системы в качестве ресурса, хранящимся в средстве хранения ресурсов, выступает, по крайней мере, один из следующих: объекты в оперативной памяти, файлы, порты.

Способ осуществления клиентом операций над данными ресурса с использованием ресурсного менеджера, по которому: получают от клиента запрос ядру операционной системы на проведение операций над данными, хранящимися в ресурсе, хранящемся в средстве хранения ресурсов; используют отдельный процесс для проведений операций над данными, хранящими в ресурсе, хранящемся в средстве хранения ресурсов, и передают ему данные, предоставленные клиентом, указатели на данные указанного ресурса и указатели на функции ресурсного менеджера, требуемые для обработки переданных данных; получают политики безопасности на произведение клиентом операций над указанным ресурсом, данных об операциях всех клиентов над указанным ресурсом, метаданные указанного ресурса; производят запрошенные клиентом операции над ресурсом, хранящимся в средстве хранения ресурсов, в случае положительных результатов анализа полученных данных, где анализ заключается в: анализе метаданных на возможность изменения текущих метаданных и нарушения изоляции указанного ресурса запрашиваемыми клиентом операциями над ресурсом, анализе информации об операциях всех клиентов системы над указанным ресурсом на возможность искажения результатов этих операций операциями текущего клиента, анализе информации о правах клиента на осуществление операций над указанным ресурсом на возможность нарушения данных прав.

В другом частном случае реализации способа получают запрос от клиента к ядру операционной системы средствами API.

Еще в одном частном случае реализации способа получают запрос от ядра операционной системы к ресурсному менеджеру средствами межпроцессного взаимодействия.

В другом частном случае реализации способа из процесса работы с ресурсом, хранящимся в средстве хранения ресурсов, создают несколько новых процессов для выполнения в них разных не связанных друг с другом функций ресурсного менеджера.

Еще в одном частном случае реализации способа в качестве метаданных ресурса, хранящегося в средстве хранения ресурсов, выступает, по меньшей мере, одна из следующих характеристик: границы расположения на носителе информации, границы расположения в памяти, идентификатор, наименование, данные о целостности, информация о резервировании, информация о способах исполнения ресурса.

В другом частном случае реализации способа в качестве информации об операциях клиента над ресурсом, хранящимся в средстве хранения ресурсов, выступает, по меньшей мере, одна из следующих характеристик: время начала операции, текущий статус, текущий тип операции, связи между клиентами.

Краткое описание чертежей

Фиг. 1 представляет структурную схему системы взаимодействия клиента с ресурсом посредством ресурсного менеджера.

Фиг. 2 представляет структурную схему устройства ресурса, ресурсного менеджера и системы работы ресурсного менеджера.

Фиг. 3 представляет структурную схему взаимодействия между клиентом и ресурсом, содержащим в себе ресурсы нескольких типов.

Фиг. 4 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер.

Хотя изобретение может иметь различные модификации и альтернативные формы, характерные признаки, показанные в качестве примера на чертежах, будут описаны подробно. Следует понимать, однако, что цель описания заключается не в ограничении изобретения конкретным его воплощением. Наоборот, целью описания является охват всех изменений, модификаций, входящих в рамки данного изобретения, как это определено приложенной формуле.

Описание вариантов осуществления изобретения

Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, необходимыми для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.

Фиг. 1 представляет структурную схему системы взаимодействия клиента с ресурсом посредством ресурсного менеджера.

Система взаимодействия клиента с ресурсом посредством ресурсного менеджера состоит из клиента 110, ядра операционной системы 120, процесса работы с ресурсом 130, ресурсного менеджера 140, средства хранения ресурсов 150, обслуживаемых данным ресурсным менеджером 140, и ресурса 160, входящего в состав средства хранения ресурсов 150 и необходимого для работы клиента 110.

Клиент 110 представляет собой процесс, который использует в своей работе данные, хранящиеся в ресурсе 160. Клиент 110 посылает запрос (например, средствами API) ядру операционной системы 120 на предоставление доступа к выбранному ресурсу 160 для проведения операций (таких, как чтение, запись и т.д.) над хранящимися там данными или к средству хранения ресурсов 150 для операций (таких, как поиск, создание, удаление и т.д.) над самим ресурсом. В зависимости от того, разрешена ли ресурсным менеджером 130 данная операция в данный момент над выбранным ресурсом для данного клиента, ядро операционной системы 120 предоставляет доступ к ресурсу 160 или возвращает отказ.

Ядро операционной системы 120 - центральная часть операционной системы, обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память, внешнее аппаратное обеспечение, внешнее устройство ввода и вывода информации.

Ядро операционной системы 120 получает от клиента 110 запрос (например, средствами API) на предоставление доступа к выбранному ресурсу 160. После этого ядро операционной системы создает отдельный процесс работы с ресурсами 130, которому передает полученные от клиента 110 данные (например, указатель на адрес памяти, куда будет записана информация, или имя и позиция в файле, откуда информация будет считана), а также идентификатор ресурса для осуществления поиска ресурса 160 среди ресурсов того же типа 150 или описатель ресурса и указатель на данные ресурса, если ресурс уже был найден, и указывает, какие именно функции ресурсного менеджера 140 будут использоваться для обработки переданных клиентом 110 данных. После того, как процесс работы с ресурсами 130 будет завершен, ядро операционной системы 120 возвратит клиенту 110 результаты его работы.

Процесс работы с ресурсами 130 предназначен для получения от ядра операционной системы 120 данных клиента 110 для операций над ресурсом 160, от средства хранения ресурсов 150 - указателя на требуемый ресурс 160, от ресурсного менеджера 140 - функций обработки данных ресурсного менеджера 140, произведения требуемых операций средствами функций обработки данных ресурсного менеджера и выдачи результатов выполненной операции ядру операционной системы 120.

Процесс работы с ресурсами 130 создается ядром операционной системы 120 по факту обращения к нему клиента 110 для выполнения конкретной операции клиента 110 над данными ресурса 160 и после завершения требуемых операций и выдачи результатов ядру операционной системы 120 уничтожается. Таким образом, снижается шанс внедрения вредоносного кода в алгоритм операции, и тем самым повышается безопасность каждой отдельной операции клиента 110 над ресурсом 160. По полученным от клиента 110 и переданным ядром 120 данным формируется вызов необходимых функций ресурсного менеджера 140 (это может быть как единичная операция, например, удаление ресурса типа «файл» с ID="C:\file.dat", так и группа операций, например, дублирование буфера памяти с ID=1004, состоящих из поиска ресурса #1, создания ресурса #2, чтения ресурса #1 и записи в ресурс #2). Кроме того, функции работы с самим ресурсом (такие, как поиск ресурса, создание или удаление) и функции работы с содержимым ресурса (такие, как чтение и запись) могут для большей безопасности запускаться как отдельные процессы, тем самым препятствуя внедрению в них вредоносного кода.

Ресурсный менеджер 140 предназначен для получения запросов от ядра операционной системы 120 на доступ к данным, требуемым клиентом 110 и хранящимся в ресурсе 160, проверки, допустимо ли предоставить такой доступ, предоставления доступа к требуемому ресурсу или же выдачи отказа.

Ресурсный менеджер 140 предоставляет лишь часть своего функционала процессу работы с ресурсами 130, тем самым защищая остальные части от возможной ошибки работы или взлома вредоносным ПО.

Средство хранения ресурсов 150 предназначен для хранения ресурсов 160 одного типа, поиска и предоставления доступа к ним ресурсному менеджеру 140.

Средство хранения ресурсов 150 может включать в себя:

- оперативную память, содержащую в качестве ресурсов 160 массивы данных и информацию о них (например, размеры и положение в памяти);

- файловую систему, содержащую в качестве ресурсов 160 файлы и информацию о них;

- галерею изображений, являющуюся частью файловой системы и содержащую в качестве ресурсов 160 файлы, хранящие в себе изображения (такие, как bmp, png, jpg и т.д.)

- базу данных, содержащую в качестве ресурсов 160 таблицы данных.

Средство хранения ресурсов 150 содержит в себе всю информацию, достаточную для того, чтобы ресурсный менеджер 140 мог произвести поиск необходимого ресурса по переданному ему уникальному идентификатору (например, файловая система NTFS имеет MFT - Master File Table, в которой содержатся имена всех файлов, их размеры и расположение на диске, получая имя файла, файловая система по этим данным может осуществить его поиск).

Ресурс 160 предназначен для хранения информации, вносимой в него ресурсным менеджером 140, и предоставления ее последнему по требованию.

Ресурс 160 может включать в себя:

- объекты в оперативной памяти (например, массивы данных);

- файлы;

- порты.

В качестве примера, описывающего данную схему работы, можно привести считывание графическим редактором, таким как MS Paint, файла "c:\my_images\background.jpg", содержащего изображение, в выделенную область памяти для последующего отображения и редактирования.

Клиент 110 через функции API обращается к ядру операционной системы 120 с запросом на открытие файла "c:\my_images\background.jpg" на чтение (включающее в себя поиск файла в файловой системе и предоставление его описателя). Ядро операционной системы 120 создает новый процесс 130, из которого будет вызвана функция файлового ресурсного менеджера 140 для поиска файла с указанным клиентом 110 именем. Файловый ресурсный менеджер 140 через свою функцию осуществляет поиск требуемого файла среди всего набора файлов файловой системы, в случае успеха получает его параметры (такие, как расположение на жестком диске, размер и т.д.) и предоставляет, если необходимо, эти данные ядру операционной системы 120, которое в свою очередь регистрирует для последующей обработки ресурс в системе и предоставляет клиенту 110 его описатель. После этого процесс 130 завершается. Имея описатель файла и полученный по нему размер файла, клиент 110 через функции API обращается к ядру операционной системы 120 с запросом на создание буфера в памяти размером, равным размеру файла. Ядро операционной системы 120 создает новый процесс 130, из которого будет вызвана функция ресурсного менеджера памяти 140 для создания нового буфера. Ресурсный менеджер памяти 140 через свою функцию проводит анализ свободного места оперативной памяти, выделяет (т.е. определяет адрес начала и конца буфера, чтобы буфер не пересекался с другими объектами в памяти) область памяти запрошенного размера и предоставляет, если необходимо, данные по буферу ядру операционной системы 120, которое в свою очередь регистрирует (для последующей обработки) ресурс в систему и предоставляет клиенту 110 его описатель. После этого процесс 130 завершается. Клиент 110, имея на руках описатели для считываемого файла и буфера, куда файл должен быть прочитан, через функции API обращается к ядру операционной системы 120 с запросом на считывание содержимого файла в буфер. Ядро операционной системы 120 создает новый процесс 130, из которого будет вызвана функция файлового ресурсного менеджера 140 для считывания файла в память. Файловый ресурсный менеджер считывает тем или иным способом данные и передает их ресурсному менеджеру памяти для корректного размещения их в выделенном буфере. После завершения операции клиенту 110 возвращается результат операции. После этого процесс 130 завершается.

Фиг. 2 представляет структурную схему устройства ресурса, ресурсного менеджера и системы взаимодействия клиента с ресурсом посредством ресурсного менеджера.

Система взаимодействия клиента с ресурсом посредством ресурсного менеджера состоит из клиента 110, ядра операционной системы 120, политик безопасности 230, ресурсного менеджера 140 и ресурса 160.

Ресурс 160 содержит в себе метаданные ресурса 211 и содержимое ресурса 212. Метаданные ресурса могут включать в себя:

- идентификатор - уникальный ID, по которому можно однозначно идентифицировать ресурс в списке всех доступных ресурсов данного типа;

- наименование;

- данные о целостности (например, хэш-суммы, рассчитанные по данным ресурса);

- информацию о резервировании;

- информацию о способах исполнения ресурса;

- информацию расположения на носителе информации (например, ID кластеров жесткого диска, дорожек CD/DVD/Blu-Ray);

- границы расположения в памяти (например, диапазон адресов ячеек памяти, в котором могут располагаться данные, и за пределы которого они ни в коем случае выходить не могут).

Ресурсный менеджер 140 содержит в себе средство работы с данными ресурса 221, средство проверки метаданных ресурса 222, средство проверки доступности ресурса 223, средство работы с политиками безопасности 224 и средство работы с клиентом 225.

Средство работы с данными ресурса 221 предназначено для получения запроса от средства работы с клиентом 225 на произведение операций, таких как чтение, запись и т.д. над содержимым ресурса 212, а также операций, таких как поиск, создание, удаление и т.д. над самим ресурсом 160, произведение требуемых операций и передачи результата выполнения операций средству работы с клиентом 225 для дальнейшей обработки.

Средство проверки метаданных ресурса 222 предназначено для получения от ресурса 160 метаданных ресурса 211, вынесения решения о допустимости произведения, требуемых клиентом 110, операций с ресурсом с теми условиями, чтобы изменения не противоречили метаданным ресурса (например, работа только с заданным портом или запись только в выбранные области памяти), и передачи результата выполнения операций средству работы с клиентом 225 для дальнейшей обработки.

Средство проверки доступности ресурса 223 предназначено для получения информации о текущих операциях клиентов над ресурсом 160, вынесения решения о допустимости произведения, требуемых клиентом 110 операций над ресурсом 160 с теми условиями, чтобы данные операции не искажали данные из ресурса 110, с которыми свои операции в это время производит другой клиент, и передачи результата выполнения операций средству работы с клиентом 225 для дальнейшей обработки.

Средство работы с политиками безопасности 224 предназначено для запроса у системы политик безопасности 230 на произведение клиентом 110 операций над ресурсом 160 (например, разрешено ли приложению archiver.exe, запущенному от имени пользователя ordinary_user, произвести чтение файла degree_work.docx, запись данных в файл stuff.arc, или, например, разрешено ли службе monitor.srv, запущенной от имени пользователя admin, произвести чтение 100 кБ данных из памяти, находящихся по адресу 0x20000000-0x20019000), вынесения решения о допустимости произведения таких операций и передачи результата выполнения операций средству работы с клиентом 225 для дальнейшей обработки.

Средство работы с клиентом 225 предназначено для получения от ядра операционной системы 120 запроса на выполнение операций клиента 110 над ресурсом 160, подготовки и передачи данных последовательно средству работы с политиками безопасности 224, средству проверки доступности ресурса 223, средству проверки метаданных ресурса 222 и на заключительном этапе средству работы с данными ресурса 221 для их обработки, приема результатов от указанных выше средств ресурсного менеджера, формирования и передачи результатов ядру операционной системы 120. Порядок общения средства работы с клиентом 225 с другими средствами ресурсного менеджера 140, за исключением средства работы с данными ресурса 221 (поскольку операции над ресурсом выполняются именно им), может меняться в зависимости от типа ресурса, реализации и т.д. с целью увеличения безопасности ресурсного менеджера, скорости выполнения операций и т.п. (например, иногда проверка политик безопасности может быть выполнена позже, чем проверка метаданных ресурса).

Ресурсный менеджер 140 получает запрос от ядра операционной системы 120 на произведение некоторых операций клиента 110 над ресурсом 160. Данный запрос поступает средству работы с клиентом 225.

Средство работы с клиентом 225 принимает запрос от ядра операционной системы 120, подготавливает полученные данные (например, разбивает сложный запрос на несколько простых) к последующей обработке другими средствами ресурсного менеджера 140, после чего осуществляет передачу дальше в соответствии со своей логикой работы и целями, поставленными перед данным средством. В одном из случаев реализации средство работы с клиентом 225 посылает запрос средству работы с политиками безопасности 224. В случае выдачи отказа средством работы с политиками безопасности 224 средство работы с клиентом 225 выдает ядру операционной системы 120 отказ на проведение требуемой операции, иначе -посылает запрос средству проверки доступности ресурса 223. В случае выдачи отказа средством проверки доступности ресурса 223 средство работы с клиентом 225 выдает ядру операционной системы 120 отказ на проведение требуемой операции, иначе - посылает запрос средству проверки метаданных ресурса 222. В случае выдачи отказа средством проверки метаданных ресурса 222 средство работы с клиентом 225 выдает ядру операционной системы 120 отказ на проведение требуемой операции, иначе - посылает запрос средству работы с данными ресурса 221 на проведение требуемой клиентом 110 операции. Результат выполнения операции над ресурсом средство работы с клиентом 225 выдает ядру операционной системы 120.

Средство работы с политиками безопасности 224 принимает запрос от средства работы с клиентом 225 на проведение анализа, удовлетворяет ли затребованная клиентом 110 операция над ресурсом 160 политике безопасности, запрашивает и получает от системы нужную политику безопасности 130, выносит решение о допустимости осуществления затребованной операции и передает полученный результат средству работы с клиентом 225.

Средство проверки доступности ресурса 223 принимает запрос от средства работы с клиентом 225 на проведение анализа о допустимости произведения, требуемых клиентом 110 операций над ресурсом 160 с теми условиями, чтобы данные операции не искажали данные из ресурса 110, с которыми свои операции в это же время производит другой клиент. Далее на основе информации о текущих операциях клиентов над ресурсом 160 выносит решение о допустимости такой операции и передает полученный вердикт средству работы с клиентом 225.

Для реализации проверки на допустимость операций над ресурсами формируется очередь клиентов, запросивших доступ к ресурсу. Каждому клиенту в очереди выставляется приоритет в зависимости от типа операции, времени, необходимого на выполнение операции, прав клиента, связей между клиентами, обратившимися к одному и тому же ресурсу, времени поступления запроса от клиента, текущего статуса ресурса и т.д. Чем выше приоритет, тем раньше клиент будет обработан (выполнена запрошенная клиентом операция или сформирован отказ). Некоторые операции могут быть выполнены одновременно для нескольких клиентов (например, оба клиента считывают данные), остальные будут выполнены только последовательно (например, операция записи от одного клиента произойдет только после операции чтения от второго клиента)

Например, к ресурсу, представляющему собой файл размером 10 МБ, одновременно обратилось два клиента - один с целью считать весь файл целиком в память, другой с целью дописать блок в 10 кБ к концу файла. Средство проверки доступности ресурса 223 провело оценку состояния ресурса (ресурс оказался свободен), после чего оба клиента были поставлены в очередь на выполнение требуемых операций. Поскольку операция записи небольшого блока будет выполнена гораздо быстрее, чем операция считывания всего файла, то второй клиент получил более высокий приоритет, чем первый клиент. После чего, согласно расписанию, были выполнены операции клиента #2 (0,02 секунды) и клиента #1 (0,35 секунды). Тем самым общая задержка для обоих клиентов составила не более 0,02 секунды.

Средство проверки метаданных ресурса 222 принимает запрос от средства работы с клиентом 225 на проведение анализа о допустимости произведения, требуемых клиентом 110 операций с ресурсом 160 с теми условиями, чтобы изменения не противоречили метаданным ресурса. После чего получает от ресурса 110 метаданные ресурса 211 и производит требуемый анализ. Полученный результат средство проверки границ ресурса 122 передает средству работы с клиентом 225.

Например, при запросе клиента осуществить операцию записи 100 кБ данных по адресу 0x4000 в ресурс, представляющий собой массив, средство проверки метаданных ресурса 222 получает от ресурса 110 метаданные 211, представляющие собой адреса границ расположения массива в памяти 0x20000000-0x20010000. Производится проверка, не будут ли данные после записи располагаться за границами указанного диапазона:

START_ADDRESS=0x20000000+0x4000

FINISH_ADDRESS=START_ADDRESS+0x19000=2001D000>0x20010000

Проверка установила, что в случае произведения записи, данные будут размещены за пределами отведенного диапазона адресов ресурса. В итоге ресурсному менеджеру будет передан отказ на проведение требуемой операции.

Средство работы с данными ресурса 221 принимает запрос от средства работы с клиентом 225 на произведение операций над содержимым ресурса 212, производит требуе