Система безпеки MS SQL Server


Система безпеки MS SQL Server

Середовище MS SQL Server надає безліч різних функцій для створення безпечних програм баз даних. У кожній версії MS SQL Server є свої засоби безпеки, як і в кожній версії Windows, при цьому можливості пізніших версій ширші, ніж ранні можливості. Важливо розуміти, що самі собою засоби безпеки не можуть гарантувати захист програми бази даних.


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

Крім стандартних для системи управління базами даних функцій, MS SQL Server містить великий набір інтегрованих служб аналізу даних. Доступ до даних, розміщених на MS SQL Server можуть отримати будь-які програми, розроблені за допомогою технології.Net та середовища розробки Visual Studio, а також програми пакета Microsoft Office 2007. Для конфігурування, управління та адміністрування всіх компонентів Microsoft SQL Server використовується інструментарій утиліти SQL Server Management Studio. У ній існує підтримка низки компонентів та засобів зі створення та управління базами даних, засобів аналітичної обробки даних (Analysis Services), засобів звітності (Reporting Services), а також безліч засобів, що спрощують розробку додатків.

Розділ 1. Загальні відомості про безпеку в SQL Server

1.1 Управління доступом до MS SQL Server

Будь-який екземпляр MS SQL Server може містити ієрархічну колекцію сутностей, починаючи з сервера. Кожен сервер складається з декількох баз даних, а кожна база даних - з колекції об'єктів, що захищаються. У кожного об'єкта MS SQL Server, що захищається, є пов'язані права доступу, які можуть надаватися учаснику, який є окремою особою, групою або процесом, що отримав доступ до MS SQL Server. Платформа безпеки MS SQL Server керує доступом до сутностей, що захищаються за допомогою перевірки автентичності та авторизації.

Рекомендовано використовувати автентифікацію Windows. При автентичності Windows використовується ряд зашифрованих повідомлень для автентифікації користувачів в MS SQL Server. А при використанні імен входу MS SQL Server імена входу та паролі MS SQL Server передаються через мережу, що робить їх менш захищеними.

При використанні автентичності Windows користувачі вже увійшли до Windows і їм не потрібно окремо входити ще SQL Server. Наступний рядок підключення SqlConnection.ConnectionString визначає автентифікацію Windows, не вимагаючи імені користувача або пароля.
"Server=MSSQL1;Database=AdventureWorks;Integrated Security=true;

При необхідності використовувати режим змішаної автентифікації слід створити імена входу SQL Server, які зберігаються в SQL Server. Потім ім'я користувача та пароль SQL Server потрібно буде вводити під час виконання.

1.2 Ролі сервера та ролі бази даних у MS SQL Server

1.2.1 Зумовлені ролі сервера

У всіх версіях MS SQL Server використовується безпека на основі ролей, що дає змогу призначати дозволи ролі або групі користувачів, а не окремим користувачам. Зумовлені ролі сервера та зумовлені ролі бази даних мають наперед визначений набір дозволів, призначених для них.
MS SQL Server надає дев'ять визначених ролей сервера. Дозволи, призначені зумовленим ролям сервера, неможливо змінити. Починаючи з MS SQL Server 2012, можна створювати власні ролі сервера і додавати дозволи на рівні сервера таким користувачам ролям.
Наведена нижче таблиця 1 демонструє всі дев'ять визначених серверних ролей.

Таблиця 1

Ім'я ролі рівня серверу

Опис

sysadmin

Члени певної ролі сервера sysadmin можуть виконувати будь-які дії на сервері.

serveradmin

Члени певної ролі сервера serveradmin можуть змінювати параметри конфігурації лише на рівні сервера, і навіть вимикати сервер.

securityadmin

Члени певної ролі сервера securityadmin управляють іменами входу та його властивостями. Вони можуть надавати, забороняти та скасовувати дозволи на рівні сервера (інструкції GRANT, DENY та REVOKE). Вони також можуть надавати, забороняти та скасовувати дозволи на рівні бази даних (інструкції GRANT, DENY та REVOKE) за наявності доступу до бази даних. Вони також можуть скидати паролі для імен входу SQL Server.

