Защита с файла на работната група mdw

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

Когато инсталирате защита, първото нещо, което трябва да се запитате, е: какво и от кого ще защитавате? Въпросът е, че опитите за създаване на „непроницаема“ отбрана определено са обречени на провал. Освен това страховете от желанието на някого да „хакне“ вашата база често са силно преувеличени. Обикновено, когато разработват проекти, които изискват повишено ниво на надеждност и сигурност, те не използват Access, а други хранилища за данни, които са по-подходящи за такъв случай - например SQL Server. За всички останали случаи стандартната защита на Access с помощта на файл на работна група е добре.

Работна група в Access е група потребители, работещи с база данни.

Файлът на работната група записва потребителските и груповите акаунти на работната група. Потребителските пароли също се съхраняват във файла на работната група. Сметките в работна група могат да получат права за достъп до базата данни и нейните обекти (таблици, заявки, формуляри, отчети и макроси). Правата на достъп се съхраняват в защитена база данни.

Когато потребител стартира Microsoft Access за първи път след инсталиране на Microsoft Office, Access автоматично създава файл на работна група, който се идентифицира с посоченото от потребителя име и име на организация. Относителното местоположение на файла на работната група се записва в следните настройки на системния регистър:

Можете също да видите къде се намира стандартният файл на работната група Услуга - Сигурност - Администратор на работна група - Комуникация - Общ преглед - тук виждаме System.mdw. За да сте сигурни, че Access го създава при стартиране (ако не съществува), може да бъде много просто - изтрийте го и затворете Access. Отворете Access отново и създайте нова празна основа. Сега погледнете Service - Protection - ... System.mdw се появи отново.

Това е всъщност стандартната система за защита на достъпа винаги е включена. Преди потребителят да активира процедурата за свързване на работна група, Access проверява съществуването на файл на работна група при първо стартиране или при създаване на нова база данни и ако тя не съществува, тя я създава и автоматично свързва всички потребители с нея, използвайки вградената -в “Admin” потребителски акаунт с празна парола. Прозорецът за въвеждане на потребителско име и парола не се показва и следователно изглежда, че базата данни не е „защитена“ от нищо. Това е вярно в смисъл, че вратата не е заключена, а само затворена - всеки може да я отвори.

Можете сами да създадете свой собствен mdw. За да направите това, щракнете върху Услуга - Защита - Администратор на работна група - Създаване. Ще се отвори диалогов прозорец Информация за собственика на екипа. В полетата Име и Организация въведете името на екипа и, ако искате, организацията В полето Групов код въведете уникален буквено-цифров идентификатор на група. Този идентификатор може да бъде с дължина до 20 знака. Препоръчва се да се използва набор от знаци, който е по-трудно да се отгатне като идентификатор на защитата, за да се осигури по-голяма сигурност за работната група.

Щракнете върху бутона Добре. Появява се диалогов прозорец, който ви позволява да посочите име за новия файл на работната група. Въведете пълното име на файла с разширение mdw или щракнете върху бутона Общ преглед, за да изберете папката, в която ще бъде запазен новият файл, и да посочите името на файла. Ако не посочите име на файл, Access ще го измисли сам - това разбира се System1.mdw. Щракнете върху бутона Добре. Ще се появи диалогов прозорец, който ви позволява да проверите въведената информация. Щракнете Добре. Създаденият mdw се свързва автоматично с Access, тоест сега през него ще се стартират всички бази данни на тази машина.

"C: \ Program Files \ Microsoft Office \ Office10 \ MSACCESS.EXE" "Пълен път до защитената база данни"/WRKGRP "Пълен път до файла на работната група - mdw"

Тук се извършва последователното изпълнение на команди: първо се стартира СУБД на Access - MSACCESS.EXE (за Office 2003 трябва да замените Office10 с Office11), след което базата данни се стартира с пътя към съответния файл на потребителска работна група . Ако първата и последната команди са пропуснати, тогава mdw по подразбиране е свързан към базата данни.

Преди да започнете да защитавате базата данни с помощта на файла на работната група, трябва да решите: ще защитим ли двете части на приложението (файла с данни и обектния файл) или само файла с данни? Има смисъл да защитите интерфейса, ако искате да ограничите достъпа на потребителите до макроси и заявки (забранете редактирането им). Не говорим за формуляри и отчети, защото от само себе си се разбира, че базата данни ще бъде представена на потребителя във формат mde. Ако това не е проблем, например всички заявки се регистрират в свойствата на формуляри и отчети, тогава ще бъде достатъчно да инсталирате защита само от страна на сървъра. В този случай базата данни ще бъде по-лесна за администриране.

