Способ обеспечения доступа к данным в системе управления базами данных "линтер-вс"
Реферат
Изобретение относится к вычислительной технике. Использование его при создании и совершенствовании систем управления данных (СУБД) позволяет повысить защищенность данных, хранящихся в БД, от возможности несанкционированного доступа к ним. Способ заключается в том, что запоминают заранее присвоенные каждому пользователю базы данных сигнал индивидуального идентификатора и сигнал ранга допуска к БД, направляют сигнал запроса с его ицентификатором и описаниями запрашиваемых данных в ядро СУБД, считывают ранг допуска пользователя по его идентификатору, содержащемуся в запросе, считывают в ядро СУБД по содержащимся в запросе описаниям запрашиваемых данных из БД сигналы, соответствующие сигналам меток этих данных, характеризующим уровня доступа к разделам и по подразделам, к данным, а также к действиям, которые пользователям можно совершать над этими данными, и сравнивают их с рангом допуска пользователя, и в случае, если ранг допуска пользователя не ниже уровня доступа к разделу БД, содержащему запрашиваемые данные, открывают канал связи с БД. Технический результат достигается благодаря тому, что сравнение ранга допуска пользователя с соответствующими уровнями доступа проводят несколько раз в процессе обработки поступившего запроса. При этом формируют сигналы ссылок на запрошенные данные на основании их описаний в запросе, производят разделение сигнала запроса на отдельные действия, при выполнении которых осуществляют их регистрацию в ядре СУБД, ответ на запрос формируют в ядре СУБД с использованием результатов выполнения действий над ссылками на запрошенные данные, затем данные считывают в ядро СУБД, а оттуда - к пользователю. 7 з.п. ф-лы.
Настоящее изобретение относится к вычислительной технике и может быть использовано при создании и совершенствовании систем управления базами данных (СУБД).
Базы данных в настоящее время являются основным средством для хранения самых разнообразных сведений. Данные хранятся в базе данных (БД) вместе со служебной информацией, которая позволяет организовать эти данные по определенным правилам. Например, служебная информация может указывать определенный уровень доступа к данным, запрещающий обращение к этим данным пользователей, не имеющих на это соответствующих полномочий (несанкционированных пользователей). Базы данных, как правило, хранятся в устройствах долговременной памяти, таких как жесткие диски. Для того чтобы пользователи могли обращаться к БД, служит система управления базами данных (СУБД). Она, как правило, реализуется на базе компьютера, например персонального компьютера. СУБД представляет собой хранящийся в памяти компьютера комплекс программ, позволяющих оперировать с данными из БД (которая для этого компьютера может быть внешним устройством). В СУБД выделяют так называемое ядро СУБД, т.е. ту ее часть, которая постоянно хранится в некоторой области основной памяти компьютера и осуществляет функции управления всей СУБД. При использовании СУБД одной из основных задач является обеспечение доступа к данным в БД, обслуживаемой этой СУБД. Под доступом в общем случае понимается процедура установления связи с БД и размещенными в ней областями для записи или считывания данных. При этом необходимо предусмотреть возможность для санкционированного пользователя беспрепятственно получать те данные, на которые у него есть допуск, и запретить несанкционированному пользователю получать закрытые для него данные. В настоящее время известны различные системы доступа к данным. Из международной заявки WO 97/05551 (МПК G 06 F 13/14, 1997) известен способ обеспечения доступа к данным в системе управления базой данных, в котором процессор системы хранит набор командных примитивов, вызываемых для выполнения только после того, как соответствующие вводимые команды пройдут проверки на правильность и аутентичность. Этих проверок недостаточно для обеспечения надежной защиты базы данных от доступа в нее посторонних (несанкционированных) лиц. В другом способе обеспечения доступа к данным в системе управления базой данных, известном из выложенной заявки Японии N 05-094389 (МПК G 06 F 13/00, 1993), пользователям базой данных присваиваются пароли и права доступа, которые заносятся в соответствующую таблицу, хранящуюся в постоянной памяти системы. При обращении какого-либо пользователя производится сравнение вводимого им пароля с табличным и определение соответствующего права доступа данного пользователя к той или иной информации в базе данных. Этой проверки, однако, недостаточно, чтобы надежно защитить данные от доступа к ним несанкционированных лиц. Наиболее близким к заявленному является способ обеспечения доступа к данным в системе управления базами данных (СУБД), заключающийся в том, что запоминают заранее присвоенные каждому пользователю базы данных сигнал индивидуального идентификатора и сигнал ранга допуска базе данных, формируют сигнал запроса пользователя, содержащий сигнал индивидуального идентификатора пользователя и сигналы описания запрашиваемых данных, передают сформированный сигнал запроса в ядро системы управления базами данных, считывают сигнал ранга допуска к базе данных по сигналу индивидуального идентификатора, считывают из базы данных в ядро системы управления базами данных по содержащимся в сигнале запроса пользователя сигналам описаний запрашиваемых данных сигналы, соответствующие сигналам меток этих данных, характеризующим сигналы уровня доступа к разделам, подразделам базы данных, к данным, а также к действиям, которые пользователь может совершать над ними, сравнивают сигналы уровня доступа с сигналом ранга допуска к базе данных, в случае, если сигнал ранга допуска к базе данных не ниже сигнала уровня доступа к разделу базы данных, содержащему запрашиваемые данные, разрешают выдачу сигналов данных по каналу связи из базы данных (заявка Великобритании N 2242295, МПК G 06 F 12/14, 1991). Хотя этот способ и надежнее вышеупомянутых, все же обеспечиваемая им надежность предотвращения доступа к базе данных со стороны несанкционированных лиц невысока. Это объясняется как небольшим числом проверок прав пользователя получать данные и совершать над ними какие-либо действия, так и тем, что после положительного завершения всех проверок данные выдаются пользователю в полном объеме соответственно его запросу. Кроме того, при несоответствии сигнала ранга допуска к базе данных сигналу уровня доступа к запрашиваемым данным пользователь извещается об этом, тем самым косвенно получая информацию по меньшей мере о существовании недоступных ему данных. Поэтому техническим результатом, получаемым в данном изобретении, является создание способа обеспечения доступа к данным в системе управления базами данных, который не только был бы свободен от указанных выше недостатков, присущих существующим способам доступа к данным, но и имел бы дополнительную ступень защиты данных на этапе их обработки. Для достижения такого технического результата предлагается способ обеспечения доступа к данным в системе управления базами данных (СУБД), заключающийся в том, что запоминают заранее присвоенные каждому пользователю базы данных сигнал индивидуального идентификатора и сигнал ранга допуска к базе данных, формируют сигнал запроса пользователя, содержащий сигнал индивидуального идентификатора этого пользователя и сигнал описания запрашиваемых данных, передают сформированный сигнал запроса в ядро системы управления базами данных, считывают сигнал ранга допуска к базе данных по его сигналу индивидуального идентификатора, содержащемуся в сигнале запроса пользователя, считывают из базы данных в ядро системы управления базами данных по содержащимся в сигнале запроса сигналам описания запрашиваемых данных сигналы, соответствующие меткам этих данных, характеризующим сигналы уровня доступа к разделам и подразделам базы данных, к данным, а также к действиям, которые пользователь может совершать над этими данными, и сравнивают их с сигналом ранга допуска к базе данных и в случае, если сигнал ранга допуска к базе данных не ниже сигнала уровня доступа к разделу базы данных, содержащему запрашиваемые данные, разрешают выдачу сигналов данных по каналу связи из базы данных, согласно настоящему изобретению, в отличие от существующих подобных способов, после получения сигнала запроса в ядре системы управления базами данных формируют сигналы ссылок на запрошенные данные в соответствии с их описаниями в сигнале запроса пользователя, в ядре системы управления базами данных разделяют сформированный сигнал запроса на отдельные действия или группы действий, предназначенные для выполнения над запрашиваемыми данными, сравнивают сигналы доступа для этих действий или групп действий и сигналы доступа к подразделам базы данных с сигналом ранга допуска к базе данных, если сигнал ранга допуска к базе данных не ниже сигнала уровня доступа для выполнения действий или группы действий и не ниже сигнала уровня доступа к соответствующим подразделам базы данных выполняют действия или группы действий в ядре системы управления базами данных над сигналами ссылок на запрашиваемые данные, регистрируют выполняемые действия или группы действий в ядре системы управления базами данных, формируют сигнал ответа на запрос пользователя в ядре системы управления базами данных по результатам выполнения действий или групп действий над сигналами ссылок на запрашиваемые данные, сравнивают сигналы доступа к данным, сигналы ссылок на которые содержатся в сформированном сигнале ответа, с сигналом ранга допуска к базе данных, если сигнал ранга допуска к базе данных не ниже сигнала уровня доступа к соответствующим данным, считывают в ядро системы управления базами данных из базы данных по открытому каналу связи сигналы запрашиваемых данных согласно сигналам ссылок на эти данные, содержащимся в сигнале ответа на запрос пользователя, сравнивают сигналы доступа к данным, считанным из базы данных, с сигналом ранга допуска к базе данных, если сигнал ранга допуска к базе данных не ниже сигнала уровня доступа к данным, передают считанные данные из ядра системы управления базами данных к пользователю, при несоответствии сигнала ранга допуска к базе данных в какой-либо проверке сигналу уровня доступа и/или при обнаружении несанкционированных действий стирают из ядра системы управления базами данных результаты всех операций, предшествующих появлению этого несоответствия, и прекращают обработку запроса. При необходимости в рассматриваемом способе, в случае сигнала запроса в виде текстового запроса, после открытия канала связи с базой данных передают текст этого запроса в транслятор SQL, где проверяют правильность синтаксиса этого запроса, осуществляют по меньшей мере частичную оптимизацию запроса, переводят оптимизированный текст запроса в формат, воспринимаемый ядром системы управления базами данных, передают запрос в ядро системы управления базами данных, после чего разделяют запрос на отдельные действия или группы действий. Кроме того, после разделения сформированного запроса на отдельные действия или группы действий осуществляют сравнение сигнала ранга допуска с сигналами уровней доступа к действиям или группам действий, если сигнал ранга допуска не ниже сигналов уровня доступа к действиям или группам действий, выполняют сами эти действия лишь над частью действий, полученных при разделении сигнала запроса, а после регистрации выполненных действий или групп действий в ядре системы управления базами данных цикл повторяют для очередной части действий или групп действий. Особенностью предлагаемого способа является и то, что при выполнении соответствующих действий или групп действий над ссылками на запрашиваемые данные могут осуществлять сортировку результатов этих действий по заранее заданным критериям. В рассматриваемом способе сигнал индивидуального идентификатора включает в себя регистрационное имя пользователя и его подтверждающий пароль, а при формировании сигнала запроса пользователя в многотерминальной сети добавляют текущее время запроса и указание конкретного узла сети, с которого производится запрос. В рассматриваемом способе также сигнал ранга допуска к базе данных задают совокупностью чисел, характеризующих способность пользователя обращаться ко всей базе данных, к ее разделам и подразделам, к конкретным данным на разных этапах прохождения запроса в системе управления базами данных, а также выполнять над данными те или иные действия. Наконец, в предлагаемом способе в случае, когда указанные в сигнале запроса действия требуют обработки данных, в процессе выполнения этих действий сравнивают сигналы уровня доступа к этим данным с сигналом ранга допуска к базе данных, если сигнал ранга допуска пользователя не ниже сигнала уровня доступа к этим данным, выполняют соответствующие действия или группы действий над ссылками на запрашиваемые данные, если сигнал ранга доступа к базе данных ниже сигнала уровня доступа к данным, требуемым для выполнения этих действий, эти данные исключают из дальнейшей обработки без извещения пользователя об этом исключении. Из существующего уровня техники не выявлены объекты, которые содержали бы всю совокупность основных существенных признаков рассматриваемого способа, что позволяет считать его новым. Из существующего уровня техники не выявлены также объекты, которые содержали бы совокупность отличительных признаков рассматриваемого способа. Это позволяет считать его имеющим изобретательский уровень. Как правило, совокупность различных данных, предназначенных для дальнейшего хранения и использования, организуется по определенным правилам в базы данных (БД). В частности, размещаемые в БД группы данных обязательно получают индивидуальное имя, которое указывается в направляемом в базу данных запросе. При этом данные, занесенные в БД, могут принадлежать разным пользователям, которые могут быть озабочены тем, чтобы их информация в БД была недоступна для других пользователей. Под пользователем в данном случае понимается не только конкретный создатель или потребитель данных, но и системный пользователь, т. е. "хозяин" БД, предоставляющий ее конкретным пользователям, который по разным причинам может быть заинтересован в том, чтобы ограничить доступ некоторых пользователей или категорий (групп) пользователей к тем или иным данным или группам данных. Например, системный пользователь БД, участвующий в финансовых транзакциях, должен следить, чтобы индивидуальные пользователи не могли считывать, а тем более изменять информацию о финансовых операциях других пользователей, которыми могут быть как физические лица, так и банки. С другой стороны, в некоторых случаях может быть необходимо, чтобы какая-то информация физических лиц была доступна банкам, например информация о кредитоспособности пользователя. Поэтому все данные в БД должны иметь специальные указатели, содержащие информацию о том, кто может, а кто не может пользоваться данной информацией. То же и в отношении пользователей: о каждом из них должно быть известно, какие данные ему доступны и какие действия над ними он может совершать. Все обращения пользователей к БД осуществляются через соответствующую систему управления базами данных (СУБД). В эту систему могут входить либо аппаратурные средства, которые однозначно следуют из последовательности действий способа по изобретению, либо соответствующее программное обеспечение, постоянно хранящееся в основной памяти компьютерной системы и обеспечивающее создание, ведение и использование БД. Сюда же относятся соответствующие языковые средства, с помощью которых и осуществляется работа системы управления базами данных (СУБД). Подобно всякой операционной системе, СУБД имеет свое ядро, т.е. ту ее часть, которая постоянно находится в оперативной памяти компьютерной системы и управляет всеми процессами СУБД. Здесь следует специально подчеркнуть, что хотя любая СУБД и является программным продуктом, она может работать только с соответствующим аппаратным и программным обеспечением и, кроме того, в процессе своей работы СУБД может активно воздействовать как на свое аппаратное обеспечение, так и на его периферийное оборудование. Это связано с тем, что для хранения информации в БД могут быть предусмотрены одно или несколько внешних запоминающих устройств, к которым и должна обращаться СУБД при нахождении данных, указанных в сигнале запроса пользователя или пересылке обработанной информации обратно в БД. Кроме того, СУБД может выполнять отдельные виды обработки данных, например сортировку /по желанию пользователя/, еще до передачи этих данных в процессорную систему для последующей обработки. Поэтому СУБД должна рассматриваться только в совокупности с тем аппаратным обеспечением, на котором она реализуется и без которого ее реализация невозможна. Таким аппаратным обеспечением может быть, например, персональный компьютер, специальный сервер и т.п., имеющий достаточный объем памяти для размещения СУБД и процессорное средство для обеспечения ее работы. Кроме того, это аппаратное обеспечение должно иметь порты для подключения каналов связи к базе данных, если эта база данных не размещена в постоянной памяти самого компьютерного средства. Если же база данных организована в том же аппаратном обеспечении, что и СУБД, каналами связи будут внутренние шины, соединяющие процессорное средство и оперативную память компьютерного средства с его постоянной памятью. В изобретении каждый новый клиент базы данных (человек или организация), желающий пользоваться ею, должен приобрести статус пользователя. Создание пользователя осуществляется администратором системы (системным пользователем) и представляет собой процесс присвоения сигнала индивидуального идентификатора этому пользователю (далее идентификатор пользователя ). Идентификатор пользователя включает в себя регистрационное имя пользователя и его подтверждающий пароль, введением которого пользователь подтверждает свою аутентичность, т. е. право обращения к БД. Этим идентификатором помечается любой сигнал запроса данного пользователя к БД. Кроме того, в случае работы в многотерминальной сети, к этому идентификатору при запросе может добавляться время получения сигнала запроса сетевым сервером и указание конкретного узла сети, с которого производится этот запрос. Эти действия осуществляются так же, как и в других известных аналогичных способах. Однако нижеследующие действия согласно настоящему изобретению отличают его от известных аналогичных способов. Администратор системы ставит в соответствие идентификатору пользователя сигнал ранга допуска к базе данных (далее ранг допуска) этого пользователя, т.е. его допуск данным в БД, к отдельным разделам или подразделам этой БД, и сигнал уровня доверия данного пользователя, показывающий, какие действия имеет право выполнять именно этот пользователь над данными из БД. Пользователь, имеющий конкретный ранг допуска, имеет право обращаться к данным любых пользователей, ранг допуска которых не выше его собственного, а следовательно, как имеющий конкретный уровень доверия, имеет право помечать любые данные уровнем не ниже своего уровня. Этот ранг допуска и этот уровень доверия вместе с идентификатором пользователя, т.е. его регистрационным именем и паролем, записываются в заранее заданной области постоянной памяти СУБД, например в таблице пользователя, к которой обращается СУБД в процессе обработки запроса. В принципе, указанные сведения могут записываться и в оперативной памяти СУБД при условии, что она имеет достаточный для этого объем, либо эти данные могут храниться в отдельном запоминающем устройстве, внешнем по отношению к компьютерной системе, в которой реализована СУБД. Когда пользователь базы данных заносит в нее (размещает в ней) какие-то новые или прошедшие обработку данные, СУБД (по заранее заданным критериям или под управлением системного пользователя) добавляет к каждому элементу этих данных сигналы меток, соответствующие уровню доступа к этому элементу данных и уровню доверия (т.е. в данном случае к уровню доступа к действиям над этими данными). Эти сигналы меток, являющиеся служебной информацией, хранящиеся вместе с данными, которым они присвоены, показывают, какой ранг допуска должен иметь пользователь, желающий получить эти данные из БД, и какого рода действия доверяется совершать этому пользователю с этими данными. Следует отметить, что сигналами меток снабжены не только отдельные группы данных, но также подразделы и разделы БД, с помощью которых эта БД структурируется и которые содержат данные одного класса, например данные, относящиеся к однотипным задачам и т.п. При обращении к БД пользователь формирует сигнал запроса. Сигнал запроса, записанный на соответствующем носителе данных, например на дискете, вводится в СУБД. При этом пользователь осуществляет свою идентификацию и аутентификацию, т. е. вводит с помощью специального устройства ввода (например, клавиатура либо устройство считывания идентификационной карты) идентификатор пользователя, например, свой персональный идентификационный номер (ПИН) и пароль. СУБД ассоциирует с введенным сигналом запроса идентификатор пользователя и формирует сигналы ссылок на конкретные данные, хранящиеся в БД, согласно сведениям об этих данных, имеющимся в сигнале запроса. В сигнале запроса также указываются те действия, которые пользователь собирается совершить над запрашиваемыми данными. Этими действиями могут быть, например, или считывание, или изменение, или модификация данных, размещенных в БД. Введенный сигнал запроса передается в оперативную память ядра СУБД, т.е. той части системы управления базами данных, которая постоянно находится в основной памяти компьютера. Если, однако, СУБД реализована в компьютерной системе, в которой обработка сигналов запросов происходит в постоянной памяти этой системы, то запрос направляется именно в эту постоянную память. Ядро СУБД прежде всего находит, например, в таблице пользователя, по содержащемуся в поступившем сигнале запроса идентификатору пользователя такой же идентификатор и определяет по нему ранг допуска этого пользователя к БД. Далее ядро СУБД, обращаясь к БД, находит по содержащимся в поступившем запросе сигналам описания запрашиваемых данных сигналы меток этих данных. Эти сигналы меток характеризуют сигналы уровней доступа к соответствующим разделам и подразделам БД, где хранятся запрашиваемые данные, сигналы уровней доступа к самим этим данным и сигналы уровней доступа для действий, возможных для выполнения над этими данными. Все эти сигналы уровней доступа записываются в ядро СУБД, в его память на все время обработки поступившего запроса. Затем ядро СУБД производит сравнение ранга допуска пользователя, направившего запрос, с сигналом уровня доступа к тому разделу БД, где хранятся запрашиваемые данные. Если этот сигнал ранга допуска к базе данных по меньшей мере не ниже, чем сигнал уровня доступа к разделам с запрашиваемыми данными, ядро СУБД направляет соответствующую команду на управляемый вентиль, мультиплексор или иное средство, обеспечивающее открытие этого канала связи для считывания данных из БД. Тем самым создается возможность для последующей пересылки данных из БД в ядро СУБД. В некоторых случаях, когда запрос представлен в текстовом виде, может быть необходимо оттранслировать поступивший запрос. Для этого он направляется в транслятор SQL, который может быть выполнен аппаратно или реализован программно в том же самом компьютерном средстве, где размещена СУБД. Аббревиатура SQL обозначает широко известный усовершенствованный язык манипулирования данными, специально предназначенный для запросов в базах данных. Транслятор SQL проверяет поступивший запрос на соответствие синтаксису соответствующего языка программирования, осуществляет по меньшей мере частичную оптимизацию этого запроса, например, по синтаксису, по порядку обработки, и переводит оптимизированный текст запроса в формат, воспринимаемый ядром СУБД. Если необходимости в трансляции запроса нет, он минует эту стадию и сразу поступает на разделение, как описано ниже. Далее ядро СУБД производит разделение сформированного сигнала запроса на отдельные действия или группы действий. Этими действиями могут быть, например, наложение некоторого условия на ту или иную таблицу данных или слияние двух таблиц, т. е. действия, которые не оказывают прямого влияния на сами данные. После этого ядро СУБД, обращаясь, например, к таблице пользователя, проверяет по идентификатору пользователя, может ли обратившийся с запросом к БД пользователь выполнять каждое конкретное действие, полученное в результате разделения поступившего запроса. Эта проверка связана с тем, что, как уже отмечено выше, помимо доступа к запрашиваемым данным пользователь должен еще иметь разрешение на совершение тех или иных действий над этими данными. Эта проверка осуществляется сравнением ранга допуска пользователя с уровнем доступа к тем действиям и над теми данными, которые указаны в запросе этого пользователя. Если ядро СУБД определяет возможность для обратившегося с запросом пользователя совершать требуемые в сигнале запроса действия над запрашиваемыми данными, начинается выполнение этих действий, но не над самими данными, а лишь над сигналами ссылок на эти данные. Например, пользователь запросил выдать ему все данные на всех Ивановых и на всех Петровых. В данном случае "Иванов" и "Петров" будут сигналами ссылок на соответствующие данные. Операцией же будет объединение данных со ссылками на Ивановых и со ссылками на Петровых. СУБД сравнивает ранг допуска этого пользователя с уровнями доступа к операции объединения и с уровнями доступа к данным, в которых содержатся ссылки на таблицы со сведениями об Ивановых и Петровых (по отдельности). Если пользователь имеет ранг допуска, достаточный для выполнения операции считывания данных со ссылками на Ивановых и на Петровых, СУБД осуществит объединение ссылок, т.е. построит таблицу, в которой будут объединены обе исходные таблицы, но в которой будут, однако, записаны именно сигналы ссылок, а отнюдь не сами данные об Ивановых и Петровых. При этом каждое выполняемое действие регистрируется, т.е. СУБД осуществляет запись сведений о выполненных действиях в соответствующих ячейках выделенной для этой цели области оперативной или постоянной памяти ядра СУБД. В процессе разделения сформированного сигнала запроса на отдельные действия или группы действий может иметь место случай, когда этих действий так много, что выполнить их все за один заход ядро СУБД будет невыгодно (например, при параллельной работе). Тогда ядро СУБД осуществляет вышеописанную проверку соответствия сигнала ранга допуска пользователя с сигналами уровней доступа к данным и к действиям и выполнение самих этих действий лишь над частью полученных при разделении сформированного сигнала запроса действий, а после регистрации выполнения этих действий (группы действий) переходит к таким же проверкам и выполнению очередной части действий, полученных в результате разделения сформированного сигнала запроса. Этот цикл повторяется до тех пор, пока не будут выполнены все действия, полученные в результате разделения поступившего запроса, к которым имеет допуск обратившийся с запросом пользователь. В процессе выполнения требуемых действий над сигналами ссылок на запрашиваемые данные ядро СУБД может осуществлять сортировку получаемых результатов. Критериями этой сортировки могут быть, например, возрастание или убывание группы полей в запрашиваемых данных. После выполнения всех требуемых действий (групп действий) над сигналами ссылок на запрашиваемые данные, полученными в результате разделения поступившего запроса, на основании результатов их выполнения ядро СУБД формирует в своей рабочей памяти сигнал ответа на поступивший сигнал запроса пользователя. Следует еще раз подчеркнуть, что этот сигнал ответа содержит результат действий над сигналами ссылок на запрашиваемые данные, например, объединенные исходные таблицы, в которых имелись данные на Ивановых и на Петровых, но в объединенной таблице эти сведения пока заменены сигналами ссылок на "Ивановых" и "Петровых". В том случае, если некоторые из данных, требуемые для выполнения того или иного действия, полученного в результате разделения сформированного сигнала запроса, имеют уровень доступа, превышающий ранг допуска к ним пользователя, эти данные исключаются из дальнейшей обработки запроса, причем пользователю об этом исключении ничего не сообщается. В приведенном выше примере это можно пояснить в предположении, что пользователь запросил выдать ему данные на всех Ивановых, на всех Петровых и на всех Сидоровых, а данные на Петровых как раз недоступны ему по его рангу. В этом случае в сформированном сигнале ответа будут объединены таблицы, содержащие сведения на Ивановых и на Сидоровых, а таблица со сведениями на Петровых не только не будет объединена с ними, но заявитель, получив впоследствии ответ, и не будет знать, есть ли в БД сведения на Петровых. После формирования сигнала ответа СУБД еще раз проверяет ранг допуска запрашивающего пользователя по идентификатору пользователя, сравнивает его, как и прежде, с уровнем доступа к тем данным, сигналы ссылок на которые занесены в сформированный сигнал ответа. Если сигнал ранга допуска к базе данных не ниже сигнала уровня доступа к запрашиваемым данным, ядро СУБД сразу пересылает считанные данные в соответствии с сигналами ссылок в сформированном сигнале ответа по открытому каналу связи из БД в свою рабочую память. После этого еще раз производится проверка ранга допуска пользователя, но уже по отношению к реальным данным в сформированном ответе, временно записанном в рабочей памяти ядра СУБД. Эта проверка осуществляется, как и все прежние, путем сравнения сигналов доступа этих данных с соответствующим сигналом ранга допуска пользователя, найденного по идентификатору пользователя. Если сигнал ранга допуска пользователя для этой проверки соответствует сигналу уровня доступа, временно записанных в рабочей памяти, или превышает этот уровень, ядро СУБД пересылает данные из своей рабочей памяти к запросившему их пользователю. Именно сравнение на всех этапах обработки запроса в СУБД согласно настоящему изобретению и обеспечивает надежную защиту БД от несанкционированного доступа к ней или к отдельным данным, хранящимся в этой БД. В том случае, если на каком-то этапе обработки поступившего запроса ядро СУБД обнаруживает, что определенный по идентификатору пользователя из таблицы пользователя ранг его допуска ниже уровня доступа к соответствующим данным или для выполнения действий над ними, ядро СУБД стирает в оперативной памяти зарегистрированные там ранее результаты всех операций, предшествующих появлению такого несоответствия ранга доступа пользователя уровню доступа к данным или к действиям над ними. То же самое происходит и в том случае, когда ядро СУБД обнаруживает какие-либо несанкционированные действия со стороны пользователя. При этом после стирания всех указанных результатов ядро СУБД прекращает обработку данного запроса, предотвращая тем самым возможность пользователю, не имеющему на это прав, нелегально обращаться к каким-либо данным в БД. Предложенный способ позволяет, таким образом, существенно повысить защищенность данных, хранящихся в БД, от возможности несанкционированного доступа к ним. Кроме того, в процессе обращения санкционированного пользователя запрашиваемые им данные подвергаются частичной обработке, что позволяет ускорить обработку этих данных в последующей системе обработки данных. В том случае, когда пользователь не имеет права доступа к части данных, охватываемых запросом, эти данные не только не будут выданы, но пользователю и не будет сообщено об их наличии в БД и утаивании от него. В качестве СУБД может быть использована СУБД "Линтер - ВС" . Приведенное подробное описание выполнения предложенного способа служит лишь для иллюстрации и подтверждения промышленной применимости данного способа, но никак не ограничивает его объем, определяемый нижеследующей формулой изобретения.Формула изобретения
1. Способ обеспечения доступа к данным, заключающийся в том, что запоминают заранее присвоенные каждому пользователю базы данных сигнал индивидуального идентификатора и сигнал ранга допуска к базе данных, формируют сигнал запроса пользователя, содержащий сигнал индивидуального идентификатора этого пользователя и сигналы описания запрашиваемых данных, передают сформированный сигнал запроса пользователя в ядро системы управления базами данных, считывают сигнал ранга допуска к базе данных по сигналу индивидуального идентификатора, считывают из базы данных в ядро системы управления базами данных по содержащимся в сигнале запроса пользователя сигналам описания запрашиваемых данных сигналы, соответствующие сигналам меток этих данных, характеризующим сигналы уровня доступа к разделам, подразделам базы данных, к данным, а также к действиям, которые пользователь может совершать над ними, сравнивают сигналы уровня доступа с сигналом ранга допуска к базе данных, в случае, если сигнал ранга допуска к базе данных не ниже сигнала уровня доступа к разделу базы данных, содержащему запрашиваемые данные, разрешают выдачу сигналов данных по каналу связи из базы данных, отличающийся тем, что после получения сигнала запроса пользователя в ядре системы управления базами данных формируют сигналы ссылок на запрашиваемые данные в соответствии с их описанием в сигнале запроса пользователя, в ядре системы управления базами данных разделяют сформированный сигнал запроса пользователя на отдельные действия или группы действий, предназначенные для выполнения над запрашиваемыми данными, сравнивают сигналы доступа для этих действий или групп действий и сигналы доступа к подразделам базы данных с сигналом ранга допуска к базе данных, если сигнал ранга допуска к базе данных не ниже сигнала уровня доступа для выполнения действий или групп действий и не ниже сигнала уровня доступа к соответствующим подразделам базы данных, выполняют действия или группы действий в ядре системы управления базами данных над сигналами ссылок на запрашиваемые данные, регистрируют выполняемые действия или группы действий в ядре системы управления базами данных, формируют сигнал ответа на запрос пользователя в ядре системы управления базами данных по результатам выполнения действий или групп действий над сигналами ссылок на запрашиваемые данные, сравнивают сигналы доступа к данным, сигналы ссылок на которые содержатся в сигнале ответа, с сигналом ранга допуска к базе данных и, если сигнал ранга допуска к базе данных не ниже сигнала уровня доступа к соответствующим данным, разрешают выдачу сигналов данных по каналу связи из базы данных, считывают в ядро системы управления базами данных из базы данных по открытому каналу связи сигналы запрашиваемых данных в соответствии с сигналами ссылок на эти данные, содержащимися в сигнале ответа, сравнивают сигналы меток доступа к данным, считанным из базы данных, с сигналом ранга допуска к базе данных, если сигнал ранга допуска к базе данных не ниже сигнала уровня доступа к данным, передают считанные данные из ядра системы управления базами данных к пользователю, при несоответствии сигнала ранга допуска к базе данных при каком-либо сравнении сигналу уровня доступа и/или при обнаружении несанкционированных действий стирают из ядра системы управления базами данных результаты всех операций, предшествующих появлению этого несоответствия, и прекращают обработку запроса пользователя. 2. Способ по п.1, отличающийся тем, что в случае сигнала запроса пользователя в текстовом виде, после открытия канала связи с базой данных передают текст запроса в транслятор, где проверяют правильность синтаксиса текста запроса, о