processadmin

Члени певної ролі сервера processadmin можуть завершувати процеси, що виконуються на екземплярі SQL Server.

setupadmin

Члени певної ролі сервера processadmin можуть завершувати процеси, що виконуються на екземплярі SQL Server.

bulkadmin

Члени певної ролі сервера bulkadmin можуть виконувати інструкцію BULK INSERT - імпорт файлу даних до таблиці або представлення бази даних

diskadmin

Визначена роль сервера diskadmin використовується для керування файлами на диску.

dbcreator

Члени певної ролі сервера dbcreator можуть створювати, змінювати, видаляти та відновлювати будь-які бази даних.
public Кожне ім'я входу SQL Server належить до ролі сервера public. Якщо для учасника на рівні сервера не були надані або заборонені конкретні дозволи на об'єкт, що захищається, то він успадковує дозволи ролі public на цей об'єкт. Дозволи ролі public слід призначати тільки об'єкту, який буде доступний всім користувачам. Не можна змінити членство у ролі public.

 

1.2.2 Зумовлені ролі бази даних

Для зручності керування дозволами в базах даних MS SQL Server надає кілька ролей, які є суб'єктами безпеки, які групують інших учасників. Вони подібні до груп в операційній системі Microsoft Windows. Дозволи ролей рівня бази даних поширюються всю базу даних.

У таблиці 2 представлені визначені ролі рівня бази даних та його можливості. Ці ролі існують у всіх базах даних.

Таблиця 2

Ім'я ролі рівня бази даних Опис

db_owner

Члени певної ролі бази даних db_owner можуть виконувати всі дії з настроювання та обслуговування бази даних, а також видаляти базу даних.

db_securityadmin

Елементи певної ролі бази даних db_securityadmin можуть змінювати членство в ролі та керувати дозволами. Додавання учасників до цієї ролі може призвести до ненавмисного підвищення прав доступу.

db_accessadmin

Члени певної ролі бази даних db_accessadmin можуть додавати або видаляти права віддаленого доступу до бази даних для імен входу та груп Windows, а також імен входу SQL Server.

db_backupoperator

Члени певної ролі бази даних db_backupoperator можуть створювати резервні копії бази даних.

db_ddladmin

Члени певної ролі бази даних db_ddladmin можуть виконувати будь-які команди мови визначення даних (DDL) у базі даних.

db_datawriter

Члени певної ролі бази даних db_datawriter можуть додавати, видаляти або змінювати дані у всіх таблицях користувача.

db_datareader

Елементи визначеної ролі бази даних db_datareader можуть зчитувати всі дані з усіх таблиць користувача.

db_denydatawriter

Члени певної ролі бази даних db_denydatawriter не можуть додавати, змінювати або видаляти дані в таблицях бази даних.

db_denydatareader

Члени визначеної ролі бази даних db_denydatareader не можуть зчитувати дані з таблиць бази даних користувача.

 

Крім того, існує також роль public, яка міститься в кожній базі даних, включаючи системні бази даних. Її не можна видалити, а також не можна додавати та видаляти користувачів із неї. Дозволи, надані ролі public, успадковуються рештою користувачів і ролями, оскільки вони належать до ролі public за умовчанням. Слід надавати ролі public лише дозволи, необхідні всім користувачів.
dbo, або власник бази даних, є обліковий запис користувача, який має неявно задані дозволи на виконання будь-яких дій з базою даних. Члени певної ролі сервера sysadmin автоматично порівнюються з dbo.
Обліковий запис guest є вбудованим обліковим записом у всіх версіях SQL Server. За замовчуванням обліковий запис guest у нових базах даних вимкнено. Якщо вона увімкнена, її можна вимкнути шляхом скасування дозволу CONNECT, виконавши інструкцію REVOKE CONNECT FROM GUEST мови Transact-SQL.

