Методичні вказівки до виконання лабораторних робіт Київ 2014 Зміст Лабораторна робота 1 Розробка програми розмежування повноважень користувачів на основі парольної автентифікації 3
Ціль заняття: Набуття навичок налаштування системи безпеки MS SQL Server.
Результат заняття: Створення користувача, розмежування прав доступу.
Теоретичні відомості.
Захист баз даних в Microsoft SQL Server
Забезпечення безпеки – важливий компонент більшості додатків баз даних, тому не потрібно думати, що в процесі розробки цим можна зайнятись в останню чергу. Кожен елемент додатку баз даних варто розробляти з урахуванням вимог забезпечення безпеки.
Керування доступом до екземплярів SQL Server
Встановлюючи з’єднання з екземпляром SQL Server, ви маєте пред’явити коректну інформацію для перевірки автентичності. Ядро бази даних виконує двохфазний процес автентифікації. Спочатку перевіряється, чи співставлене дане ім’я користувацькому запису, яка має дозвіл на підключення до екземпляра SQL Server. Далі ядро бази перевіряє, чи має даний обліковий запис дозвіл на доступ до тієї бази, до якої намагається він підключитися.
Вибір режима автентифікації
При виборі режиму перевірки автентичності рекомендується слідувати наведеним рекомендаціям:
Режим перевірки автентичності Windows. В цьому режимі SQL Server при перевірці автентичності користувача, що запитує доступ до екземпляра SQL Server, розраховує на операційну систему. Користувачу не потрібно надавати які-небудь облікові дані в рядку підключення, оскільки він вже автентифікований в ОС.
Комбінований режим перевірки автентичності (SQL Server і Windows). В цьому режимі користувач може підключитись до SQL Server з використанням режиму перевірки автентичності або Windows, або SQL Server. В останьому випадку SQL Server перевіряє облікові дані користувача на відповідність дійсним іменам входа SQL Server. При використані режиму перевірки автентичності SQL Server користувач має вказати в рядку з’єднання ім’я користувача і пароль для доступу до SQL Server.
Режим перевірки автентичності можна налаштувати через SQL Server Management Studio, виконавши такі дії:
В меню Start (Пуск) виберіть All Programs,. Microsoft SQL Server 2008, SQL Server Management Studio (Всі програми, Microsoft SQL Server 2008, Середовище SQL Server Management Studio).
В діалоговому вікні Connect To Server (З’єднання з сервером) нажміть кнопку Connect (З’єднати).
В панелі Object Explorer (оглядач об'єктів) нажміть правою кнопкою мишки на значку екземпляра SQL Server і виберіть з контекстного меню пункт Properties (Властивості).
В панелі Select A Page (Вибір сторінки) виділіть значок Security (Безпека).
В секції Server Authentication (Серверна перевірка автентичності) виберіть потрібний режим перевірки автентичності.
Важливо. Для того, щоб зміна режиму перевірки автентичності вступила в дію потрібно перевантажити екземпляр SQL Server.
З’єднання з екземпляром SQL Server
Надання доступу користувачам і групам Windows
Можна дозволити користувачам ОС встановлювати з’єднання з сервером SQL Server шляхом сворення імені входу для користувача чи групи Windows. За умовчанням, доступ до SQL Server наданий тільки членам локальної групи адміністраторів Windows та обліковому записові служби, що запускає служби SQL.
Доступ до екземпляра SQL Server можна надати, створивши ім’я входу або шляхом безпосереднього введення команд SQL, або через інтерфейс SQL Server Management Studio. Наступний код надає доступ до екземпляра SQL Server користувачу домена Windows ADWORKS\jlucas:
CREATE LOGIN [ADVWORKS\jlucas] FROM WINDOWS;
При підключені до SQL Server з використанням імені входу Windows, SQL Server довіряє ОС щодо перевірки автентичності і тільки перевіряє чи має користувач Windows відповідне ім’я входу, яке визначено в цьому екземплярі сервера SQL Server, або чи належить це ім’я входу групі Windows з відповідним іменем входу в цей екземпляр SQL Server. З’єднання, що використовує ім’я входу Windows, називається довірчим.
Надання доступу іменам входу SQL Server
В режимі перевірки автентичності Windows та SQL Server також можна створити імена входу SQL Server і керувати ними. При створені імені входу SQL Server необхідно задати для цього імені входу пароль. Користувачі мають вказувати пароль при з’єднанні з екземпляром SQL Server. При створені імені входу SQL Server можна задати для нього ім’я бази даних і мову за умовчанням.
Доступ до екземпляра SQL Server можна надати, створивши ім’я входу SQL Server або шляхом безпосереднього введення команд SQL, або через інтерфейс SQL Server Management Studio. В наступному прикладі створюємо ім’я входу SQL Server "Mary" і назначаємо для користувача Mary базу даних Adventure Works вякості бази даних за умовчанням.
CREATE LOGIN Mary
WITH PASSWORD = '34TY$$543',
DEFAULT_DATABASE =AdventureWorks;
В процесі інсталяції SQL Server створюється одне ім’я входу SQL Server - sa. Ім’я входу sa створюється у будь-якому випадку, навіть якщо ви вибрали в процесі інсталяції режим перевірки автентичності Windows.
Права доступу до екземпляра SQL Server
Для розмежування доступу SQL Server надаються серверні ролі:
bulkadmin – може виконувати вираз BULK INSERT
dbcreator – може створювати, змінювати, видаляти і відновлювати бази даних
diskadmin – може управляти файлами на диску
processadmin – може завершати процеси
securityadmin – може керувати іменами входу і назначати дозвіл
serveradmin – може змінювати параметри сервера і завершати роботу сервера
setupadmin – може керувати зв’язаними серверами і виконувати системні збережені процедури
sysadmin – може виконувати на сервері будь-які дії
Додавання імені входу до серверної ролі. Додати ім’я входу до існуючої серверної ролі можна за допомогою системної збереженої функції sp_addsrvrolemember. Наступний приклад додає Mary до системної ролі sysadmin:
EXECUTE sp_addsrvrolemember "Mary", "sysadmin"; Надання доступу до баз даних
Всі імена входу, за виключенням серверної ролі sysadmin, мають бути співставленні користувачам баз даних, які, в свою чергу, співставленні базі даних, до якої їм потрібен доступ. Члени ролі sysadmin співставленні користувачу dbo у всіх базах сервера.
Додати користувача бази даних можна за допомогою інструкції CREATE USER. Наступний приклад коду T-SQL створює ім’я входу Peter і співставленого з ним користувача в базі даних Adventure Works:
Створюємо ім’я входу Peter
CREATE LOGIN Peter WITH PASSWORD='Tyu87IOR0';
Змінюємо контекст з’єднання на базу даних AdventureWorks.
USE AdventureWorks;
GO
Додаємо користувача бази даних Peter, який співставлений імені входу Peter в БД AdventureWorks.
CREATE USER Peter FOR LOGIN Peter;
Керування користувачами бази даних
Перевірити чи має поточне ім’я входу доступ до бази даних можна за допомогою наступної інструкції:
SELECT HAS_DBACCESS("AdventureWorks");
Якщо необхідно тимчасово вимкнути доступ користувачу до бази даних, можна відізвати дозвіл CONNECTдля цього користувача. Наступний приклад відзиває дозвіл CONNECT для користувача Peter:
Змінюємо контекст з’єднання на базу даних AdventureWorks.
USE AdventureWorks;
GO
Відзиваємо дозвіл connect для Peter on the database AdventureWorks.
REVOKE CONNECT TO Peter;
Видалити користувача в базі даних можна за допомогою інструкції DROP USER.
Надання дозволу на базу даних
Створивши користувачів бази даних, необхідно керувати дозволами для цих користувачів. Це можна здійснити шляхом додавання користувачів в ролі бази даних або надавши самим користувачам відповідний дозвіл.
Створення ролі бази даних
Ролі бази даних можна використовувати для призначення дозволів бази даних в групі користувачів. В SQL Server за умовчанням створюється набір ролей бази даних:
db_accessadmin – може керувати доступом до бази даних
db_backupoperator – може виконувати резервне копіювання бази даних
db_datareader – може читати дані з таблиць всіх користувачів
db_datawriter – може добавляти, видаляти і оновлювати дані в таблицях всіх користувачів
db_ddladmin – може виконувати будь0які команди DDL в базі даних
db_denydatareader – не може читати будь-які дані в таблицях користуваічв
db_denydatawriter – не може добавляти, видаляти і оновлювати будь-які дані в таблицях користувачів
db_owner – може виконувати всі дії стосовно налаштування конфігурації та обслуговування
db_securityadmin – може змінювати членство в ролях бази даних і керувати дозволами
public – Особлива роль бази даних. Всі користувачі належать до ролі puplic. Користувачів з групи public неможна видалити.
Можна додавати ролі бази даних, якщо потрібно згрупувати користувачів у відповідності до вимог визначених дозволів. Наступний приклад коду створює роль бази даних з іменем Auditors і додає користувача Peter в цю нову роль.
Змінюємо контекст з’єднання на базу даних AdventureWorks.
USE AdventureWorks;
GO
Створюємо роль Auditors в базі даних AdventureWorks.
В якості альтернативи використання фіксованих ролей бази даних можна надавати дозволи користувачам і ролям бази даних. Дозволами можна керувати за допомогою інструкцій GRANT, DENY і REVOKE. В наступному прикладі ми надаємо дозвіл BACKUP DATABASE користувачу Peter:
Змінюємо контекст з’єднання на базу даних AdventureWorks.
USE AdventureWorks;
GO
Надаємо дозвіл користувачу бази даних Peter на резервне копіювання бази даних AdventureWorks.
GRANT BACKUP DATABASE TO Peter;
Коли ви використовуєте інструкцію DENY для видалення дозволу для користувача, цей користувач не може успадкувати той же самий дозвіл, якщо являється членом ролі бази даних, яка має цей дозвіл. Але якщо для видалення дозволу ви скористаєтесь інструкцією REVOKE, то користувач зможе успадкувати той самий дозвіл, якщо являється членом ролі бази даних, якій цей дозвіл вже надано. Використовуйте інструкцію REVOKE тільки для видалення дозволу, який було надано раніше.
Керування доступом до схем
В SQL Server починаючи з версії 2005 реалізована концепція ANSI для схем. Схеми – це контейнери об’єктів, які дозволяють згруповувати об’єкти баз даних. Схеми мають великий вплив на те, як користувачі посилаються на об’єкти баз даних. В SQL Server об’єкт баз даних називається іменем, яке складається з чотирьох компонентів наступної структури: