Методы доступа к сетевым БД
Администратор рабочей группы может ввести или пересмотреть практику защиты баз данных (БД) Microsoft Access на уровне рабочей группы. Этот подраздел посвящен методам доступа к БД Microsoft Access, дополняющим меры обеспечения безопасности на уровне ОС.
Microsoft Access поддерживает различные уровни и методы защиты файла:
• ограничение доступа пользователей, – изменяя параметры запуска, можно ограничить доступ к установленным (по умолчанию) меню и панелям инструментов, окну БД и специальным клавишам;
• защита открытия файла – установив пароль, можно контролировать открытие БД;
• защита исходного кода – сохранив БД в виде MDE-файла, можно удалить из нее исходный код Visual Basic и тем самым предотвратить изменение структуры форм, отчетов и модулей;
• шифрование баз данных – предотвращает несанкционированный просмотр объектов приложения с помощью текстовых редакторов и служебных программ. Шифрование можно применять в сочетании с другими методами защиты приложения;
• защита на уровне пользователей – наиболее мощный и гибкий метод защиты приложения. Однако, установка защиты этого типа достаточно сложна и может выйти за пределы потребностей. В этом случае нужно применять другие методы защиты.
В каждом конкретном случае стратегия обеспечения безопасности определяется необходимым уровнем защиты и характером использования приложения. Варианты защиты подробно описаны в следующих разделах.
В обычной среде, где не требуется строгая защита, ограничение доступа пользователей к установленным (по умолчанию) меню и панелям инструментов, окну БД и специальным клавишам достигается установкой параметров запуска.
Установка пароля для базы данных – простейший способ предотвратить несанкционированное открытие. Этот подход позволяет указать пользователей, которые могут открывать приложение, но не распространяется на контроль над изменением или сохранением приложения. Перед установкой пароля для БД рекомендуется создать ее резервную копию. Кроме того, перед установкой пароля необходимо закрыть БД; если она расположена на сервере или в общей папке и убедиться, чтоона никем не открыта.
Чтобы установить пароль для БД, в менюФайл (File) нужно выбрать командуОткрыть базу данных (Open Database). Затем в диалоговом окнеОткрытие файла базы данных (Open) установить флажок Монопольно (Exclusive), после чего открыть БД. В менюСервис (Tools) выбрать подменю Защита (Security), а в нем – команду Задать пароль базы данных (Set Database Password). Далее ввести новый пароль в окноПароль (Password) и подтвердить его.
Защита на уровне пользователя – самый гибкий и надежный способ защиты важных данных, кодов и макета объектов в приложениях, разработанных в Microsoft Access. К тому же это единственная форма защиты в Microsoft Access, позволяющая установить различные уровни доступа к данным и объектам.
В отличие от моделей защиты большинства других систем управления базами данных (СУБД), основной формой защиты в Microsoft Access является защита на уровне пользователя (user-level), а не защита на уровне общего доступа (share-level). Защита на уровне пользователя в Microsoft Access подобна системе защиты, применяемой в большинстве сетевых ОС, таких как Microsoft Windows NT Server. При запуске Microsoft Access пользователи вводят имя и пароль в диалоговом окнеВход(Logon).
Пароль позволяет проверить идентичность пользователя, сравнив введенные значения с именами и паролями в информационном файле рабочей группы. Пользователь может в любое время изменить свой пароль, не затрагивая кого бы то ни было еще. При входе каждый пользователь идентифицируется как член одной или нескольких групп.
При открытии защищенной БД определяется уровень доступа пользователя к ее объектам (включая саму БД). Это делается путем проверки набора разрешений данного пользователя для данного объекта. У разных пользователей и групп могут быть различные разрешения на доступ к одним и тем же объектам. Каждый раз, когда пользователь пытается выполнить определенные действия над объектом (например, открытие формы, выполнение запроса или изменение данных в таблице), проверяется наличие разрешения на соответствующие действия. Если таковое есть, действие выполняется; нет – выводится соответствующее сообщение, и действие не выполняется.
Напротив, СУБД, обеспечивающие защиту на уровне общего доступа, увязывают пароли с определенными объектами в БД, и пользователь должен вводить пароль для получения доступа к этим объектам. Зная пароль для определенного объекта, можно получить к нему доступ. Уровень доступа для пользователя определяется видом пароля, полученного этим пользователем. Например, руководителю может быть предоставлен пароль на таблицы, позволяющий изменять записи, а сотрудникам – пароль только для чтения. Простейшая форма защиты на уровне общего доступа реализована и в Microsoft Access: это защита открытия БД с помощью пароля.
Аналогичную систему можно выстроить и на основе защиты на уровне пользователя, создав группу руководителей с разрешением “Обновление данных” и группу персонала с разрешением “Чтение данных”, а затем прикрепив каждого пользователя к соответствующей группе. Для получения доступа к соответствующим объектам пользователям не потребуются пароли, поскольку они идентифицируются как члены соответствующих групп при входе в Microsoft Access.
Microsoft Access хранит информацию о пользователях и группах в БД, называемой информационным файлом рабочей группы (workgroup information file), содержащей:
• имя каждого пользователя и группы;
• список членов каждой группы;
• зашифрованный пароль входа для каждого пользователя;
• защищенный идентификатор (SID) учетной записи пользователя и группы – генерируемый компьютером набор двоичных данных, уникально идентифицирующий каждого пользователя и группу.
Каждый файл рабочей группы определяет рабочую группу, и к нему могут обращаться несколько БД Microsoft Access. Члены группы совместно используют данные и общий файл рабочей группы. Управление пользователями, их паролями и группами, к которым они причислены, осуществляется в диалоговом окнеПользователи и группы (User and Group Accounts) [подменюЗащита (Security) менюСервис (Tools)].
Права доступа пользователей и групп к объектам БД хранятся в скрытых системных таблицах внутри БД. Даже в случае создания нового файла рабочей группы разрешения на доступ к объектам БД не изменятся. Разрешения на доступ устанавливаются на вкладкеРазрешения (Permissions) иСмена владельца (Change Owner) в диалоговом окне Разрешения (User and Group Permissions); именно эта информация, а не файл рабочей группы, определяет доступ к объектам в открытой базе данных.
Новые учетные записи пользователей и групп создаются в диалоговом окнеПользователи и группы (User and Group Accounts) [подменюЗащита (Security) менюСервис (Tools)]. При этом нужно ввести имя и личный код (PID) — от 4 до 20 алфавитно-цифровых символов (с учетом регистра). На основе имени пользователя и PID Microsoft Access создает для каждой учетной записи защищенный идентификатор (SID), который применяется для однозначной идентификации пользователей и групп. Личный код не является паролем и служит только для создания учетных записей пользователей и групп. Пароль пользователя можно установить только после создания его учетной записи.
Файл рабочей группы Microsoft Access содержит встроенные учетные записи:
“Admin”:
– учетная запись пользователя по умолчанию: до установки защиты на уровне пользователя все пользователи автоматически регистрируются с помощью этой учетной записи. Обладая этой учетной записью, пользователь является владельцем и имеет полный набор разрешений на доступ ко всем объектам БД. Поскольку его SID одинаков для всех экземпляров Microsoft Access и Visual Basic, все объекты, которыми он владеет или на которые у него есть разрешения, открыты для любого пользователя, работающего с другой копией Microsoft Access или Visual Basic. Если устанавливается защита на уровне пользователя, важно, чтобы пользователь “Admin” не являлся владельцем и не имел разрешений на доступ к защищенным объектам. Для установки защиты объектов используется мастер защиты Microsoft Access.
“Admins”:
– учетная запись группы администраторов. В группе “Admins” должен быть минимум один пользователь. Перед установкой защиты на уровне пользователя пользователь “Admin” (по умолчанию) является единственным членом группы “Admins”. Данная запись является уникальной в каждом файле рабочей группы. Поскольку члены группы “Admins” имеют право изменять разрешения на доступ, изменять состав групп и отменять пользовательские пароли.
“Users”:
– учетная запись группы по умолчанию: содержит все учетные записи пользователей. Microsoft Access автоматически добавляет учетные записи пользователей в группу “Users” при их создании членом группы “Admins”. Любые разрешения, данные группе “Users” в явной форме, доступны всем пользователям для любого экземпляра Microsoft Access и Visual Basic. Это связано с тем, что, подобно SID группы “Admin”, SID группы “Users” одинаков во всех файлах рабочих групп.
Явные разрешения на доступ непосредственно присваиваются учетной записи пользователя; они не влияют на разрешения других пользователей. Неявными называются разрешения на доступ, присвоенные учетной записи группы. Член такой группы получает все разрешения, предоставленные группе.
Простейший метод администрирования в защищенной рабочей группе – создать новые группы и предоставлять разрешения группам, а не отдельным пользователям. Затем можно изменять разрешения для отдельных пользователей, включая их в группу или удаляя из нее. В простейшей ситуации для назначения разрешений можно использовать только стандартные группы: администраторов занести в “Admins”, а всех остальных – “Users”.
При переходе на более высокий уровень защиты нужно отменить все разрешения для группы “Users”, создать свои собственные группы и предоставить им разрешения. Защищенный код рабочей группы гарантирует, что она уникальна для этого файла.
При выполнении действия над объектом права пользователя определяются наименее ограничивающими разрешениями, предоставленными пользователю явно и установленными неявно для групп, в которые он входит.
Разрешения на доступ к объекту могут изменить:
• члены группы “Admins” файла рабочей группы, действовавшего при создании БД;
• владелец объекта;
• любой пользователь, обладающий разрешением администратора на данный объект.
Разрешения на доступ к БД могут изменить только ее владелец или члены группы “Admins”.
Объекты доступа к данным
Репликация баз данных Microsoft Access – это копирование БД, при котором две или более копии могут обмениваться изменениями в данных и объектах. Процесс обмена называется синхронизацией. Копия БД – реплика – содержит общий для всей БД набор таблиц, запросов, форм, отчетов, макросов и модулей. Каждая реплика может содержать локальные объекты, существующие только в той реплике, где они были созданы.
Каждая реплика – это часть набора реплик, содержащего основную и все прочие реплики. Основная реплика – единственная, в которой можно изменять структуру и объекты БД. Реплики одного набора могут быть синхронизированы.
Репликация БД обеспечивает:
• Совместный доступ к данным из нескольких офисов.
• Совместный доступ к данным для удаленных пользователей.
• Возможность доступа к данным на сервере.
• Распространение изменений в приложении.
• Создание резервных копий данных.
• Массовое обновление записей в репликах.
• Обязательная согласованность данных в любой момент времени.
Гибкость, обеспечиваемая репликацией, лучше всего ясна из примера. Предположим, торговым агентам необходимо приложение для контроля продаж и заказов. Каждый агент имеет портативный компьютер и по мере надобности подключается к корпоративной сети.
В этом случае необходимо создать с помощью репликации единую БД, в которойхранятся иданные, и объекты, и нескольких реплик для каждого торгового агента. В течение рабочего времени торговые агенты будут обновлять данные в репликах на своих компьютерах, а затем синхронизировать свои реплики с основной на сервере. Можно создать набор нестандартных форм и отчетов, который будет находиться только в конкретной реплике.
Репликацию БД можно выполнить, используя:
• команды репликации Microsoft Access;
• портфель Windows 95/98;
• диспетчер репликации;
• объекты доступа к данным (DAO).
Первые три метода репликации снабжены удобным интерфейсом. Объекты доступа к данным (DAO) помогут реализовать репликацию непосредственно в коде приложения.
Интерфейс объектов доступа к данным (DAO) включает методы и свойства, позволяющие разработчикам использовать некоторые средства портфельной репликации в программах Visual Basic. Объекты DAO применяются для:
• преобразования БД в основную реплику;
• создания и распространения дополнительных реплик;
• создания и распространения частичных реплик;
• синхронизации реплик;
• опроса и установки свойств реплицированной БД;
• разрешения конфликтов и ошибок.
Применение объектов DAO требует программирования, но зато есть возможность разработать собственную систему репликации. Применение объектов DAO уместно в таких ситуациях:
• Синхронизация реплик при возникновении определенных событий.
Например, синхронизация выполняется, если реплика получает из центра обновленную информацию о ценах на товары.
• Распространение реплицированной БД среди пользователей с небольшимопытом работы на компьютере.
С помощью объектов DAO можно создать упрощенный интерфейс репликации или спрятать репликацию от пользователей.
• Создание частичной реплики (например, когда нужна реплика, содержащая только часть данных).
Создав реплику, содержащую лишь некоторое подмножество из большого объема данных, можно уменьшить используемое дисковое пространство и повысить производительность.
Чтобы преобразовать базу данных в основную реплику, в менюСервис (Tools) нужно выбрать подменюРепликация (Replication), азатем – командуСоздать реплику (CreateReplica) или написать код Visual Basic с использованием объектов DAO.
Определение данных
База данных Microsoft Access – это набор объектов БД: таблиц, запросов, форм, отчетов, макросов и модулей. Пользователь может создавать новые объекты или открывать имеющиеся для работы со своей БД. В отличие от многих систем управления базами данных (СУБД) Microsoft Access может хранить все объекты, образующие приложение БД, в одном файле с расширением .mdb. Поэтому файл базы данных Microsoft Access иногда называют контейнером БД.
В Microsoft Access данные хранятся в таблицах. Данные в таблице располагаются в колонках и строках. Каждая строка таблицы называется записью, каждая колонка – полем. Например, каждая запись в таблице “Клиенты” (Customers) содержит информацию об одном пользователе, которая хранится в соответствующих полях: “Фамилия”, “Имя”, “Адрес”, “Город”, “Район/Область”, “Почтовый индекс”, “Телефон”. Пользователи могут вводить данные и изменять их как вручную, так и посредством запросов и форм ввода данных.
Для каждой разновидности данных (например, клиенты, заказы или продукты) можно создать отдельную таблицу. Использование отдельных таблиц для каждого вида данных означает, что каждое значение хранится один раз, что повышает эффективность работы БД и снижает вероятность ошибок при вводе. Например, если информация о клиенте и его заказе хранится в одной таблице, при появлении нового заказа придется вводить и информацию о клиенте. Это не только не эффективно, но и чревато появлением ошибок при повторном вводе информации.
Если же сведения о клиентах и заказах хранятся в раздельных таблицах, каждому клиенту соответствует ровно одна запись – в таблице “Клиенты”. Если потребуется обновить или исправить информацию о клиенте, достаточно изменить данные всего в одной записи. Этот метод исключает наличие избыточных данных и уменьшает вероятность ошибок при вводе.
Процесс исключения избыточности путем разделения данных на отдельные связанные таблицы называется нормализацией. Мастер анализа таблиц (Table Analyzer Wizard) Microsoft Access поможет нормализовать базу данных.
Для объединения данных из нескольких таблиц (в запросе, форме или отчете) нужно определить соответствие между таблицами, базирующееся на общих элементах в связываемых таблицах. Например, таблица “Клиенты” обычно содержит поле “КодКлиента” (CustomerID), которое однозначно идентифицирует каждого клиента. Если такое же поле есть и в таблице “Заказы”, можно определить отношение между двумя таблицами так, чтобы, например, при вводе информации о заказе пользователь мог бы ввести код клиента, связав таким образом информацию из таблицы “Клиенты” с этим заказом. Вместо того чтобы вводить код клиента вручную, можно использовать раскрывающийся список, как это сделано в форме “Заказы” учебной базы данных “Борей”.
Хотя в раскрывающемся списке приведены только имена клиентов, выбор имени в списке приводит к выбору соответствующего значения поля “КодКлиента” в таблице “Заказы”. Информация об адресе клиента, отображаемая под именем клиента, в таблице “Заказы” не хранится – она извлекается из таблицы “Клиенты” на основе отношения между полями “КодКлиента” таблиц “Клиенты” и “Заказы”.
Если с помощью этой формы нужно ввести заказ для нового клиента, которого нет в раскрывающемся списке, сначала нужно открыть форму “Клиенты” и ввести новую запись. После этого новый клиент автоматически будет доступен в раскрывающемся спискеСчет на формы “Заказы”.
Запросы предназначены для просмотра, изменения и анализа данных. Кроме того, они могут служить источником записей для форм и отчетов. Запрос создается с помощью мастера или вручную в режимеКонструктор. В этом режиме пользователь определяет данные, с которыми хочет работать, задает критерии и другую информацию в сетке разработки запроса. Microsoft Access поддерживает самые разнообразные запросы, включая запросы выбора, параметрические запросы, перекрестные табличные запросы и SQL-запросы.