Безпека сервера

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

SQL Server зберігає всю інформацію про реєстраційні записах в базі даних master

Режими аутентифікації в SQL Server

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

■ У режимі аутентифікації Windows SQL Server повністю довіряє аутентифікацію операційній системі

■ У змішаному режимі аутентифікація Windows і самого сервера співіснують незалежно один від одного

Встановлений при інсталяції режим аутентифікації можна змінити на сторінці Security діалогового вікна SQL Server Properties в утиліті Management Studio (рис 402)

У програмному коді встановлений режим аутентифікації можна перевірити за допомогою системної збереженої процедури xp_loginconf ig наступним чином:

Ехес xp_loginconfig login mode

Ось приклад результату цієї процедури: name config_value

login mode Mixed

Рис 402 Система безпеки рівня сервера конфігурується у вкладці Security діаюгового вікна SQL Server Properties

Зверніть увагу на те, що збережена процедура, що виводить звіт про встановлений режим аутентифікації, є розширеною Це повязано з тим, що режим аутентифікації зберігається в реєстрі Windows в наступному ключі: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \

MicrosoftSQhServer \ <імя_екзeмпляpa> \ MSSQhServer \ hoginMode

Значенням цього ключа є 0 для режиму аутентифікації Windows і 1 – для змішаного режиму

Встановити режим аутентифікації можна або в Management Studio, або за допомогою редактора реєстру Windows regedit ехе

Аутентифікація Windows

Аутентифікація Windows має переваги перед змішаним режимом, тому що користувачеві не доводиться запамятовувати ще один пароль Це робить систему безпеки мережі більш універсальною

Використання аутентифікації Windows означає, що користувачеві для доступу до SQL Server досить мати обліковий запис Windows Ідентифікатор безпеки Windows (SID) передається з операційної системи на сервер баз даних

Аутентифікація Windows дуже стійка – вона розпізнає не тільки користувачів Windows, але і їх групи

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

SQL Server також відомо істинне імя користувача Windows, внаслідок чого додаток може виконувати аудит на рівні користувачів, а також на рівні груп

Якщо користувачі Windows вже організовані в групи по функції або рівнем доступу, то використання цих груп як користувачів SQL Server підвищує цілісність системи і знижує витрати на її адміністрування

Створення нового облікового запису Windows

У різних версіях Windows користувачі та групи створюються і управляються різним чином У класичному поданні Windows ХР для управління користувачами потрібно вибрати в системному меню Start пункт Control Panels Administrative Tools ^ Computer Management (рис 403)

Puc 403 Облікові записи користувачів Windows створюються і призначаються групам за допомогою консолі Computer Management

Якщо обліковий запис користувача вже існує в списку користувачів компютера або домену Windows, то SQL Server може його розпізнати Щоб додати новий обліковий запис для SQL Server за допомогою Object Explorer, виконайте такі дії

1 Відкрийте вузол Security ^ Logins сервера і виберіть у контекстному меню пункт New Login

2 На сторінці General діалогового вікна Login-New (рис 404) за допомогою кнопки Search знайдіть користувача Windows

3 Ви також маєте можливість ввести імя користувача або групи вручну або скористатися кнопкою Advanced для виконання розширеного пошуку

Користувачеві може бути призначена база даних, до якої він підключається за замовчуванням Її імя вибирається в списку Default Database в нижній частині вікна Слід зазначити, що призначення бази даних за замовчуванням ніяк не повязано з призначенням для доступу до неї певних прав Права доступу до баз даних призначаються у вкладці Database Access (Про доступ до баз даних ми поговоримо в наступному розділі)

Puc 404 Сторінка General діалогового вікна Login-New використовується для створення і редагування реєстраційного запису користувача на рівні сервера

Для створення облікового запису користувача або групи Windows в SQL Server в програмному коді використовується системна збережена процедура sp_grantlogin Обовязково передавайте їй як аргумент повне імя користувача, що включає імя домену, як у наступному прикладі:

Ехес sp_grantlogin XPS \ Den

Для перегляду облікових записів Windows з програмного коду виконайте запит до подання каталогу sysserver_principals

Вікно Login-New також використовується для управління існуючими користувачами Для відкриття версії цього вікна, регулюючого дозволу існуючого користувача, двічі клацніть на його імені у вузлі Security ^ Logins або клацніть правою кнопкою миші і виберіть у контекстному меню пункт Properties

Видалення облікового запису Windows

Видалення облікового запису Windows з SQL Server досить просто виконується в Management Studio Виберіть цей обліковий запис в Object Browser і за допомогою контекстного меню видаліть її (тобто виконайте команду Delete)

Для видалення облікового запису або групи Windows з SQL Server програмним шляхом використовується системна збережена процедура sp_revokelogin:

Ехес sp_revokelogin XPS \ Den

Зрозуміло, ця операція не видаляє цей обліковий запис з операційної системи – тільки з сервера баз даних