Розділ 2. Шифрування даних у MS SQL Server

2.1 Ієрархія засобів шифрування


MS SQL Server шифрує дані, використовуючи ієрархічну структуру засобів шифрування та управління ключами. На кожному рівні дані нижчого рівня шифруються на основі комбінації сертифікатів, асиметричних ключів та симетричних ключів. Асиметричні та симетричні ключі можна зберігати поза модулем розширеного керування ключами MS SQL Server.

На кожному рівні ієрархії засобів шифрування шифруються дані нижчого рівня і відображаються найбільш поширені конфігурації шифрування. Доступ до початку ієрархії зазвичай захищається паролем.

Слід враховувати такі основні поняття.

Симетричні та асиметричні ключі в модулі розширеного керування ключами захищають доступ до симетричних та асиметричних ключів, що зберігаються в SQL Server. Пунктирна лінія, пов'язана з модулем розширеного керування ключами, вказує, що ключі в цьому модулі можуть замінювати симетричні та асиметричні ключі, що зберігаються у MS SQL Server.

 2.2 Механізми шифрування даних

MS SQL Server підтримує такі механізми шифрування:

Сертифікат відкритого ключа або просто сертифікат являє собою підписану цифровим підписом інструкцію, яка пов'язує значення відкритого ключа з ідентифікатором користувача, пристрою або служби, що має відповідний закритий ключ. Сертифікати поставляються та підписуються центром сертифікації (certification authority, CA).
Як правило, сертифікати містять такі відомості.

  1. Відкритий ключ суб'єкта.
  2. Ідентифікаційні дані суб'єкта, наприклад, ім'я та адреса електронної пошти.
  3. Термін дії, тобто інтервал часу, протягом якого сертифікат вважатиметься дійсним.
  4. Ідентифікаційні дані постачальника сертифіката.
  5. Цифровий підпис постачальника

Цей підпис підтверджує дійсність зв'язку між відкритим ключем та ідентифікаційними даними суб'єкта.(У процесі створення цифрового підпису дані, разом із деякими секретними даними відправника, перетворюються на тег, званий підписом.)

• прозоре шифрування даних

Прозоре шифрування даних (TDE) є спеціальним випадком шифрування з допомогою симетричного ключа. TDE шифрує всю базу даних, використовуючи симетричний ключ, який називається ключем шифрування бази даних. Ключ шифрування бази даних захищений іншими ключами або сертифікатами, які у свою чергу захищаються головним ключем бази даних або асиметричним ключем, що зберігається в модулі розширеного керування ключами.

 

Розділ 3. Підсистема аудиту MS SQL Server

Підсистема аудиту - це функція, яка з'явилася у версії MS SQL Server 2008, що дозволяє перевіряти події ядра бази даних та настроювати параметри перевірки. Для запису аудиту використовуються розширені події. У підсистемі є засоби та процеси, які необхідні для того, щоб проводити, зберігати та переглядати конфігурації аудиту для різних серверів та об'єктів баз даних.

Підсистема аудиту SQL Server працює швидше, ніж функція трасування, а середовище SQL Server Management Studio спрощує створення та контроль журналів аудиту. Тепер можна проводити докладніші перевірки: відстежувати інструкції SELECT, INSERT, UPDATE, DELETE, REFERENCES та EXECUTE для окремих користувачів. Більше того, підсистема аудиту повністю підтримує інструкції T-SQL CREATE SERVER AUDIT та CREATE SERVER AUDIT SPECIFICATION, а також пов'язані з ними інструкції ALTER та DROP.