За инсталиране на защита се използва специален съветник. Отворете файла с данни - Server.mdb. След това Услуга - Защита - Учител. Ще се отвори диалогов прозорец, където първата стъпка е да изберете: създайте или променете текущия файл на работната група. Трябва да "създадем". Щракнете по-нататък. В прозореца, който се отваря, в полето "Име на файл" пътят до файла на работната група се записва автоматично - по подразбиране, в същата директория като Server.mdb. Нека обърнем внимание на полето „Код на работната група“. Това е уникален идентификатор на група от произволно набрана буквено-цифрова комбинация.

Определено трябва да се спаси!

Факт е, че ако файлът на работните групи бъде изгубен или повреден, достъпът до базата данни няма да бъде възможен (няма да кажа нищо за хакерските методи). В края на всички процедури съветникът ще ви предложи да създадете отчет за свършената работа - там, наред с други неща, ще бъде и този код. Ще оставим и квадратчето за отметка „създаване на пряк път за защитената база данни“. В предишната част на статията се говори за този пряк път. Ставаше въпрос за стартиране на базата данни през нея, а не за свързване на създадения mdw с всички проекти на Access. Тъй като капитанът се захвана за работа, нека направи пряк път. Щракнете по-нататък.

Следващият раздел ви подканва да изберете обектите, които трябва да бъдат защитени. В повечето случаи, ако наистина поставите защита, така че за всичко, което всъщност е направено по подразбиране. Така че просто кликнете върху.

Сега съветникът предлага да създаде работни групи и правата за достъп за тях вече са предварително зададени. Можете да изберете някой от тях, или можете да шофирате по-нататък. Лично аз винаги си създавам група, но както се казва, това е въпрос на вкус. Щракнете по-нататък.

Този раздел подканва групата потребители да присвои ограничени права. Въпросът тук е, че, както беше споменато в първата част на статията, всички бази данни на Access всъщност вече са свързани със стандартния файл на работната група, просто всички потребители (групата потребители) имат пълни права, като администратор. И при „настройка на защитата“ се създава нов групов файл или се променя стандартният. По принцип всеки групов файл винаги ще съдържа поне две групи: Администратори и Потребители. Това е разбираемо: във всяка система за сигурност „входящият“ в най-простия случай трябва да бъде идентифициран като обикновен потребител или администратор. Няма как да премахнем тези две понятия, иначе защитата губи смисъла си - как да разберете кой е дошъл? Въпреки че начинаещите разработчици понякога се опитват да изтрият "потребители", но те не се изтриват ...

Забележете, съветникът предупреждава да не дава ненужно права на „потребители“, тъй като тъй като има такава група във ВСИЧКИ групи, след което присвоявайки права на нея, вие автоматично присвоявате тези права по подразбиране за всички mdw файлове. Просто казано, ако дадете на потребителите пълни права, а след това, за да заобиколите защитата, просто трябва да създадете нов mdw файл и да влезете под потребителското име на групата потребители. Следователно, най-често се предава и този раздел.

Сега трябва да създадем свои собствени администратори и потребители. По подразбиране там вече има администратор - можете да го замените със свой, ако не му вярвате. За да направите това, изберете „Добавяне на потребител“ в списъка вляво, дайте му име (например Pupkin), парола и кликнете върху „Добавяне на потребител в списъка“. Сега можете да се отървете от стария администратор - изберете го и натиснете "Премахване на потребител от списъка". Сега нашият Pupkin автоматично стана администратор (защото така или иначе няма други). За да проверите това, отидете на следващия раздел и вижте дали нашият човек присъства в групата Admins. Щракнете по-нататък.

Сега остава само да се уточни къде да се запази резервното копие на незащитената база данни. Това е в случай, че изведнъж промените решението си и решите да върнете всичко „както беше“. Access създава копие на базата данни, само променя нейното разширение на .bak. Явно за да не се досети никой, че това не е сигурна база. Щракнете върху готов.

Базата е шифрована и се появява отчет за свършената работа. Позволете ми да ви напомня още веднъж, че тя трябва да бъде запазена. Ако внезапно файлът на mdw групи отива някъде или се счупи, за да влезете в базата данни, ще трябва да я създадете наново, като при създаването й посочите стария си код на работна група - изтрийте този, предложен от съветника, и сложете своя. Резултатът е следният:

  1. Има нов файл на работната група - Security.mdw (в Access 2002 по подразбиране се нарича Secured.mdw)
  2. Всички обекти на базата Server.mdb (таблици) бяха „зашити“ чрез файла на работната група
  3. Появи се копие на базата данни - Server.bak
  4. На работния плот се появи пряк път за свързване с базата данни - Server.lnk

