Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование приложений баз данных с использованием СУБД MS SQL Server. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
6. ОБЕСПЕЧЕНИЕ ДОСТУПА К ДАННЫМ
SQL Server является системой, удовлетворяющей самым же­стким требованиям к безопасности информации. Условно система безопасности может быть разделена на два уровня:
уровень сервера;
уровень базы данных.
На уровне сервера разрешается или отклоняется доступ поль­зователей к самому серверу. На втором уровне пользователи, имею­щие доступ на уровне сервера, получают доступ
к объектам базы
данных.
На уровне сервера система безопасности оперирует следую­щими понятиями:
аутентификация (authentication);
учетная запись (login);
встроенные роли сервера (fixed server roles).
На уровне базы данных используются следующие понятия:
пользователь базы данных (database user);
фиксированная роль базы данных (fixed database role);
пользовательская роль базы данных (users database role);
роль приложения (application role).
6.1. Проверка подлинности пользователя
При входе в систему пользователь должен идентифицировать себя, введя имя пользователя. Система, чтобы убедиться в подлин­ности пользователя, проводит процедуру аутентификации. Стан­дартное средство аутентификации – ввод пароля.
MS SQL Server может использовать два режима аутентифика­ции пользователей:
режим аутентификации средствами Windows;
смешанный режим аутентификации (Windows Authentica-
tion and SQL Server Authentication).
Смешанный режим позволяет пользователям регистрировать­ся как средствами
Windows, так и средствами SQL Server (рис. 15). Кроме того, этот режим предлагает некоторые удобства по сравне­нию с первым. В частности, при аутентификации только средства-
50
ми домена Windows, если пользователь не имеет учетной записи в домене Windows, то он не сможет получить доступа к серверу баз данных. Смешанный режим аутентификации позволяет избежать этой проблемы.
При выборе режима аутентификации следует исходить как из требований обеспечения наибольшей безопасности, так и из сооб­ражений простоты администрирования. Если организация неболь-
должности администратора сети и администратора баз дан-
шая и ных совмещает один человек, то удобнее использовать аутентифи­кацию Windows. Если же в организации сотни пользователей и функции системного администратора и администратора баз дан­ных выполняют различные люди, то может оказаться, что аутенти­фикация средствами SQL Server удобнее. В противном случае че­ловеку, занимающемуся администрированием сервера
баз данных, придется постоянно обращаться к системному администратору для создания нового пользователя, смены пароля или для перевода пользователя из одной группы в другую. К тому же системный ад­министратор сможет иметь возможность назначать права доступа по своему усмотрению.
Рис. 15
С другой стороны, каждый пользователь организации, скорее всего, имеет в операционной системе учетную запись, администри­рованием которой занимается системный администратор. Благода­ря аутентификации Windows администратор баз данных может ис-
51
пользовать уже готовые учетные записи, а не отвлекаться на созда­ние новых.
В данном случае речь идет только о праве подключения поль­зователя к серверу баз данных. После регистрации пользователя в SQL Server способ проверки прав доступа к конкретной базе дан­ных одинаков для обоих режимов аутентификации.
Для аутентификации средствами SQL Server член стандартной роли сервера sysadmin или securityadmin должен создать и сконфи­гурировать для пользователя учетную запись, в которую входит имя учетной записи, уникальный идентификатор SQL Server и па­роль. Вся эта информация будет храниться в системной базе master. Создаваемая учетная запись не имеет отношения к учетным запи­сям Windows. Создать учетную запись можно в
среде Microsoft
SQL Server Studio (рис. 16).
Рис. 16
В режиме проверки подлинности SQL Server при попытке пользователя войти в систему сервер сам проверяет правильность имени пользователя и пароль, сравнивая их с данными в системных таблицах. Если данные, введенные пользователем, совпадают с дан-
52
ными SQL Server, пользователю разрешается доступ к серверу. В противном случае попытка доступа отклоняется и выдается со­общение об ошибке.
6.2. Специальные учетные записи
После установки SQL Server создаются две стандартные учет-
ные записи: BUILTIN\Administrators и sa.
– BUILTIN\Administrators – это учетная запись Windows NT,
обеспечивающая автоматический доступ всем членам группы
Administrators к SQL Server. Учетная запись BUILTIN\Admini­strators по умолчанию является членом встроенной роли сервера sysadmin. Таким образом, системные администраторы получают
полный доступ ко всем базам данных. В ситуации, когда функции системного администратора и администратора баз данных
выпол­няют разные люди, скорее всего, следует исключить эту учетную запись из роли sysadmin, а возможно, и вообще удалить;
– sa – это специальная учетная запись SQL Server для админи­стратора. По умолчанию она присвоена встроенной системной роли сервера sysadmin и не может быть изменена. Эта учетная запись со­хранена в этой версии SQL Server для сохранения совместимости
приложениями, написанными для предыдущих версий.
с
6.3. Фиксированные роли сервера
Во всех версиях MS SQL Server используется безопасность на основе ролей, что позволяет назначать разрешения роли или группе пользователей, а не отдельным пользователям. Фиксированные ро­ли сервера имеют предопределенный набор разрешений, назначен­ных для них.
MS SQL Server предоставляет девять фиксированных ролей сервера. Разрешения, назначенные ролям сервера, не могут быть изменены. Начиная с MS SQL Server 2012 можно создавать пользо­вательские роли сервера и добавлять разрешения на уровне сервера таким пользовательским ролям.
Приведенная ниже табл. 2 демонстрирует все девять предо­пределенных серверных ролей.
53
Таблица 2
Имя роли уровня
сервера
Описание
sysadmin Члены предопределенной роли сервера sysadmin
могут выполнять любые действия на сервере
serveradmin Члены предопределенной роли сервера
serveradmin могут изменять параметры конфигу-
рации на уровне сервера, а также выключать сер­вер
securityadmin Члены предопределенной роли сервера
securityadmin управляют именами входа и их
свойствами. Они могут предоставлять, запрещать и отменять разрешения на уровне сервера (инст­рукции GRANT, DENY и REVOKE). Они также могут предоставлять, запрещать и отменять раз­решения на уровне базы данных при наличии доступа к базе данных. Кроме того, они могут сбрасывать пароли для учетных
записей SQL
Server
processadmin Члены предопределенной роли сервера
processadmin могут завершать процессы, выпол­няемые на экземпляре SQL Server
setupadmin Члены предопределенной роли сервера
setupadmin могут добавлять или удалять связан- ные серверы
bulkadmin Члены предопределенной роли сервера
bulkadmin могут выполнять инструкцию BULK INSERT – импорт файла данных в таблицу или представление базы данных
diskadmin Предопределенная роль сервера diskadmin ис-
пользуется для управления файлами на диске
dbcreator Члены предопределенной роли сервера dbcreator
могут создавать, изменять, удалять и восстанав­ливать любые базы данных
public Каждая учетная запись принадлежит к роли сер-
вера public. Если для участника на уровне серве­ра не были предоставлены или запрещены кон­кретные разрешения на защищаемый объект, то он наследует разрешения роли public на этот объект. Разрешения роли public следует назна­чать только тому объекту, который будет досту­пен всем пользователям. Нельзя изменить
член-
ство в роли public
54
6.4. Доступ к объектам базы данных
После прохождения аутентификации необходимо получить доступ к базе данных. Для получения доступа к любой базе данных учетная запись пользователя (login) отображается в пользователя данной базы данных (user). Объект «пользователь базы данных» применяется для предоставления доступа ко всем объектам базы данных: таблицам, представлениям, хранимым процедурам и т. д. В качестве пользователя базы данных может
отображаться:
учетная запись Windows;
группа учетных записей Windows;
учетная запись SQL Server.
Подобное отображение учетной записи необходимо для каж­дой базы данных, доступ к которой хочет получить пользователь. Отображения сохраняются в системной таблице sysusers, которая имеется в любой базе данных. Такой подход обеспечивает высокую степень безопасности, предохраняя от предоставления пользовате­лям, получившим
доступ к SQL Server, автоматического доступа ко
всем базам данных и их объектам.
Создать пользователя базы данных можно в среде SQL Server Management Studio (рис. 17).
Рис. 17
55
Здесь в базе данных BookLibrary создается новый пользова­тель с именем userBookLibrary, в которого отображается учетная запись (login) с именем user1.
В ситуации, когда учетная запись не отображается в пользова­теля базы данных, клиент все же может получить доступ к базе дан­ных под гостевым именем guest, если оно, разумеется, имеется в ба­зе данных. Обычно
специальному пользователю guest предоставля­ется минимальный доступ только в режиме чтения. Но в некоторых ситуациях и этот доступ необходимо предотвратить. Помимо guest, каждая база данных имеет еще одного специального пользователя с именем dbo. В dbo (database owner) отображена учетная запись (login) пользователя, который создавал базу данных. Этот пользо­ватель имеет неявно заданные разрешения на выполнение любых действий
с базой данных. Члены предопределенной роли сервера
sysadmin также автоматически сопоставляются с dbo.
6.5. Пользовательские и фиксированные роли базы данных
Пользователи баз данных могут объединяться в роли для уп-
рощения управлением системой безопасности.
Для удобства MS SQL Server предоставляет несколько фикси­рованных ролей, которые являются субъектами безопасности, груп­пирующими других участников. Они подобны группам в операци­онной системе Microsoft Windows. Разрешения ролей уровня базы данных распространяются на всю базу данных.
В табл. 3 представлены фиксированные роли уровня
базы дан-
ных и их возможности. Эти роли существуют во всех базах данных.
Таблица 3
Имя роли уровня
базы данных
db_owner Члены предопределенной роли базы данных
db_owner могут выполнять все действия по
настройке и обслуживанию базы данных, а также удалять базу данных
db_securityadmin Элементы предопределенной роли базы данных
db_securityadmin могут изменять членство в
роли и управлять разрешениями. Добавление участников к этой роли может привести к непреднамеренному повышению прав доступа
Описание
56
Окончание табл. 3
Имя роли уровня
базы данных
db_accessadmin Члены предопределенной роли базы данных
db_accessadmin могут добавлять или удалять
права удаленного доступа к базе данных для имен входа и групп Windows, а также имен входа SQL Server
db_backupoperator Члены предопределенной роли базы данных
db_backupoperator могут создавать резервные копии базы данных
db_ddladmin Члены предопределенной роли базы данных
db_ddladmin могут выполнять любые команды языка определения данных (DDL) в базе данных
db_datawriter Члены предопределенной роли базы данных
db_datawriter могут добавлять, удалять или
изменять данные во всех пользовательских таблицах
db_datareader Элементы предопределенной роли базы данных
db_datareader могут считывать все данные из всех пользовательских таблиц
db_denydatawriter Члены предопределенной роли базы данных
db_denydatawriter не могут добавлять, изменять
или удалять данные в пользовательских таблицах базы данных
db_denydatareader Члены предопределенной роли базы данных
db_denydatareader не могут считывать данные из
пользовательских таблиц базы данных
Описание
Кроме того, существует еще также роль public, которая со­держится в каждой базе данных, включая системные базы данных. Ее нельзя удалить, а также нельзя добавлять и удалять пользовате­лей из нее. Разрешения, предоставленные роли public, наследуются всеми остальными пользователями и ролями, поскольку они при­надлежат к роли public по умолчанию. Следует предоставлять роли
public
только разрешения, необходимые для всех пользователей.
6.6. Установка разрешений доступа для объектов, ролей и пользователей
Как уже указывалось выше, учетным записям пользователей, которые успешно подключились к SQLServer и которым сопостав­лены учетные записи пользователей базы данных или фиксирован­ной роли базы данных, для успешной работы необходимо получить
57
разрешение на доступ и работу с ее объектами баз данных. Для ка­ждой базы разрешения свои и могут быть трех типов: предопреде­ленные (для фиксированных ролей и владельцев, не подлежат из­менению), объектные (доступ к объектам базы данных и функциям их создания, изменения, просмотра и удаления), операторные (до­ступ к операторам
, создающим: базы, таблицы, представления, про­цедуры, правила, определения, и резервирующим объекты базы данных). Само разрешение подразумевает три состояния: предо­ставлено (GRANT), запрещено (DENY) и отозвано (REVOKE). По умолчанию, до явного определения разрешения пользователю, оно находится в отозванном состоянии и запись о нем хранится в таблице sysprotects. Отозванное разрешение может быть переоп­ределено включением пользователя
в определенную роль, в кото­рой разрешение на данный ресурс явно прописано, а запрещение переопределить невозможно.
Для некоторых фиксированных ролей заранее предопределе­ны разрешения, и устанавливать их нет необходимости. Например, для роли sysadmin автоматически наследуются абсолютно все раз­решения, и поделать с этим ничего нельзя. Кроме того, некоторые предопределенные разрешения, присущие этой
роли, невозможно
применить к обычным учетным записям.
Схожий механизм действия определенных разрешений ис­пользуют и владельцы объектов, только безграничные разрешения предоставляются им на область их владений.
Разрешения для обычных пользователей могут регулироваться на уровне объектов и операторов. Четко представляя себе границы прав каждого пользователя, вы можете установить им разреше-
запрещения на работу с таблицами, столбцами или хранимыми
ния/ процедурами, а также на возможность использования операторов для создания баз или их элементов.
В любом случае важно помнить, что для доступа к данным пользователю или какой-либо из ролей, в которых он участвует, должен быть предоставлен явный доступ, и ни ему самому, ни
ка­кой-то одной из его ролей доступ не должен быть запрещен. Когда в базе создается новый пользователь, для него явно не установлены никакие права доступа, хотя, поскольку он является членом группы PUBLIC, то ему автоматически предоставляется набор прав, вы­данных этой роли. Для получения доступа системный администра­тор может использовать
SQL Server Management Studio. На рис. 18
показано предоставление прав пользователю userBookLibrary базы
58
данных BookLibrary на обновление некоторых столбцов таблицы BOOK средствами SQL Server Management Studio. Получено раз-
решение на обновление столбцов GOD, IZD, KOL, KOLSTR, изме­нение столбца ISBN запрещено.
Рис. 18
Хранимые процедуры можно рассматривать как важный ком­понент системы безопасности базы данных. Если все клиенты осу­ществляют доступ к данным с помощью хранимых процедур, то прямой доступ к таблицам может быть запрещен, и все действия пользователей будут находиться под контролем. Что еще важнее, хранимые процедуры скрывают от пользователя структуру базы данных и разрешают ему выполнение только тех операций, кото­рые запрограммированы в хранимой процедуре.
Разрешение на выполнение хранимых процедур сводится, в конечном итоге, к разрешению на выполнение оператора EXECUTE. Правда, часто этого бывает недостаточно, если пользо­ватель не обладает необходимыми разрешениями. Разрешения по-
59
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]