Для налаштування аудиту необхідно створити і вказати місце запису подій. Аудит може зберігатися в журналі безпеки Windows, журналі програм Windows або будь-якому файлі. Ви привласнюєте аудиту ім'я та налаштовуєте його характеристики, зокрема шлях до файлу аудиту та його максимальний розмір. Також можна настроїти аудит так, щоб у разі збою перевірки робота SQL Server завершувалася. Якщо запис аудиту потрібно записувати в кілька журналів, створюється кілька аудитів.
Наступний етап – створення специфікацій аудиту.У специфікації аудиту сервера збирається інформація про примірник SQL Server; до неї включаються об'єкти, які стосуються серверу: дані облікових записів, членство в серверних ролях. Там є інформація про базі даних, контрольована в основній базі даних, наприклад, відомості про права доступу до бази. При створенні специфікації аудиту ви вказуєте, в який аудит надходитимуть події, що спостерігаються. Ви можете створити кілька аудитів сервера та кілька специфікацій аудиту, але аудит може мати лише одну активну специфікацію в кожний момент часу.

Також можна створити специфікації аудиту бази даних: вони будуть використовуватись для відстеження подій окремою базою даних. До аудиту можна додати кілька специфікацій аудиту баз даних, але в кожному аудиті сервера активною може бути лише одна специфікація аудиту баз даних.
Події підсистеми аудиту SQL Server, які використовуються у специфікаціях аудиту сервера, об'єднуються в колекції пов'язаних подій. Вони надаються як групи дій аудиту. Якщо таку групу додати до специфікації аудиту, можна буде прослідковувати події, включені до групи. Наприклад, існує група процесів аудиту DBCC_GROUP, що надає доступ до команд DBCC. Окремо команди DBCC включатися в аудит не можуть.
Усього існує 35 груп дій аудиту сервера, причому деякі тісно пов'язані друг з одним.

У специфікаціях аудиту баз даних також можна вказувати групи подій аудиту, зібрані в групи дій аудиту на рівні баз даних. Крім груп дій аудиту, специфікації аудиту баз даних можуть включати окремі події аудиту, що дозволяють перевіряти інструкції, що відповідають за роботу з даними. Ці події можна настроїти таким чином, щоб відстежувати всю базу даних або лише певні об'єкти. Дія SELECT, зокрема, може бути використана для перевірки запитів SELECT, звернених як до окремої таблиці, так і до всієї схеми в цілому. Крім того, такі події можна налаштувати так, щоб прослідковувати дії за окремими користувачами або ролями, наприклад db_writers.
Скажімо, дію SELECT можна використовувати для перевірки запитів SELECT, звернених до окремої таблиці, джерелом яких є користувач Mary, роль FINANCE_DEPT, або роль бази даних Public. Не можна не відзначити, що це надає найширші можливості контролю та дає великий запас гнучкості при налаштуванні аудиту.

Розділ 4. Загрози та вразливості MS SQL Server

Хоча SQL Server включає різноманітні механізми захисту, кожна система містить функції, якими можна скористатися для шкідливих цілей. Кожен компонент, який відкриває доступ до будь-яких даних, може бути джерелом небезпеки під час неправильної реалізації.
Кожен компонент може становити ризик, але не всі загрози є рівнозначними. Для деяких потрібно змінити методи застосування, для інших параметри, для третіх програмний код. У наступній таблиці пояснюються небезпеки та запобіжні кроки, які зменшують ризик.
Загрози, яким схильна сама платформа, наведено у таблиці 3.

Таблиця 3
Загроза чи вразливість Визначення
Система не оновлена ​​(не застосовані оновлення програмних продуктів) Корпорація Майкрософт випускає оновлення програмних продуктів, щоб підвищити безпеку SQL Server. Якщо не відстежувати та не застосовувати ці оновлення програмних продуктів, система виявляється більш вразливою для атаки.
Атаки на мережеві порти Мережа — основний канал доступу під час атак на SQL Server. Відкриті стандартні порти в Інтернеті можуть спричинити атаку.
Неприпустимі параметри облікового запису служби Облікові записи служб SQL Server часто надають більше прав доступу до платформи або мережі, ніж необхідно.
Занадто велика контактна зона Функції та можливості SQL Server можуть бути доступні, коли вони не потребують.
Включені непотрібні процедури, що зберігаються  

Перелік програмних загроз та вразливостей представлений у таблиці 4.