И така, основата е защита, но от всички потребители има само администратора Pupkin. Така че ние ще създадем потребители и групи. Стартирайте базата чрез пряк път и щракнете върху Услуга - Защита - Потребители и групи. На първия раздел създаваме потребители, на втория - потребителски групи. С това мисля, че няма да има проблеми: натискаме „Създаване“ и след това върху диалога. Ще отбележа само, че е по-добре имената да се дават като числа. Факт е, че както знаете, има съименници, но няма еднакви номера.

Ако има много потребители, тогава има смисъл да се създадат групи, които да ги обединят. Всяка група може да има няколко потребители. Правата за достъп до групата автоматично се присвояват на членовете на групата. Това опростява администрирането на базата данни. Отидете на втория раздел и създайте групите, от които се нуждаем. След това се връщаме към първия. Тук виждаме, че в списъка с групи, освен стандартните администратори и потребители, се появиха и нови. За да запишете нашите потребители в тях, изберете потребител от списъка, изберете група и щракнете върху Добавяне. Моля, обърнете внимание, че нашият администратор Pupkin трябва да присъства в групата на администраторите. В противен случай той няма да бъде администратор. Съответно това не се отнася за всички останали.

След като създадете потребители и ги разпределите в групи, остава да зададете парола за вход за тях - това се прави в последния раздел.

Потребителската парола може да бъде променена само от самия потребител, т.е. този, който ще влезе в програмата под негово име!

Сега е време да помислим за правата за достъп. За да направите това, трябва внимателно да прецените кой от потребителите да има достъп до какво. Тук има няколко решения.
За съжаление в Access не е възможно да се зададе достъп до полетата на таблицата, а само до цялата таблица. Следователно, в случая, когато различните потребители трябва да имат различен достъп до данните от една таблица, ще трябва да измамите. Например:

  1. "Нарежете" масата на части и ги свържете в съотношение един към един. Това е точно случаят, когато такава общо взето странна връзка има смисъл.
  2. Направете различни форми за различни потребители и ги стартирайте по различен начин за всеки. За да разберете кой кой е, можете да използвате проста процедура:

IF CurrentUser = "1" Тогава ...

Но тази опция не дава достъп до данни чрез формуляри, но нищо не пречи на потребителя да "влезе" директно в Server.mdb.

Само администратор (администратор) - член на администраторската група може да промени нивото на достъп!

Тоест, за да промените нивото на достъп за потребителите, трябва да влезете в сървърната част на програмата под името на администратора (в нашия случай „Pupkin“). След това изберете: Услуга - Защита - Разрешения. Можете да зададете достъп за група или за всеки потребител поотделно. В случай на групи, когато създавате нов потребител, за да му присвоите права за достъп, е достатъчно да го поставите в съответната група. Затова ще зададем достъп за групи.

За да направите това, в раздела „Разрешения“ превключете на „групи“ и изберете необходимата група в списъка „Потребители и групи“. В списъчното поле "Тип обект" изберете необходимия тип обект на базата данни. Изберете обекта от списъка "Име на обект" и задайте нивото на достъп до обекта в списъка "Разрешения".

Не експериментирайте с права за достъп на администратор (администратор) - в противен случай вие като администратор можете да затворите базата данни от себе си!

Както вече споменахме, цялата информация за защитата на базата данни се съхранява в криптиран вид във файла на работните групи - Security.mdw. Преди каквото и да е действие за промяна на нивото на достъп или промяна на пароли, се препоръчва да направите резервно копие на този файл и да го съхраните на безопасно място на външен носител. По този начин ще бъде възможно да се върнат промените, като се свърже запазеното копие към базата данни Сигурност.mdw.

Ако файлът Security.mdw на работните групи бъде изгубен или повреден, достъпът до базата данни ще стане невъзможен!

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

  1. дата на създаване - дата и час, когато записът е създаден.
  2. Дата на промяна - дата и час, когато записът е променен.
  3. Променено - името на потребителя, който е променил записа.

Записването се извършва чрез прихващане на събитието от формуляра „Промени“

Частен подформуляр_Мръсен (Отказ като цяло)
[DateChange] = Дата + Час
[Променено] = CurrentUser
Крайна под