Лабораторна робота №4, Управління ролями і дозволами в MS SQL Server
Код роботи: 1317
Вид роботи: Лабораторна робота
Предмет: Сховища даних та оперативний аналіз даних
Тема: №4, Управління ролями і дозволами в MS SQL Server
Кількість сторінок: 13
Дата виконання: 2016
Мова написання: українська
Ціна: 250 грн (+ програма)
Отже, в ході даної роботи ми ознайомилися з основними можливостями надання, віднімання та обмеження прав доступу користувачам до БД. На прикладах ми переглянули надання різноманітних прав доступу та їх обмеження.
Список системних процедур і команд, які дозволяють реалізувати політику розподілу прав між користувачами БД.
Назва вбудованої процедури |
Опис |
sp_grantlogin |
– дозволяє використовувати користувачів або групи ОС для з’єднання з Microsoft SQL Server™ , використовуючи Windows Authentication. Цей приклад дозволяє користувачу Windows NT Corporate\BobJ з’єднуватися з SQL Server. EXEC sp_grantlogin 'Corporate\BobJ' |
sp_defaultdb |
Змінює для користувачів БД за замовчанням Цей приклад налаштує БД за замовчанням pubs для користувача Victoria. EXEC sp_defaultdb 'Victoria', 'pubs' |
sp_grantdbaccess |
Додає обліковий запис із розділу security в поточну БД, для облікових записів Microsoft Windows, також дає дозвіл на доступ до поточної БД. Синтаксис: EXEC sp_grantdbaccess [@loginame =] 'login' [,[@name_in_db =] 'name_in_db' [OUTPUT]] Цей приклад додає обліковий запис Corporate\GeorgeW в поточну БД і присвоює псевдонім внутрі БД Georgie. EXEC sp_grantdbaccess 'Corporate\GeorgeW', 'Georgie' |
sp_revokedbaccess |
Знищує інформацію про обліковий запис із поточної БД. Синтаксис: EXEC sp_revokedbaccess [ @name_in_db = ] 'name' Цей приклад знищує обліковий запис Corporate\GeorgeW із поточної БД. EXEC sp_revokedbaccess 'Corporate\GeorgeW' |
sp_addrole |
Створює нову роль в поточній БД. Цей приклад створює нову роль в поточній БД з назвою Managers. EXEC sp_addrole 'Managers' |
sp_addrolemember |
В поточній БД назначає роль конкретному користувачу.
Приклад A. Цей приклад додає обліковий запис Corporate\JeffL із Windows NT в БД Sales як користувача Jeff. Jeff, потім отримує роль Sales_Managers в БД Sales.
USE Sales - зробити поточною БД Sales GO – виконати команду, а потім запустити наступну EXEC sp_grantdbaccess 'Corporate\JeffL', 'Jeff' GO EXEC sp_addrolemember 'Sales_Managers', 'Jeff'
Приклад B. Цей приклад додає користувача SQL Server з іменем Michael до ролі Engineering в поточній БД. EXEC sp_addrolemember 'Engineering', 'Michael' |
sp_helprotect |
Показує список привілеї, що асоціюються з роллю. |
sp_helprolemember |
Показує список користувачів БД, що входять до вказаної ролі |
sp_addsrvrolemember |
Присвоєння вбудованої серверної ролі для існуючого облікового запису sp_addsrvrolemember [ @loginame = ] 'login' , [ @rolename = ] 'role' Наприклад: sp_addsrvrolemember 'Admin_DB', 'sysadmin' |
sp_dropsrvrolemember |
Знищення вбудованої серверної ролі для облікового запису або групи sp_dropsrvrolemember [ @loginame = ] 'login' , [ @rolename = ] 'role' Наприклад: sp_dropsrvrolemember 'Admin_DB' , 'sysadmin' |
sp_helpsrvrole |
Опис тільки вбудованих ролей в SQL Server sp_helpsrvrole [ [ @srvrolename = ] 'role' ] Например: sp_helpsrvrole 'sysadmin' |
sp_helpsrvrolemember |
Повертає список ролей і облікових записів, яким присвоєні ці ролі sp_helpsrvrolemember [ [ @srvrolename = ] 'role' ] Наприклад: sp_helpsrvrolemember 'sysadmin' |
sp_srvrolepermission |
Повертає список ролей і дозволів, які присвоєні цим ролям sp_srvrolepermission [[@srvrolename =] 'role'] Наприклад: sp_srvrolepermission 'sysadmin' |
sp_addlogin
sp_adduser |
Створення нового облікового запису в SQL Server в розділі Sequrity: sp_addlogin [ @loginame = ] 'login' [ , [ @passwd = ] 'password' ] [ , [ @defdb = ] 'database' ] [ , [ @deflanguage = ] 'language' ] [ , [ @sid = ] sid ] [ , [ @encryptopt = ] 'encryption_option' ]
Наприклад: sp_addlogin 'login1',sysname, 'DB_Books' Створює користувача в SQL Server без PUBLIC в БД ' DB_Books'. Потрібно ще використати sp_adduser [ @loginame = ] 'login' [ , [ @name_in_db = ] 'user' ] [ , [ @grpname = ] 'group' ],
Наприклад: Створена база даних DB_Books. У ній створений користувач Admin_DB з серверною роллю sysadmin, з роллю в БД db_owner.
Cтворити в QueryAnalyzer нового користувача з іменем Public_ і паролем Public_1 (пароль не повинен співпадати з іменем |
|
користувача) за допомогою наступних команд (не забудьте натиснути F5 для запуску команд на виконання): EXEC sp_addlogin 'Public_','Public_1', 'DB_Books' use DB_Books EXEC sp_adduser 'Public_','Public_' В БД DB_Books створений користувач Public_ з роллю в БД DB_Books public. |
Deny (заперечення) |
Цей приклад забороняє декілька системних привілеїв для декількох користувачів. Користувачі не можуть використовувати системні привілеї CREATE DATABASE or CREATE TABLE, якщо вони не наділені ними через команду GRANT. Наприклад: DENY CREATE DATABASE, CREATE TABLE TO Mary, John, [Corporate\BobJ]
DENY SELECT, INSERT, UPDATE, DELETE ON authors TO Mary, John, Tom |
Grant (надати) |
This example grants multiple statement permissions to the users Mary and John, and the Corporate\BobJ Windows NT group. GRANT CREATE DATABASE, CREATE TABLE TO Mary, John, [Corporate\BobJ]
Призначає доступ на вибірку (SELECT) для ролі PUBLIC в таблиці Authors: GRANT SELECT ON Authors TO public |
Revoke (відмінити) |
This example revokes multiple statement permissions from multiple users. REVOKE CREATE TABLE, CREATE DEFAULT FROM Mary, John
This example removes the denied permission from Mary and, through the SELECT permissions applied to the Budget role, allows Mary to use the SELECT statement on the table. REVOKE SELECT ON Budget_Data TO Mary |
Створення користувачів на доступ до серверу через утиліту Microsoft SQL Server Management Studio.
Рис. 1 - Розділ Security для роботи з користувачами в SQL Server і створення нового користувача (при SQL Server аутентифікації потрібно зняти галочки с Enforce password policy)
Рис. 2 - Налагодження серверної ролі для нового користувача (весь список серверних ролей з їхніми привілеями у кінці роботи)
Рис. 3 - Налагодження ролі бази даних для нового користувача (весь список ролей баз даних з їхніми привілеями нижче)
Перелік ролей БД:
Public – мінімальні права доступу к БД (на перегляд) Db_owner – може виконувати любі дії з БД Db_accessadmin – додає і знищує користувачів БД
Db_sequrityadmin – управляє ролями в БД і дозволами на запуск команд і роботу з об’єктами БД
Db_ddladmin – додає, змінює і знищує об’єкти БД Db_backupoperator – виконує резервне копіювання БД Db_datareader – може переглядати всі дані в кожній таблиці в БД
Db_datawriter - може додавати, знищувати і змінювати дані в кожній таблиці в БД Db_denydatareader – заборона на перегляд всіх даних в кожній таблиці в БД Db_denydatawriter - заборона на додавання, знищення і зміну всіх даних в кожній таблиці в БД
Рис. 4 - Розблокування створеного облікового запису
Після натискання на <OK> в БД з’явиться користувач Proba з правами власника БД, який може виконувати всі маніпуляції з БД Demo_DataBase.
Створення ролей програмно
Для спрощення управління правами доступу в системі створюються ролі, які потім можна призначати групі користувачів.
Створимо для нашого прикладу ролі бібліотекаря (LIBRAR) і читача (READER). Приклад створення ролі бібліотекаря:
USE Demo_DataBase -- зробити поточною БД Demo_DataBase EXEC sp_addrole 'LIBRAR'
Ці оператори набрати на сторінці, що викликається натисканням кнопки <New Query> (<Новий запит>) або через пункт меню File/ New/ Query in current connection або натисканням комбінації клавіш <CTRL>+ <N>.
Для запуску команд на виконання натиснути <F5>.
Повторний запуск тих же команд згенерує помилки типу «В БД вже існує роль LIBRAR».
Приклад створення ролі читача:
USE Demo_DataBase --зробити поточною БД Demo_DataBase EXEC sp_addrole 'READER'
Бібліотекар повинен мати права на читання, знищення, зміни, додавання до усіх таблиць БД Demo_DataBase, а також повинен мати можливість запускати на виконання процедури і функції БД Demo_DataBase. Тому ролі бібліотекаря із системних привілеїв призначаємо EXECUTE, а із привілеїв доступу до об’єктів призначаємо DELETE, INSERT, UPDATE, SELECT.
Читач повинен мати права на читання із таблиць ADMIN_BOOKS.AUTHORS, ADMIN_BOOKS.BOOKS, ADMIN_BOOKS.PUBLISHING_HOUSE. Тому ролі читача із привілеїв доступу до об’єктів призначаємо SELECT.
Оператор уявлення привілеїв
Синтаксис:
GRANT <привілеї>, ... ON < об’єкт >, …
TO <ім’я>
[WITH grant option];
Атрибут WITH GRANT OPTION дає право користувачу самому надавати права, які він отримав.
За допомогою оператора GRANT для кожного користувача формується список привілеїв, привілеї управляють роботою сервера даних з точки зору захисту даних. Виконанню кожної транзакції передує перевірка привілеїв користувача, сеанс якого породив транзакцію.
Приклад: GRANT select, update (Sales, num) ON Sales_data TO user1 WITH GRANT OPTION
Користувач, який надав привілеї іншому називається грантор (grantor — предоставитель). Привілеї надаються, якщо право на неї можна надати іншим користувачам.
PUBLIC — ім’я роли, яке отримує користувач при додаванні в список користувачів конкретної БД, що включає в себе мінімальний набір прав на читання даних із таблиць і уявлень в БД.
Роль бібліотекаря названа LIBRAR. Оператори призначення прав доступу для цієї ролі вказані нижче:
GRANT DELETE, INSERT, UPDATE, SELECT ON BOOKS TO LIBRAR GRANT DELETE, INSERT, UPDATE, SELECT ON AUTHORS TO LIBRAR GRANT DELETE, INSERT, UPDATE, SELECT ON DELIVERIES TO LIBRAR GRANT EXECUTE TO LIBRAR
Роль читача названа READER. Оператори призначення прав доступу для цієї ролі вказані нижче:
GRANT SELECT ON BOOKS TO READER GRANT SELECT ON AUTHORS TO READER
GRANT SELECT ON PUBLISHING_HOUSE TO READER
Створення користувачів з визначеною роллю Приклад створення бібліотекаря Ivanov_Lib і присвоєння йому ролі: EXEC sp_addlogin 'Ivanov_Lib','Ivanov', 'Demo_DataBase'
use Demo_DataBase
EXEC sp_adduser 'Ivanov_Lib','Ivanov_Lib' EXEC sp_addrolemember 'LIBRAR', 'Ivanov_Lib'
Приклад створення читача Petrov_Read і присвоєння ролі:
EXEC sp_addlogin 'Petrov_Read','Petrov', 'Demo_DataBase' use Demo_DataBase
EXEC sp_adduser 'Petrov_Read','Petrov_Read' EXEC sp_addrolemember 'READER', 'Petrov_Read'
Оператор відміни привілеїв Синтаксис відміни привілеїв:
REVOKE [with grant option]
< привілеї >,… ON < об’єкт >,…
FROM <ім’я_ користувача>;
Предложение with grant option зберігає за користувачем перераховані привілеї, але відміняє його право передавати їх кому-небудь іншому.
Приклад:
REVOKE SELECT ON AUTHORS FROM READER
Оператор изымания ролі у користувача:
Revoke <список ролей> from <список користувачів>.
Приклад:
use Demo_DataBase
EXEC sp_droprolemember 'READER', 'Petrov_Read'
Варіанти завдань до лабораторної роботи №4
Загальні положення
В утиліті SQL Server Management Studio виконати приклади, які дані по ходу роботи.
За індивідуальним варіантом бази даних, яка виконана в 1 лабораторній роботі по SQL Server, визначити 2-3 посадовця, які можуть працювати з таблицями БД. Для кожного посадовця визначити набір привілеїв, якими він може користуватися.
В утиліті SQL Server Management Studio створити під кожного посадовця відповідну роль, наділити цю роль відповідними привілеями. Далі створити по одному користувачу на кожну посаду і присвоїти їм відповідні ролі.
Зберегти послідовно оператори з вказаних завдань у файлі з назвою ПрізвищеСтудента_Лаб_4_№варіанта_загальне. Оператори створення ролей, привілеїв і користувачів зберегти у файлі з назвою ПрізвищеСтудента_Лаб_4_№варіанта.