Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные лаботы ОИС.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.38 Mб
Скачать

2.3. Основные методы защиты данных в ms sql Server 2008 r2

В системе MS SQL Server 2008 R2 организована двухуровневая настройка ограничения доступа к данным. На первом уровне в системе необходимо создать так называемую учетную запись пользователя, что позволяет ему подключиться к самому серверу. С другой стороны, на втором уровне для каждой базы данных SQL-сервера на основании учетной записи необходимо создать запись пользователя. Иначе говоря, с помощью учетных записей пользователей осуществляется подключение к SQL Server, после чего определяются уровни доступа этого пользователя для каждой базы данных в отдельности. Настройка доступа уж зарегистрированного (с созданной учетной записью) пользователя к объектам базы данных называется настройкой записи пользователя.

При этом в системе SQL Server существуют дополнительные объекты – роли, которые определяют уровень доступа к объектам SQL Server. В данном случае роли также подразделяются на роли (Server Roles), назначаемые для учетных записей пользователя сервера, и роли, используемые для ограничения доступа к объектам базы данных (Roles), т.е. роли для записей пользователей базы данных. Например, к серверной роли относится Security Administrators, назначение которой разрешает пользователю добавлять и изменять учетные записи других пользователей. С другой стороны, назначение роли db_backupoperator разрешает пользователю осуществлять процедуру резервного копирования базы данных, в которой ему определена эта роль. В этом случае роль Security Administrators относится к группе серверных ролей, a db_backupoperator – к группе ролей базы данных.

На рис. 3 представлен список объектов SQL Server с указанием выбора ролей сервера и базы данных.

Прокомментируем процесс создания учетных записей пользователей с помощью утилиты SQL Server Enterprise Manager. Для этого надо выбрать в группе объектов SQL-сервера Logins в списке Security, после чего выполнить команду New Login меню Action. Данное действие выведет на экран диалоговое окно настройки параметров создаваемой учетной записи пользователя (см. рис. 1). На закладке General этого диалога в поле вводится имя учетной записи, после чего в области Authentification определяются параметры аутентификации: с помощью учетной записи операционной системы Windows NT или системы SQL-сервера. В нашем случае следует воспользоваться первым способом, что потребует ввода наименования домена. Здесь также можно установить базу данных, подключение к которой осуществляется по умолчанию при входе пользователя в систему (список Database), а также используемый по умолчанию для данного пользователя язык (список Language).

В закладке Server Roles этого диалога (рис. 4) представлена группа опций, с помощью которых назначаются серверные роли для создаваемой учетной записи пользователя. При выборе требуемой роли в списке Server Roles в поле Description отображается краткая информация о возможностях, которые предоставляются пользователям при ее назначении. Использование кнопки Properties позволяет просмотреть следующую информацию о параметрах данной роли: кому еще в SQL-сервере назначена эта роль, а также, какие системные команды и процедуры может выполнять пользователь.

Рис. 4. Создание учетной записи пользователя

Краткое описание серверных ролей СУБД SQL Server приведено в таблице 1.

Таблица

Описание серверных ролей

Наименование роли

Описание функций

System Administrators

Выполнение любых функций администрирования SQL-сервера

Security Administrators

Управление доступом, возможность создания баз данных, доступ к log-файлу ошибок

Server Administrators

Настройка конфигурации и выполнение функций закрытия SQL-сервера

Setup Administrators

Управление связями между серверами и их процедурами запуска

Process Administrators

Управление процессами, выполняющимися в SQL-сервере

Disk Administrators

Управление файлами SQL-сервера

Database Creator

Управление процессами создания и удаления баз данных

С помощью закладки User Mapping диалогового окна создания новой учетной записи осуществляется настройка доступа к объектам баз данных SQL-сервера (см. рис. 4). В этом случае в верхнем списке осуществляется выбор требуемой базы данных, т.е. базы данных, к которой будет разрешен доступ. После этого в списке данного диалога отображается перечень ролей доступа к объектам базы данных (табл. 2).

Таблица 2

Описание ролей доступа к базам данных

Наименование роли

Описание функций

Public

пользователи без предоставления специальных ролей

Db_owner

полный доступ к базе данных

Db_accessadmin

возможность добавления и удаления полью пользователей (не путать с учетными записями севера) в базу данных

Db_securityadmin

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

Db_ddladmin

выполнение всех команд DDL (Data definition language - язык определений), кроме GRANT, REVOKE или DENY

Db_backupoperator

Выполнение команд резервного копирования базы данных

Db_datareader

Возможность чтения всех данных из любых таблиц базы данных

Db_datawriter

Возможность изменения всех данных из любых таблиц базы данных

Db_denydatareader

