Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_Laboratornyi_774_praktikum.doc
Скачиваний:
28
Добавлен:
17.06.2021
Размер:
921.09 Кб
Скачать

Раздел II. Управление пользователями и правами доступа к данным

1. При помощи пользовательского меню Windows запустите утилиту SQL Server Management Studio. На панели Object Explorer в дереве структуры раскройте папку Databases.

2. Присоедините базу данных СкладХХХ, для чего выберите в контекстном меню папки Databases команду Atach Database, затем в появившемся окне нажмите кнопку Append и далее укажите местоположение первичного файла данных (т.е. файла данных с расширением .mdf). Убедитесь, что база данных СкладХХХ появилась в папке Databases.

3. На панели Object Explorer откройте папку Security и выберите в ней строку Logins. При этом справа на панели Summary будет представлен список так называемых регистрационных записей SQL Server (в которые отображаются, в частности, те учетные записи домена Windows, которым разрешен доступ к серверу Имя_компьютера\sqlexpress). Если среди регистрационных записей присутствуют регистрационные записи ИмяДомена\sql1, ИмяДомена\sql2, ИмяДомена\sql3, ИмяДомена\sql4, то выделите их и затем удалите, выбирая в контекстном меню команду Удалить.

Создайте для SQL Server новую регистрационную запись ИмяДомена\sql1 следующим образом. Выберите в контекстном меню строки Logins команду New Login и откройте окно Login - New. На странице General нажмите кнопку Search (справа от поля ввода Login name), затем выберите из списка учетную запись Windows с именем ИмяДомена\sql1 и вставьте ее в поле ввода Login name. В качестве базы данных по умолчанию выберите СкладХХХ.

На странице Server Roles установите флажок dbcreator, предоставляя тем самым пользователю с учетной записью ИмяДомена\sql1 право создавать новые базы данных и их объекты (другими словами, включите данную учетную запись в фиксированную роль сервера dbcreator).

На странице Database Access установите в верхнем списке флажок СкладХХХ, а в нижнем списке - флажок db_accessadmin, разрешив тем самым пользователю с данной учетной записью управлять добавлением или удалением пользователей в базе данных СкладХХХ (другими словами, включите данную учетную запись в фиксированную роль db_accessadmin базы данных СкладХХХ).

Завершите создание регистрационной записи ИмяДомена\sql1 щелчком на кнопке «OK».

Аналогичным образом создайте для SQL Server регистрационные записи ИмяДомена\sql2, ИмяДомена\sql3, ИмяДомена\sql4, при этом, однако, не включайте соответствующие им учетные записи Windows ни в одну из фиксированных ролей сервера и ни в одну из фиксированных ролей базы данных СкладХХХ (однако на странице Database Access флажок СкладХХХ в верхнем списке должен быть установлен).

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

4. На панели Object Explorer раскройте элемент СкладХХХ и далее подчиненную ему папку Security. Затем выберите появившуюся папку Users и убедитесь, что сервер создал новых пользователей ИмяДомена\sql1, ИмяДомена\sql2, ИмяДомена\sql3, ИмяДомена\sql4 (другими словами, отобразил учетные записи Windows ИмяДомена\sql1, ИмяДомена\sql2, ИмяДомена\sql3, ИмяДомена\sql4 в пользователей базы данных СкладХХХ с такими же именами).

5. Для базы данных СкладХХХ создайте три пользовательские роли (на уровне роли можно легко менять привилегии пользователей-членов роли). Для этого в контекстном меню папки Roles базы данных СкладХХХ, выберите команду NewNew Database Role и откройте окно Database Role - New. Затем введите в поле Role name имя новой роли как Гл.бухгалтер, а в поле Owner (владелец) – значение dbo. Далее нажмите кнопку Add, затем Browse и установите флажок в строке ИмяДомена\sql1, завершая выбор двумя нажатиями кнопки ОК. После этого закройте окно Database Role - New также с помощью кнопки ОК.

Аналогичным образом создайте пользовательскую роль с именем Бухгалтера, проставляя флажки в строках ИмяДомена\sql2, ИмяДомена\sql3 и Гл.бухгалтер.

Далее создайте пользовательскую роль с именем Экономисты, проставляя флажки в строках ИмяДомена\sql4 и Гл.бухгалтер.

Примечание1. В SQL Server любой отдельный пользователь (представляющий, в свою очередь, одного или группу пользователей Windows), а также любая отдельная роль может входить в состав нескольких ролей. В свою очередь каждая роль может включать в качестве своих членов несколько пользователей и ролей. В результате пользователи наследуют привилегии, установленные во всех ролях, в которые они входят (прямо, либо косвенно через другие роли).

В нашем случае пользователь ИмяДомена\sql1, помимо привилегий роли Гл.бухгалтер, будет обладать также привилегиями ролей Бухгалтера и Экономисты, в то время как пользователи ИмяДомена\sql2 и ИмяДомена\sql3 будут обладать только привилегиями роли Бухгалтера, а пользователь ИмяДомена\sql4 – только привилегиями роли Экономисты.

Примечание2. В любой базе данных автоматически создается пользователь с именем dbo (database owner), являющийся ее владельцем, также как и все члены фиксированной роли базы данных db_owner. Пользователь dbo имеет абсолютные права по управлению базой данных и его нельзя удалить. Кроме того, пользователь dbo включен в роль db_owner и не может быть удален из нее.

Примечание3. Имеется фиксированная роль базы данных public со специальными функциями. В эту роль нельзя включать пользователей, т.к. любой пользователь, созданный в базе данных, автоматически включается в роль public, и нет никакой возможности исключить его из этой роли. Роль public предназначена для предоставления привилегий по умолчанию всем пользователям, имеющим доступ к данной базе данных.