Таблиця 4
Загроза чи вразливість Визначення

Атака SQL Injection

Впровадження шкідливого запиту у правильний запит.

Вбудовані паролі

Деякі програми зберігають рядки з'єднання у файлах програми або конфігурації.

Загрози та вразливість доступу до даних представлені в таблиці 5.

Таблиця 5

Загроза або вразливість

Визначення

Неправильно застосований алгоритм шифрування

Шифрування заплутує дані або інформацію про з'єднання SQL Server. Відсутність шифрування, коли вона потрібна, або використання шифрування, коли не потрібно, призводить до зайвого ризику та ускладнення.

Неправильно застосовані сертифікати

Сертифікати є механізмами для автентифікації.SQL Server сертифікати можуть використовуватися для багатьох різних цілей, від з'єднань до даних. Неправильне використання самостійної сертифікації та невиправдано збільшені періоди перевірки знижують загальну надійність захисту.

Не створено резервні копії ключів SQL Server

Екземпляр SQL Server і бази даних, що містяться в ньому, можуть мати ключі, які використовуються в різних захисних цілях. Зокрема для шифрування.

 

Розділ 5. Резервне копіювання та відновлення баз даних Microsoft SQL Server

5.1 Загальні відомості про компонент резервного копіювання та відновлення MS SQL Server

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

Стратегія резервування та відновлення складається з частини, що відноситься до резервування, та частини, що відноситься до відновлення. Частина, що стосується резервування, визначає тип і частоту створення резервних копій, тип і швидкісні характеристики обладнання, необхідного для їх створення, спосіб перевірки резервних копій, а також місце знаходження та тип носія резервних копій (включаючи питання безпеки). Частина, що стосується відновлення, визначає відповідального за проведення операцій відновлення, а також методи їх проведення, що дозволяють задовольнити вимоги користувачів щодо доступності даних та мінімізації їх втрат. Рекомендується документувати процедури резервування та відновлення та зберігати копію цієї документації в документації за завданням.

5.2 Служба сховищ великих двійкових об'єктів Windows Azure

У пакеті оновлень SQL Server 2012 1 (SP1) з'явилася функція, що дозволяє виконувати резервне копіювання та відновлення SQL Server за допомогою служби сховищ великих двійкових об'єктів Windows Azure. Цю функцію можна використовувати для резервного копіювання SQL Server локального екземпляра бази даних або екземпляра SQL Server, розміщеного де-небудь, наприклад, на віртуальній машині Windows Azure. Резервне копіювання у хмару дає такі переваги, як доступність, безлімітне віддалене зберігання та простота міграції даних у хмару та назад. У цій версії можна виконувати інструкції BACKUP та RESTORE.
Переваги використання служби сховища великих двійкових об'єктів Windows Azure для резервного копіювання: javascript: void (0)

Крім того, файл резервної копії, який зберігається у службі сховища великих двійкових об'єктів Windows Azure, безпосередньо доступний у локальній службі SQL Server або віддаленій службі SQL Server у віртуальній машині Windows Azure. Приєднання та від'єднання бази даних, а також завантаження та підключення віртуального жорсткого диска не потрібне.

Висновок

Забезпечення безпеки MS SQL Server можна представити як послідовність кроків у чотирьох областях: платформа, автентифікація, об'єкти (в тому числі дані) та програми, які звертаються до системи.

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

В останніх версіях MS SQL Server з'явилися нові можливості шифрування та автентифікації. Нова підсистема аудиту та управління на основі політик, реалізована в MS SQL Server 2008, дають засоби, що дозволяють контролювати дотримання встановлених норм безпеки. Крім того, MS SQL Server забезпечує управління доступом користувачів, що дає змогу розподіляти права доступу між учасниками або групами учасників. На додаток, у версії MS SQL Server 2012 року з'явилася функція резервного копіювання за допомогою служби сховищ великих двійкових об'єктів Windows Azure, що забезпечує доступне та безлімітне зберігання даних у хмарі.