Возможность ограничения доступа к объектам базы данных с использованием оператора SELECT

Db_denydatawriter

Возможность ограничения доступа к объектам базы данных с использованием операторов INSERT, UPDATE и DELETE

Дальнейшие изменения настроек учетной записи пользователя можно осуществлять с помощью выбора необходимого пользователя в списке объектов Logins и выполнения команды Properties меню Action.

Учетные записи доступа к SQL-серверу отображаются в группе объектов Security / Logins, а права доступа к базам данных в группе Users списка базы данных (см. рис. 1).

Пример 1. На сервере базы данных настроить пользователя Test_Admin, который обладает правами на обработку данных таблицы dbo.ex_Product базы данных DBLab.

Пример 2. На сервере базы данных настроить пользователя Test_User, который обладает ограниченными правами работы с базой данных DBLab, в частности имеет право только извлекать данные из таблицы dbo.ex_Product, однако не может вставлять, корректировать и удалять строки в этой таблице.

Выполнение примеров 1 и 2 надо проверить, выполнив подключение к базе под соответствующими пользователями.

На практике настройку ролей лучше всего осуществлять с помощью запросов или хранимых процедур. В качестве примера на сервере базы данных создадим две роли udb_TestAdmin и udb_TestUser. Первая роль будет объединять пользователей, которые обладают правами на чтение вставку, корректировку и удаление данных из таблиц базы данных DBLab. Пользователи, для которых назначена роль udb_TestUser, смогут только извлекать некоторые столбцы из базы данных. Для этого им необходимо ограничить полномочия.

Пример 3. С помощью нового запроса выполним следующий скрипт:

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

/*-----------------------------------------------------------

Проект "DBLab"

Пример обработки базы данных MS MS SQL Server 2008 R2

Разработчик: Лавров Владислав Васильевич

Функции:

Установка прав на пользовательские таблицы базы данных DBLab

Пример вызова:

EXEC dbo.GrantsToDBLab

*/-----------------------------------------------------------

ALTER PROC [dbo].[GrantsToDBLab]

AS

/* ---------------------------------------

Роль udb_TestAdmin

Допускает все действия над данными в таблицах

*/ ---------------------------------------

-- разрешить все операции для таблицы dbo.ex_Pech

GRANT SELECT, UPDATE, INSERT, DELETE ON dbo.ex_Pech TO udb_TestAdmin

-- разрешить все операции для таблицы dbo.ex_Product

GRANT SELECT, UPDATE, INSERT, DELETE ON dbo.ex_Product TO udb_TestAdmin

/* ---------------------------------------

Роль udb_TestUser

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

*/ ---------------------------------------

-- разрешить только чтение всех столбцов таблицы dbo.ex_Pech

GRANT SELECT ON dbo.ex_Pech TO udb_TestUser

--REVOKE SELECT (NPech) ON dbo.ex_Pech TO udb_TestUser

-- разрешить только чтение всех столбцов таблицы dbo.ex_Product

GRANT SELECT ON dbo.ex_Product TO udb_TestUser

-- лишить прав на чтение столбцов Naliv, Sliv таблицы dbo.ex_Product

REVOKE SELECT (Naliv, Sliv) ON dbo.ex_Product TO udb_TestUser

-- явно запретить чтение столбцов Naliv, Sliv таблицы dbo.ex_Product

--DENY SELECT (Naliv, Sliv) ON dbo.ex_Product TO udb_TestUser

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

Задание 1. Написать скрипт хранимой процедуры настройки ролей udb_TestAdmin и udb_TestUser для доступа к базе данных DBLab, которые обладают следующими правами:

  • Роль udb_TestAdmin – предоставить права на все операции манипулирования данными всех таблиц базы данных;

  • Роль udb_TestUser – в отличие от предыдущей роли исключить права на корректировку следующих справочных таблиц базы данных: dbo.Преподаватели, dbo.Ведомость, dbo.Студенты, dbo.ex_ItemEnergo, dbo.ex_NSIStand, dbo.ex_NSICategory, dbo.ex_NSIView, dbo.ex_ItemWaste, dbo.ex_TypeMaterial, dbo.ex_NSIMaterial, dbo.ex_ItemASUTP, dbo.ex_ItemChemGas, dbo.ex_ItemQualityChugun, dbo.ex_PotrebitelChugun, dbo.ex_ItemUtilization, dbo.ex_TypePark.

Результаты представить в виде скрипта хранимой процедуры. Протестировать работу путем добавления новых пользователей и установку для них соответствующих ролей.

Задание 2. Написать скрипт запросов для настройки ролей udb_TestAdmin и udb_TestUser для доступа ко всем таблицам базы данных DBLab.