Кашина_ТРиЗБД_ЛБ7
.docxМинистерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«Владимирский государственный университет
имени Александра Григорьевича и Николая Григорьевича Столетовых» (ВлГУ)
Колледж инновационных технологий и предпринимательства
КАФЕДРА ФИЗИКИ И ПРИКЛАДНОЙ МАТЕМАТИКИ
Лабораторная работа № 7
по дисциплине «Технология разработки и защиты баз данных»
на тему: «Основные принципы управления учетными записями и ролями в MS SQL Server»
Выполнил
студент группы ИПсп-123
Кашина Д. А.
Принял
Кабанова М.Ю.
Владимир, 2025
Цель работы: познакомится с основными принципами управления учетными записями и ролями.
Контрольные вопросы:
Какие фиксированные серверные роли существует?
Ответ: В SQL Server существуют фиксированные серверные роли — встроенные роли, которые имеют фиксированный набор разрешений и область действия в масштабах всего сервера. Они предназначены для использования при администрировании SQL Server, и назначенные им разрешения не могут быть изменены. Например sysadmin —может выполнять любые действия на сервере.
Кто такой грантор?
Ответ: Грантор – это пользователь, предоставивший привилегию другому. Привилегия является предоставляемой, если право на нее можно предоставить другим пользователям.
Роли уровня сервера и роли уровня базы данных.
Ответ: Перечень ролей БД:
Public – минимальные права доступа к БД (на просмотр)
Db_owner – может выполнять любые действия с БД
Db_accessadmin – добавляет и удаляет пользователей БД
Db_sequrityadmin – управляет ролями в БД и разрешениями на запуск команд и работу с объектами БД
Db_ddladmin – добавляет, изменяет и удаляет объекты БД
Db_backupoperator – осуществляет резервное копирования БД
Db_dataSTUDENT – может просматривать все данные в каждой таблице в БД
Db_datawriter – может добавлять, удалять и изменять данные в каждой таблице в БД
Db_denydataSTUDENT – запрет на просмотр всех данных в каждой таблице в БД
Db_denydatawriter – запрет на добавление, удаление и изменение всех данных в каждой таблице в БД
Как создать роль БД?
Ответ:
Создание роли уровня базы данных показано двумя способами:
1. С помощью системной хранимой процедуры sp_addrole
2. Через графический интерфейс SQL Server Management Studio (SSMS):
Как осуществляется управление авторизацией?
Ответ: Пользователь может войти в систему баз данных, используя учетную запись пользователя Windows или регистрационное имя входа в SQL Server. Для последующего доступа и работы с определенной базой данных пользователь также должен иметь учетную запись пользователя базы данных. Для работы с каждой отдельной базой данных требуется иметь учетную запись пользователя именно для этой базы данных.
Как осуществляется управление разрешениями?
Ответ: SQL Server предоставляет роли уровня сервера и помогает управлять разрешениями на сервере. Эти роли являются субъектами безопасности, группирующими других участников. Разрешения ролей уровня сервера распространяются на весь сервер.
Пояснить команды GRANT, REVOKE, DENY.
Ответ:
С помощью оператора GRANT (предоставлять) для каждого пользователя формируется список привилегий, привилегии управляют работой сервера данных с точки зрения защиты данных. Выполнению каждой транзакции предшествует проверка привилегий пользователя, сеанс которого породил транзакцию.
REVOKE (отменять) -оператор изымания роли у пользователя и отмены привилегий.
DENY (отрицать) - Этот пример запрещает несколько системных привилегий для нескольких пользователей. Пользователи не могут использовать системные привилегии CREATE DATABASE or CREATE TABLE, если они не наделены ими через команду GRANT.
Ход
работы:
Пример 1.
/*Пример 1. Пример создания роли декана */
USE University_Кашина_Диана --сделать текущей БД University
EXEC sp_addrole 'DEKAN'
Пример 2.
/*Пример 2. Пример создания роли студента*/
USE University_Кашина_Диана --сделать текущей БД University
EXEC sp_addrole 'STUDENT'
Пример 3.
USE University_Кашина_Диана
--предоставление прав роли Декана
GRANT DELETE, INSERT, UPDATE, SELECT ON Discuplinu TO DEKAN
GRANT EXECUTE TO DEKAN
/*у декана есть права на просмотр, добавление, изменение, удаление записей*/
--предоставление прав роли студент
GRANT SELECT ON Discuplinu TO STUDENT
/*у студента права только на чтение*/
Пример 4.
/* Пример 4. Пример создания декана Ivanov_Dek и присвоения ему роли*/
EXEC sp_addlogin 'Ivanov_Dek','Ivanov', 'University_Кашина_Диана'
USE University_Кашина_Диана
EXEC sp_adduser 'Ivanov_Dek','Ivanov_Dek'
EXEC sp_addrolemember 'DEKAN', 'Ivanov_Dek';
/*Пример 5. Пример создания студент Petrov_Stud и присвоения роли*/
EXEC sp_addlogin 'Petrov_Stud','Petrov', 'University_Кашина_Диана'
USE University_Кашина_Диана
EXEC sp_adduser 'Petrov_Stud','Petrov_Stud'
EXEC sp_addrolemember 'STUDENT', 'Petrov_Stud'
Самостоятельное задание.
Свойства роли STUDENT
Пример 6.
/*Пример 6.
Удаление пользователя из роли*/
use University_Кашина_Диана
EXEC sp_droprolemember 'STUDENT', 'Petrov_Stud'
Задания по собственному варианту.
Создание ролей
/*Кашина 17.10.25
Создание ролей*/
USE Pizzaria
CREATE ROLE DirectorRole;
CREATE ROLE CourierRole;
CREATE ROLE ClientRole;
Назначение привилегий
/*Кашина 17.10.25
назначение привилегий*/
USE Pizzaria;
-- 1. Назначение привилегий для ДИРЕКТОРА (полный доступ)
GRANT SELECT, INSERT, UPDATE, DELETE ON [Client] TO DirectorRole;
GRANT SELECT, INSERT, UPDATE, DELETE ON [Courier] TO DirectorRole;
GRANT SELECT, INSERT, UPDATE, DELETE ON [Order] TO DirectorRole;
GRANT SELECT, INSERT, UPDATE, DELETE ON [Pizza] TO DirectorRole;
GRANT SELECT, INSERT, UPDATE, DELETE ON [Pizza_Order] TO DirectorRole;
GRANT SELECT, INSERT, UPDATE, DELETE ON [Pizza_Size] TO DirectorRole;
GRANT SELECT, INSERT, UPDATE, DELETE ON [Pizzeria] TO DirectorRole;
GO
-- 2. Назначение привилегий для КУРЬЕРА
GRANT SELECT ON [Order] TO CourierRole; -- Просмотр заказов
GRANT SELECT ON [Client] TO CourierRole; -- Просмотр данных клиента (адрес, телефон)
GRANT SELECT ON [Pizza_Order] TO CourierRole; -- Просмотр состава заказов
GRANT SELECT ON [Pizza] TO CourierRole; -- Просмотр информации о пиццах
GRANT UPDATE ON [Order] (Order_Status) TO CourierRole; -- Обновление статуса заказа (доставлен, в пути)
GRANT UPDATE ON [Order] (ID_Courier) TO CourierRole; -- Назначение себя на заказ
GRANT SELECT ON [Courier] TO CourierRole; -- Просмотр информации о курьерах
GRANT UPDATE ON [Courier] (Employment_Status) TO CourierRole; -- Обновление своего статуса (активен, занят)
GO
-- 3. Назначение привилегий для КЛИЕНТА
GRANT SELECT ON [Pizza] TO ClientRole; -- Просмотр меню пицц
GRANT SELECT ON [Pizza_Size] TO ClientRole; -- Просмотр цен
GRANT SELECT ON [Pizzeria] TO ClientRole; -- Просмотр пиццерий
GRANT SELECT, INSERT ON [Client] TO ClientRole; -- Регистрация и просмотр своего профиля
GRANT SELECT, INSERT ON [Order] TO ClientRole; -- Создание и просмотр своих заказов
GRANT SELECT, INSERT ON [Pizza_Order] TO ClientRole; -- Добавление пицц в заказ
GRANT SELECT ON [Courier] TO ClientRole; -- Просмотр доступных курьеров
Создание пользователей
/*Кашина 17.10.25
создание пользователей*/
USE Pizzaria
EXEC sp_addlogin 'Director_Login', 'Director123', 'Pizzaria';
EXEC sp_adduser 'Director_Login', 'Director_User';
EXEC sp_addrolemember 'DirectorRole', 'Director_User';
EXEC sp_addlogin 'Courier_Login', 'Courier123', 'Pizzaria';
EXEC sp_adduser 'Courier_Login', 'Courier_User';
EXEC sp_addrolemember 'CourierRole', 'Courier_User';
EXEC sp_addlogin 'Client_Login', 'Client123', 'Pizzaria';
EXEC sp_adduser 'Client_Login', 'Client_User';
EXEC sp_addrolemember 'ClientRole', 'Client_User';
Вывод: в ходе лабораторной работы были изучены основные принципы управления учетными записями и ролями.
