
- •Работа с базами данных в субд ms sql Server 2008r
- •1 Описание работы и задания 7
- •1 Описание работы и задания 25
- •1 Описание работы и задания 39
- •1 Описание работы и задания 62
- •1 Описание работы и задания 73
- •Введение в Microsoft Visual FoxPro Лабораторная работа 1.1 Создание баз данных в субд ms Visual FoxPro
- •1 Описание работы и задания
- •Определить условия на значения и сообщения об ошибках некоторых полей.
- •2 Выполнение работы
- •2.1 Обращение к среде sql Server Management Studio
- •2.2 Знакомство с языком Transact-sql
- •2.2.1 Возможности t-sql и особенности его использования
- •2.2.2 Создание базы данных
- •2.2.3 Создание таблиц
- •2.2.4 Манипулирование данными с помощью команд t-sql
- •2.3 Работа с обозревателем объектов
- •2.3.1 Создание базы данных
- •2.3.2 Создание таблиц
- •2.3.3 Занесение данных в созданную таблицу
- •2.3.4 Создание объектов с помощью диаграмм данных и поддержка целостности данных
- •Лабораторная работа 2.2 Создание запросов в субд ms sql Server 2008r
- •1 Описание работы и задания
- •2 Выполнение работы
- •2.1 Оператор select
- •2.1.1 Простая выборка данных
- •2.1.2 Аналитическая выборка данных
- •2.1.3 Условие отбора where
- •2.1.4 Группировка записей group by
- •2.1.5 Условие на группируемые поля having
- •2.1.6 Использование функций преобразования различных типов данных
- •2.2 Подзапросы
- •2.3 Выборка данных из нескольких таблиц
- •2.3.1 Внутреннее соединение
- •2.3.2 Внешнее соединение
- •2.3.3 Перекрестные соединения
- •2.2.4 Объединение нескольких наборов результатов
- •Лабораторная работа 2.3 Хранимые процедуры и триггеры
- •1 Описание работы и задания
- •2 Выполнение работы
- •2.1 Хранимые процедуры
- •2.1.1 Переменные. Задание значений переменных
- •2.1.2 Использование переменных в запросах sql
- •2.1.3 Создание хранимых процедур
- •2.1.3.1 Создание хранимой процедуры без параметров
- •2.1.3.2 Создание и изменение хранимой процедуры с входными и выходными параметрами
- •2.1.3 Удаление хранимых процедур
- •2.2 Триггеры
- •2.3 Списки встроенных функции для работы с данными типа дата и строковыми данными
- •Лабораторная работа 2.4 Курсоры
- •1 Описание работы и задания
- •2 Выполнение работы
- •2.1 Понятие курсора
- •2.2 Реализация курсоров в среде ms sql Server
- •2.3 Управление курсором в среде ms sql Server
- •2.3.1 Объявление курсора
- •2.3.2 Открытие курсора
- •2.3.3 Выборка данных из курсора
- •2.3.4 Изменение и удаление данных
- •2.3.5 Закрытие курсора
- •2.3.6 Освобождение курсора
- •2.2. Безопасность баз данных и привилегии
- •2.3. Основные методы защиты данных в ms sql Server 2008 r2
- •Список использованных источников
- •Список предметных областей
- •Типы данных sql 2008r
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.