Sql server призначені для користувача ролі - програмні продукти

Багато років недоступність такої функціональності була джерелом головного болю адміністраторів SQL Server. Що ви робили, якщо потрібно було надати права декільком користувачам або групам на рівні примірника і забезпечити синхронізацію цих прав? Припустимо, вам потрібно надати право View System State великому числу користувачів, щоб вони могли бачити інформацію про блокування в центрах розробки. Доводилося надавати права окремо кожному користувачеві або доменної групі.

Якщо все імена входу були доменними, був обхідний шлях: можна було створити доменну групу, в яку включити всіх користувачів, кому були потрібні такі права (при цьому треба було створювати окремі групи для кожного сервера, якщо потрібно було надати права на декількох серверах). Можна було додати користувачів до цієї групи, створити ім'я входу, пов'язане з цією доменної групою, після чого надати групі право View Server State на сервері. Але це потрібно було робити дуже уважно. Інакше можна було надати право входу користувачам, у яких такого права раніше не було. Існувала навіть можливість надання користувачам прав, яких їм надавати не можна.


Створення ролі засобами T / SQL

Існує багато способів створення користувальницької ролі на сервері, в тому числі засобами T / SQL, SQL Server Management Studio та Windows PowerShell. Якщо потрібно створити призначену для користувача серверну роль із застосуванням T / SQL, потрібно скористатися трьома командами: інструкція Create Server Role створить призначену для користувача серверну роль, інструкція Alter Server Role додасть користувача в роль і, нарешті, інструкція Grant надасть потрібні права ролі.

Використання цих трьох інструкцій показано в наступному коді, який створює для користувача серверну роль на ім'я ViewServerState. У роль додається користувач SomeFakeLogin, і ролі надається право View Server State. Щоб надати це право іншим користувачам, досить просто додати їх в готову роль інструкцією Alter Server Role.

USE [master]
GO
CREATE SERVER ROLE [ViewServerState] AUTHORIZATION [sa]
GO
ALTER SERVER ROLE [ViewServerState] ADD MEMBER [SomeFakeLogin]
GO
GRANT VIEW SERVER STATE TO [ViewServerState]
GO

Для видалення користувача з ролі використовується інструкція Alter Server Role. При цьому використовується на параметр Add Member, а Drop Member:

ALTER SERVER ROLE [ViewServerState] DROP MEMBER [SomeFakeLogin]
GO

Коли потрібно розгорнути одну або більше призначених для користувача серверних ролей на багатьох примірниках SQL Server. є кілька можливих варіантів. Напевно вам не сподобається підключатися до кожного сервера окремо і створювати на них призначені для користувача серверні ролі. Один з варіантів - використання консолі SQL Server Management Studio. У ній можна виконувати сценарії на T / SQL відразу на декількох примірниках.

Можна також скористатися компонентами Windows PowerShell сервера SQL Server для розгортання нових користувальницьких серверних ролей на всіх примірниках SQL Server в організації. (Існує багато варіантів використання Windows PowerShell для виконання завдання, але їх опис виходить за рамки цієї статті.)


Консоль SQL Server Management Studio

Завдання можна легко виконати засобами графічного інтерфейсу SQL Server Management Studio. Щоб створити для користувача серверну роль, підключіться до примірника засобами Object Explorer. У браузері об'єктів перейдіть до вузла <имя_экземпляра>/ Security / Server Roles. Клацніть правою кнопкою Server Roles і виберіть New Server Role. У вікні New Server Role в поле Server role name вкажіть ім'я ролі, в поле Owner вкажіть власника ролі, після чого вкажіть об'єкти і дозволу, які повинні надаватися членам ролі (рис. 1).

Sql server призначені для користувача ролі - програмні продукти

Мал. 1. Вкажіть права, які повинна надавати роль

По завершенні роботи на сторінці General перейдіть на сторінку Members (рис. 2) і вкажіть імена входу SQL Server. які повинні входити в цю призначену для користувача серверну роль.

Sql server призначені для користувача ролі - програмні продукти

Мал. 2. Визначення членів ролі

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

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

Sql server призначені для користувача ролі - програмні продукти

Мал. 3. Користувальницькі ролі можна включати в інші серверні ролі

Щоб організувати вкладення ролей засобами T / SQL, знову буде потрібно інструкція Alter Server Role з параметром Add Member. Наприклад, щоб зробити призначену для користувача серверну роль ViewServerState членом фіксованою серверної ролі setupadmin, потрібно змінити фіксовану серверну роль setupadmin.


ALTER SERVER ROLE [setupadmin] ADD MEMBER [ViewServerState]
GO

У призначених для користувача серверних ролях може бути багато користувачів. Є десятки прав рівня екземпляра, які можна надати для користувача серверної ролі для спрощення управління цими правами. Можна також створити роль для молодшого адміністратора БД, якій надати частину, але не всі права адміністратора. Можна створити групу AlwaysOnAdmin, яка надає право на виконання переходу бази даних AlwaysOn (що має виконуватися в рамкахSQL Server) котрі дають всієї повноти адміністративних прав.

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

Схожі статті