Transact-sql, ролі

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

Членами ролі бази даних можуть бути будь-які з наступних:

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

реєстраційні імена входу в SQL Server;

Архітектура безпеки компонента Database Engine включає кілька "системних" ролей, які мають спеціальні явні дозволу. Крім ролей, що визначаються користувачами, існує два типи зумовлених ролей: фіксовані серверні ролі і фіксовані ролі бази даних.

Фіксовані серверні ролі

Фіксовані серверні ролі визначаються на рівні сервера і тому знаходяться поза базами даних, що належать сервера баз даних. У таблиці нижче наводиться список фіксованих серверних ролей і короткий опис дій, які можуть виконувати члени цих ролей:

Фіксовані серверні ролі

Фіксована серверна роль

Членів фіксованою серверної ролі можна додавати і видаляти двома способами:

використовуючи середу Management Studio;

використовуючи інструкції мови Transact-SQL.

Щоб додати реєстраційну ім'я в члени фіксованою серверної ролі за допомогою середовища Management Studio, розгорніть в браузері об'єктів вузол сервера, в ньому папку "Security", а в ній розгорніть папку "Logins". Виберіть ім'я користувача, для якого потрібно змінити роль, клацніть правою кнопкою миші і виберіть в контекстному меню Properties. У вікні Login Properties перейдіть на вкладку Server Role, де можна задавати або видаляти користувача в фіксованою ролі:

Transact-sql, ролі

Для додавання і видалення членів в фіксовані серверні ролі використовуються інструкції мови Transact-SQL CREATE SERVER ROLE і DROP SERVER ROLE відповідно. А для зміни членства в серверній ролі використовується інструкція ALTER SERVER ROLE.

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

Реєстраційне ім'я sa

Реєстраційне ім'я sa слід використовувати тільки в тих випадках, коли немає іншого способу увійти в систему бази даних.

Фіксовані ролі бази даних

Фіксовані ролі бази даних визначаються на рівні бази даних і тому існують в кожній базі даних, що належить сервера баз даних. У таблиці нижче наводиться список фіксованих ролей бази даних і короткий опис дій, які можуть виконувати члени цих ролей.

Фіксовані ролі бази даних

Фіксована роль бази даних

Користувачі, які не можуть змінювати ніякі дані в базі даних

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

Фіксована роль бази даних public

Крім перерахованих в таблиці фіксованих ролей бази даних, існує спеціальна фіксована роль бази даних public. Фіксована роль бази даних public є спеціальною роллю, членом якої є всі законні користувачі бази даних. Вона охоплює всі дозволи за замовчуванням для користувачів бази даних. Це дозволяє надати всім користувачам, які не мають належних дозволів, набір дозволів (зазвичай обмежений). Роль public надає всі дозволи за замовчуванням для користувачів бази даних і не може бути видалена. Користувачам, групам або ролям можна привласнити членство в цій ролі, оскільки вони мають його за замовчуванням.

За замовчуванням роль public дозволяє користувачам виконувати такі дії:

переглядати системні таблиці і відображати інформацію з системної бази даних master, використовуючи певні системні процедури;

виконувати інструкції, для яких не потрібні дозволи, наприклад, PRINT.

Присвоєння користувачеві членства в фіксованою ролі бази даних

Щоб привласнити користувачеві бази даних членство в фіксованою ролі бази даних за допомогою середовища Management Studio, розгорніть сервер і папку "Databases", а в ній базу даних, потім розгорніть папку "Security", "Roles" і папку "Databases Roles". Клацніть правою кнопкою миші роль, в яку потрібно додати користувача, і в контекстному меню виберіть пункт Properties. У діалоговому вікні властивостей ролі бази даних натисніть кнопку Add і виберіть користувачів, яким потрібно присвоїти членство в цій ролі. Тепер цей користувач є членом даної ролі бази даних і успадковує всі параметри доступу, надані цій ролі.

ролі додатків

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

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

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

У наступних двох підрозділах описується управління ролями додатків.

Управління ролями додатків за допомогою середовища Management Studio

Щоб створити роль додатка за допомогою середовища Management Studio, розгорніть вузол сервера, папку "Databases", необхідну базу даних, папку "Security". Клацніть правою кнопкою папку "Roles", в контекстному меню виберіть пункт New, а у вкладеному меню виберіть пункт New Application Role. У діалоговому вікні Application Role - New введіть у відповідні поля ім'я нової ролі додатка, пароль і, необов'язково, схему за замовчуванням. Натисніть кнопку OK, щоб зберегти роль.