Заборона облікового запису Windows

За допомогою системної збереженої процедури sp_denylogin доступ будь-якого користувача в SQL Server може бути закритий Це повністю забороняє доступ користувача до SQL Server, навіть якщо він відкритий за допомогою іншого методу Якщо задана в аргументі група або користувач не існує в SQL Server, то спочатку створюється такий запис, а потім їй забороняється доступ:

Ехес sp_denylogin XPS \ Den

Для прикладу припустимо, що групі Accounting відкритий доступ до сервера, а групі Probation – закритий Нехай якийсь Den є членом обох цих груп У даній ситуації заборона йому доступу до групи Probation анулює також і можливість його доступу до сервера як члена групи Accounting, так як операція deny має перевагу над grant

Для відновлення доступу після його заборони потрібно надати доступ за допомогою збереженої процедури sp_grant login

Відкликати доступ можна тільки програмним шляхом за допомогою Т-SQL Ця функція не підтримується Management Studio

Установка бази даних за замовчуванням

Установка бази даних, використовуваної за замовчуванням, виконується в розділі Login Properties сторінки General У програмному коді для цього використовується системна збережена процедура sp_def aultdb:

Ехес sp_defaultdb Sam, OBXKites1

“Осиротілі користувачі Windows

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

Системна збережена процедура sp_validatelogins дозволяє знайти осиротілих користувачів і повертає їх ідентифікатори системи безпеки Windows NT і імена облікових записів У наступному прикладі користувачеві Den був відкритий доступ до SQL Server, після чого його обліковий запис була видалена з Windows:

Ехес sp_validatelogins

SID                                                                                            NT Login

0x01050000000000051500000 0 FCE 31531A9 31            XPS\Joe

Це не можна вважати проломом в системі безпеки Не маючи облікового запису Windows з таким ідентифікатором, користувач не зможе підключитися до SQL Server

Для вирішення проблеми осиротілих користувачів можна використовувати наступну процедуру

1 Відкличте права доступу користувача до всіх баз даних за допомогою збереженої процедури sp_revokedbaccess

2 Відкличте право доступу даного користувача до сервера за допомогою sp_revokelogin

3 Створіть для користувача новий обліковий запис

Делегування повноважень

У корпоративній мережі з безліччю серверів баз даних і IIS можуть виникнути проблеми підключення до сервера, повязані з тим, що користувач намагається підключитися до одного з них, а той, у свою чергу, намагається підключитися до іншого Причиною цієї проблеми може бути те, що між цими серверами відсутні довірчі відносини При роботі з внутрішніми серверами компанії цю проблему вирішити просто Набагато складніше справа йде, коли один з серверів знаходиться в демілітаризованій зоні Інтернету (DMZ), та адміністратору мережі не з руки відкривати додаткову пролом в системі безпеки локальної мережі

Делегування повноважень є функцію SQL Server 2005, яка для передачі профілів безпеки між повязаними серверами використовує протокол Kerberos

Наприклад, користувач може отримати доступ до сервера IIS, який, у свою чергу, може отримати доступ до SQL Server, і останній побачить імя користувача, навіть незважаючи на те, що запит на підключення надійшов не від нього, а від сервера IIS

Для забезпечення працездатності протоколу Kerberos необхідно виконання ряду умов

■ На всіх серверах повинна бути запущена операційна система Windows 2000 або більш пізня, до того ж в домені або довірчому дереві повинна бути встановлена ​​служба активних каталогів

■ У облікового запису користувача не повинен бути встановлений параметр заборони делегування повноважень (Account is sensitive and cannot be delegated)

■ У облікового запису служби SQL Server повинен бути встановлений параметр довіри до делегування повноважень (Account is trusted for delegation)

■ На сервері, на якому запускається SQL Server, також повинен бути встановлений параметр довіри до делегування повноважень (Computer is trusted for delegation)

■ Примірник SQL Server повинен мати строге імя служби (SPN), створене за допомогою утиліти setspn ехе, доступної в Windows 2000 Resource Kit

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

Реєстраційні записи SQL Server

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

При впровадженні реєстраційних записів SQL Server (тобто змішаного режиму новинка аутентифікації) автоматично створюється користувач sa, що є чле-

2005 ном фіксованою серверної ролі sysadmin і має всі права доступу до

серверу Найчастіше йому забувають присвоїти пароль, і ці ворота в системі безпеки відкривають шлях до сервера будь зломщикові Як правило, наявність такої проломи хакери перевіряють в першу чергу Виходячи з цього, перш за все потрібно відключити користувача sa і призначити адміністративної ролі sysadmin якогось іншого користувача (або створити додаткові ролі з адміністративними привілеями)

Для управління користувачами SQL Server в Management Studio використовується той же діалогове вікно Login-New, що і для управління користувачами Windows, проте в даному випадку вибирається режим SQL Server Authentication

