Главная страница
Навигация по странице:

  • Режим перевірки автентичності Windows.

  • Комбінований режим перевірки автентичності (SQL Server і Windows).

  • GRANT

  • ALTER

  • INSERT

  • SELECT

  • Методичні вказівки до виконання лабораторних робіт Київ 2014 Зміст Лабораторна робота 1 Розробка програми розмежування повноважень користувачів на основі парольної автентифікації 3


    Скачать 1.3 Mb.
    НазваниеМетодичні вказівки до виконання лабораторних робіт Київ 2014 Зміст Лабораторна робота 1 Розробка програми розмежування повноважень користувачів на основі парольної автентифікації 3
    АнкорLaby_po_ZI.doc
    Дата11.08.2018
    Размер1.3 Mb.
    Формат файлаdoc
    Имя файлаLaby_po_ZI.doc
    ТипМетодичні вказівки
    #22806
    страница6 из 7
    1   2   3   4   5   6   7

    Лабораторна робота № 6 Механізми безпека баз даних



    Ціль заняття: Набуття навичок налаштування системи безпеки 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, виконавши такі дії:

    1. В меню Start (Пуск) виберіть All Programs,. Microsoft SQL Server 2008, SQL Server Management Studio (Всі програми, Microsoft SQL Server 2008, Середовище SQL Server Management Studio).

    2. В діалоговому вікні Connect To Server (З’єднання з сервером) нажміть кнопку Connect (З’єднати).

    3. В панелі Object Explorer (оглядач об'єктів) нажміть правою кнопкою мишки на значку екземпляра SQL Server і виберіть з контекстного меню пункт Properties (Властивості).

    4. В панелі Select A Page (Вибір сторінки) виділіть значок Security (Безпека).

    5. В секції 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.

    CREATE ROLE Auditors;

    GO

    • Додаємо користувача Peter до ролі Auditors

    EXECUTE sp_addrolemember "Auditors", "Peter";
    Надання повноважень на доступ до бази даних

    В якості альтернативи використання фіксованих ролей бази даних можна надавати дозволи користувачам і ролям бази даних. Дозволами можна керувати за допомогою інструкцій 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 об’єкт баз даних називається іменем, яке складається з чотирьох компонентів наступної структури:

    ....

    Схеми бази даних можна створювати за допомогою інструкції CREATE SCHEMA. Створивши схему, можна створювати об’єкти бази даних і назначати дозволи в межах однієї транзакції, яка визивається інструкцією CREATE SCHEMA.

    В наступному прикладі створюється схема з іменем Accounting, назначаючи користувача Peter власником схеми і створюється таблиця з іменем Invoices. В цьому прикладі також надається дозвіл select ролі бази даних public.

    • Змінюємо контекст з’єднання на базу даних AdventureWorks.

    USE AdventureWorks;

    GO

    • Створюємо схему Accounting з власником Peter.

    CREATE SCHEMA Accounting AUTHORIZATION Peter;

    GO

    • Створюємо таблицю Invoices в схемі Accounting.

    CREATE TABLE Accounting.Invoices (

    InvoiceID int,

    InvoiceDate smalldatetime,

    ClientID int);

    GO

    • Надаємо дозвіл SELECT на нову таблицю ролі public.

    GRANT SELECT ON Accounting.Invoices TO public;

    GO

    • Додаємо рядок даних в нову таблицю. Зверніть увагу на двохкомпонентне ім’я, яке ми використовуємо для звертання до таблиці в в поточній базі даних.

    INSERT INTO Accounting.Invoices

    VALUES (101,getdate(),102);

    Видалити схему можна за допомогою інструкції DROP SCHEMA. В SQL Server не допускається видалення схеми, якщо в схемі є об’єкти. Інформацію стосовно схем можна отримати, виконавши запит до представлення каталога sys.schemas. Наступний приклад виконує запит до представлення каталога sys.schemas, щоб торимати інформацію щодо схеми:

    SELECT *

    FROM sys.schemas;
    Керування доступом до таблиць і стовпців

    Таблиця і стовпці зберігають дані, які добувають і створюють додатки. Керуванням доступом до цих даних здійснюється через ієрархію дозволів SQL Server. Керувати цією ієрархією дозволів можна за допомогою інструкцій GRANT, DENY та REVOKE.

    GRANT. Дозволяє ролі або користувачу виконувати операції, що визначені в момент надання дозволу.

    DENY. Забороняє користувачу або ролі визначені дозволи і попереджає наслідування цих дозволів від інших ролей..

    REVOKE. Відкликає раніше заборонені або пнадання дозволи.

    Зміна прав доступу до таблиці

    Доступ до таблиці керується дійсними дозволами, які надані користувачу на дану таблицю. Доступом користувача до таблиці можна керувати за допомогою керуванням дозволами до таблиці. Дозволи, якими можна керувати:

    • ALTER - дозволяє змінювати властивості таблиці

    • CONTROL – надає дозволи, що аналогічні володінню

    • DELETE - дозволяє видаляти рядки з таблиці

    • INSERT - дозволяє додавати рядки в таблицю

    • REFERENCES – дозволяє посилатися на таблицю з зовнішнього ключа

    • SELECT – дозволяє здійснювати вибірку рядків з таблиці

    • TAKE OWNERSHIP – дозволяє присвоювання схеми або таблиці

    • UPDATE – дозволяє змінювати рядки в таблиці

    • VIEW DEFINITION - дозволяє доступ к метаданным таблицы

    Доступ користувачам бази даних і ролям можна надавати за допомогою інструкції GRANT. В наступному прикладі дозвіл SELECT, INSERT і UPDATE на таблицю Sales.Customer надаються користувачу Bill (код для управління доступом до таблиць в цьому і наступних розділах містить в файлах прикладів під іменем ManagingAccessToTables.sql.).

    • Змінюємо контекст з’єднання на базу даних AdventureWorks.

    USE AdventureWorks;

    GO

    • Надаємо користувачу Sara деякі дозволи на таблицю Sales.Customer table.

    GRANT SELECT,INSERT,UPDATE

    ON Sales.Customer TO Bill;
    Обмеження доступу до таблиці

    Якщо потрібно не допустити користувача до таблиці, то можна зітнутися з двома ситуаціями. Якщо ви до цього надавали користувачу дозвіл на цю таблицю, то для видалення раніше наданих дозволів потрібно скористуватися інструкцією REVOKE. Наприклад:

    • Змінюємо контекст з’єднання на базу даних AdventureWorks.

    USE AdventureWorks;

    GO

    • Відкликаємо дозвіл SELECT на таблицю Sales.Customer у Bill.

    REVOKE SELECT

    ON Sales.Customer TO Bill;

    Хоча користувач може зберегти відізваний дозвіл, якщо належить до ролі, якій це дозвіл надано. В цьому випадку необхідно використовувати інструкцію DENY, щоб заборонити доступ цьому користувачу. Наприклад:

    • Змінюємо контекст з’єднання на базу даних AdventureWorks.

    USE AdventureWorks;

    GO

    • Забороняємо користувачу Bill дозвіл DELETE на таблицю Sales.Customer езалежно від того, які дозволи цей користувач міг успадкувати від ролі.

    DENY DELETE

    ON Sales.Customer TO Bill;
    Надання доступі до окремих стовпчиків

    В SQL Server є можливість надати або відключити доступ до окремих стовпчиків, замість того, щоб працювати зі всією таблицею. Ця можливість надає гнучкість у прикриті доступу, наприклад, до конфіденційних даних в деяких стовпцях. Дозволи, якими можна керувати для стовпчиків у таблиці:

    • SELECT - дозволяє виконати вибірку з стовпців

    • UPDATE - дозволяє змінювати дані у стовпчику

    Доступ до окремих стовпців можна надати за допомогою інструкції GRANT. В наступному прикладі дозволи SELECT та UPDATE надаються користувачу Bill на стовпці Demographics та Modified Date таблиці Sales.Individual.

    • Змінюємо контекст з’єднання на базу даних AdventureWorks.

    USE AdventureWorks;

    GO

    • Надаємо дозвіл SELECT та UPDATE користувачу Bill на конкретні стовпці таблиці Sales.Individual

    GRANT SELECT,UPDATE (

    Demographics, ModifiedDate) ON Sales.Individual TO Bill;

    Криптографічний захист таблиць БД
    1   2   3   4   5   6   7


    написать администратору сайта