6. Задайте привилегии для пользовательских ролей базы данных СкладХХХ. Для этого в контекстном меню роли Гл.бухгалтер выберите команду Properties (Свойства) и откройте окно Database Role Properties – Гл.бухгалтер, в котором перейдите на страницу Permissions (Привилегии). Затем с помощью кнопки Add Objects выберите схему dbo (при помощи выпадающего списка), заполнив тем самым таблицу Objects, расположенную в верхней части окна.

В таблице, расположенной в нижней части окна, выполните следующие установки.

Для таблицы Валюта установите привилегии Select(просмотр), Insert(вставка), Update(обновление), Delete(удаление). Для таблицы Заказ установите привилегию Update, а для представления Запрос1 - привилегию Select. Для каждой из таблиц Клиент, Поставщик, Товар установите привилегии Update и Delete. Далее, выбрав таблицу Заказ, нажмите кнопку Column Permissions и в появившемся окне запретите привилегию Update для столбцов ДатаЗаказа и СрокПоставки.

По аналогии задайте привилегии для других пользовательских ролей.

Для роли Бухгалтера каждая из таблиц Заказ, Клиент должна иметь привилегии Select и Insert.

Для роли Экономисты каждая из таблиц Поставщик, Товар должна иметь привилегии Select и Insert.

Кроме того, для роли public таблица Регион должна иметь привилегии Select, Insert, Update, Delete.

Примечание. Запрещение привилегии имеет более высокий приоритет, чем предоставление привилегии. Если пользователю запрещена привилегия на доступ к тому или иному объекту, то система безопасности SQL Server гарантирует, что пользователь не будет иметь ее, даже если она была предоставлена ему через членство в любой другой роли базы данных или группе пользователей Windows.

7. Завершите сеанс работы с операционной системой Windows под учетной записью stud223 и стартуйте сеанс под учетной записью sql1 (пароль sql1).

При помощи пользовательского меню Windows запустите утилиту SQL Server Management Studio.

В этом случае будем говорить, что установлено соединение c сервером базы данных от имени пользователя с учетной записью sql1.

Убедитесь, что сейчас вы, применительно к базе данных СкладХХХ, обладаете привилегиями роли Гл.бухгалтер, т.е. вы можете выполнять все действия с таблицами Валюта, Клиент, Поставщик, Регион, Товар, а также все действия с таблицей Заказ за исключением удаления строк и обновления полей ДатаЗаказа и СрокПоставки. Также можно просматривать данные представления Запрос1.

Примечание. Ряд привилегий оказываются доступнымм благодаря членству роли Гл.бухгалтер в ролях Бухгалтера, Экономисты и public.

Кроме того, поскольку данная учетная запись является членом фиксированной роли сервера dbcreators, то предоставлено право создавать новые базы данных и их объекты.

Также предоставлено право управлять добавлением или удалением пользователей в базе данных СкладХХХ, поскольку данная учетная запись включена в фиксированную роль db_accessadmin этой базы данных.

Убедитесь также, что отсутствует, например, право редактирования структур таблиц в базе данных СкладХХХ и право создавать в ней новые типы данных.

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

Убедитесь, что сейчас вы, применительно к базе данных СкладХХХ, обладаете привилегиями роли Бухгалтера, т.е. вы можете просматривать данные и вставлять новые строки только в таблицах Заказ и Клиент, однако обновлять данные и удалять строки в этих таблицах вы не можете. Кроме того, вы можете выполнять все действия с таблицей Регион (соответствующие привилегии доступны через членство в роли public). К остальным таблицам, а также к представлению Запрос1, доступ оказывается запрещен. Также отсутствуют права на выполнение и многих других действий.

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

Убедитесь, что сейчас вы, применительно к базе данных СкладХХХ, также обладаете привилегиями роли Бухгалтера (см. предыдущий пункт).

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

Убедитесь, что сейчас вы, применительно к базе данных СкладХХХ, обладаете привилегиями роли Экономисты, т.е. вы можете просматривать данные и вставлять новые строки только в таблицах Поставщик и Товар, однако обновлять данные и удалять строки в этих таблицах вы не можете. Кроме того, вы можете выполнять все действия с таблицей Регион (соответствующие привилегии доступны через членство в роли public). К остальным таблицам, а также к представлению Запрос1, доступ оказывается запрещен. Также отсутствуют права на выполнение и многих других действий.

11. Установите соединение c сервером базы данных от имени пользователя с обычно используемой учетной записью (для класса 223-5 это будет stud223 и т.д.).

Сейчас вы обладаете абсолютными правами по управлению базой данных СкладХХХ (например, возможна корректировка структур таблиц базы данных, что невозможно в соединениях под учетными записями sql1,...,sql4). В этом можно легко убедиться, если выбрать на панели Object Explorer в дереве структуры папку Users базы данных СкладХХХ, а в правом окне - пользователя dbo. Затем в контекстном меню пользователя dbo необходимо выполнить команду Свойства и открыть окно Database User Properties - dbo. Теперь видно, что учетная запись stud223 отображается в пользователя dbo, который в свою очередь, является постоянным членом фиксированной роли базы данных db_owner, которая и предоставляет все имеющиеся привилегии и возможности.

12. Отсоедините базу данных СкладХХХ, выбрав в ее контекстном меню команду TasksDetach Database. Убедитесь, что база данных СкладХХХ исчезла из папки Databases. Теперь файлы этой базы данных можно, при необходимости, переместить в другую папку на жестком диске или копировать на другой носитель данных.