У програмному коді для цього використовується системна збережена процедура sp_addlogin Так як в даному випадку потрібно налаштування користувача, а не просто вибір його із списку, дана задача більш складна, ніж виконання процедури sp_grantlogin Серед переданих процедурі аргументів обовязковим є тільки імя реєстраційного запису

sp_addlogin імя, пароль, база_по_умолчанію,

‘Язик_по_умолчанію, идентификатор_пользователя_сервера,

‘Параметр_шіфрованія1

Наприклад, наступний програмний код створює користувача SQL Server з імям Den і призначає йому в якості бази даних за замовчуванням навчальну базу OBXKites:

EXEC sp_addlogin Den, myoldpassword, OBXKites

Параметр шифрування skip_encryption вказує серверу зберігати пароль в системній таблиці sysxlogins без жодного шифрування Водночас SQL Server очікує, що пароль обовязково буде зашифрований, тому він не розпізнає створений таким чином пароль Уникайте використання цього параметра

Ідентифікатор користувача сервера (SED) – це 85-бітове двійкове значення, яке SQL Server використовує для ідентифікації користувача Якщо деякий користувач створюється на двох серверах як один і той же, то для другого сервера слід явно задати ідентифікатор SED, присвоєний першим сервером Для отримання ідентифікатора SID використовується представлення каталогу sysserver ^ principals:

SELECT Name, SID

FROM sysserver_principals WHERE Name = Den

Name SID

Den    0xlEFDC478DEB52 045B52D241B3 3B2CD7E

Оновлення пароля

Пароль може бути змінений за допомогою системної збереженої процедури sp_pas sword, наприклад:

EXEC sp_password myoldpassword, mynewpassword, Den

Якщо пароль порожній, то в збережену процедуру замість порожнього рядка (‘) передається ключове слово NULL

Видалення реєстраційного запису

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

EXEC sp_droplogin Joe

Видалення облікового запису призводить до видалення і всіх її настройок безпеки

Установка бази даних, використовуваної за замовчуванням

База даних, що використовується за умовчанням, задається на сторінці General діалогового вікна Login Properties так само, як і для користувача Windows У програмному коді для цього використовується системна збережена процедура sp_def aultdb:

EXEC sp_defaultdb Den, OBXKites

Серверні ролі

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

Наступні ролі найкраще використовувати для виконання конкретних завдань адміністрування

■ Члени ролі Bulk admin можуть виконувати операції масової вставки

■ Члени ролі Dbcreators можуть створювати, змінювати, видаляти і відновлювати бази даних

■ Члени ролі Diskadmin можуть створювати, змінювати і видаляти файли на диску

■ Члени ролі Processadmin можуть переривати запущений процес SQL Server

■ Члени ролі Securityadmin можуть управляти реєстраційними записами сервера

■ Члени ролі Serveradmin можуть конфігурувати параметри сервера, включаючи налаштування повнотекстового пошуку і останов сервера

■ Члени ролі Setupadmin можуть конфігурувати повязані сервери, розширені процедури та процедури автозапуску

■ Члени ролі Sysadmin можуть здійснювати будь-яку діяльність в інсталяції SQL Server, незалежно від наявності інших дозволів Права ролі sysadmin навіть заміщають собою заборону доступу до окремих обєктів

SQL Server автоматично створює користувача BUILTINS / Administrators, який включає всіх користувачів Windows до групи Windows Admins і призначає цій групі роль на сервері баз даних sysadmin Користувача BUILTINS / Administrators краще видалити або змінити на свій розсуд

Якщо в SQL Server встановлюється змішаний режим аутентифікації, то автоматично створюється користувач sa, що належить ролі sysadmin Цей користувач залишений в SQL Server 2005 тільки з міркувань зворотної сумісності з попередніми версіями сервера

Вимкніть або перейменуйте користувача sa або принаймні призначте йому пароль, проте не використовуйте його при роботі адміністраторів і розробників баз даних До того ж видалите користувача BUILTINS / Administrors Замість цього краще використовувати аутентифікацію Windows і призначити всіх розробників та адміністраторів серверної ролі sysadmin

Щоб всі доступні можливості, надані роллю sysadmin, вступили в силу, користувач повинен повторно зайти на сервер

Серверні ролі настроюються в Management Studio на сторінці Server Roles діалогового вікна Login Properties (рис 405)

У програмному коді серверна роль призначається користувачу за допомогою наступної системної збереженої процедури: sp_adds rvrо1emember

[@ Loginame =] регістраціонная_запісь1,

[@ Rolename =] роль

Наприклад, в наступному програмному коді роль sysadmin призначається реєстраційної записи XPS \ Lauren:

EXEC sp_addsrvrolemember 1XPS\Lauren1, sysadmin

Рис 405 Сторінка Server Roles використовується для призначення користувачам прав адміністрування сервера

У даному прикладі групі Windows Admin призначена роль sysadmin

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

EXEC sp_dropsrvrolemember XPS\Lauren1, sysadmin

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*