Управління ролями додатків за допомогою інструкцій Transact-SQL

Для створення, зміни і видалення ролей додатків застосовуються інструкції мови Transact-SQL CREATE APPLICATION ROLE, ALTER APPLICATION ROLE і DROP APPLICATION ROLE відповідно.

Інструкція CREATE APPLICATION ROLE. створює роль додатка для поточної бази даних, має два параметри. У першому параметрі вказується пароль ролі, а в другому - схема за замовчуванням, тобто перша схема, до якої буде звертатися сервер для розпізнавання імен об'єктів для цієї ролі.

У прикладі нижче показано створення ролі додатка WeeklyReports в базі даних SampleDb:

Інструкція ALTER APPLICATION ROLE застосовується для зміни імені, пароля або схеми за замовчуванням існуючої ролі додатка. Синтаксис цієї інструкції дуже схожий з синтаксисом інструкції CREATE APPLICATION ROLE. Для виконання інструкції ALTER APPLICATION ROLE для цієї ролі необхідно мати дозвіл ALTER.

Для видалення ролі додатка використовується інструкція DROP APPLICATION ROLE. Роль додатки можна видалити, якщо вона володіє будь-якими об'єктами (захищеними об'єктами).

Активація ролей додатків

При встановленні з'єднання необхідно виконати системну процедуру sp_setupprole. щоб активувати дозволу, пов'язані з роллю додатка. Ця процедура має наступний синтаксис:

У параметрі role вказується ім'я ролі додатка, визначеного в поточній базі даних, в параметрі password - пароль для цієї ролі, а в параметрі encrypt_style - метод шифрування, вказаний для пароля.

При активації ролі додатка за допомогою системної процедури sp_setupprole необхідно мати на увазі наступне:

активовану роль додатка можна деактивувати в поточній базі даних, поки сеанс від'єднатися від системи;

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

Визначені користувачем ролі сервера

Визначені користувачем ролі баз даних

Зазвичай визначені користувачем ролі бази даних застосовуються, коли групі користувачів бази даних потрібно виконувати загальний набір дій в базі даних і відсутня прийнятна група користувачів Windows. Для створення, зміни і видалення цих ролей застосовується або середовище Management Studio, або інструкції мови Transact-SQL CREATE ROLE, ALTER ROLE і DROP ROLE. Управління обумовленими користувачем ролями бази даних розглядається в наступних двох підрозділах.

Управління обумовленими користувачем ролями бази даних за допомогою середовища Management Studio

Щоб створити визначається користувачем роль бази даних за допомогою середовища Management Studio, розгорніть вузол сервера, папку "Databases", необхідну базу даних, папку "Security". Клацніть правою кнопкою папку "Roles", в контекстному меню виберіть пункт New, а у вкладеному меню виберіть пункт New Database Role. У діалоговому вікні Database Role - New введіть у відповідне поле ім'я нової ролі:

Transact-sql, ролі

Натисніть кнопку Add, щоб додати членів в нову роль. Виберіть необхідних членів (користувачів і / або інші ролі) нової ролі бази даних і натисніть кнопку OK.

Управління обумовленими користувачем ролями бази даних за допомогою інструкцій Transact-SQL

Для створення нової настройки користувача ролі бази даних в поточній базі даних застосовується інструкція CREATE ROLE. Синтаксис цієї інструкції виглядає таким чином:

У параметрі role_name інструкції вказується ім'я створюваної настройки користувача ролі, а в параметрі owner_name - користувач бази даних або роль, яка буде власником нової ролі. (Якщо користувач не вказано, власником ролі буде користувач, виконуючий інструкцію CREATE ROLE.)

Для зміни імені настройки користувача ролі бази даних застосовується інструкція ALTER ROLE. а для видалення ролі з бази даних - інструкція DROP ROLE. Роль, яка є власником об'єктів, що захищаються (тобто об'єктів бази даних), видалити не можна. Щоб видалити таку роль, спочатку потрібно змінити власника цих об'єктів.

У прикладі нижче показано створення настройки користувача ролі бази даних і додавання в неї членів:

У цьому прикладі спочатку створюється обумовлена ​​користувачем роль бази даних marketing, а потім, пропозицією ADD MEMBER інструкції ALTER ROLE, в неї додаються два члена - Vasya і ProfessorWeb \ Alexandr.

Схожі статті