Роли SQL-сервера

В этом руководстве вы узнаете о ролях SQL Server и о том, как назначить пользователю роль.

Введение в роли SQL Server

Роль — это группа разрешений. Роли помогают упростить управление разрешениями. Например, вместо того, чтобы назначать разрешения пользователям по отдельности, вы можете сгруппировать разрешения в роль и добавлять пользователей к этой роли:

  • Сначала создайте роль.
  • Во-вторых, назначьте разрешения для роли.
  • В-третьих, добавьте в роль одного или нескольких пользователей.

SQL Server предоставляет вам три основных типа ролей:

Для каждого типа SQL Server предоставляет два типа:

  • Фиксированные роли сервера: встроенные роли, предоставляемые SQL Server. Эти роли имеют фиксированный набор разрешений.
  • Пользовательские роли: это роли, которые вы определяете для соответствия определенным требованиям безопасности.

Пример добавления пользователя в роль

Сначала создайте новый логин с именем tiger:

CREATE LOGIN tiger
WITH PASSWORD='UyxIv.12';

Далее переключите текущую базу данных на BikeStores и создайте пользователя для входа в систему tiger:

Use BikeStores;
CREATE USER tiger
FOR LOGIN tiger;

Затем подключитесь к базе данных BikeStores, используя пользователя tiger. Пользователь tiger может видеть базу данных BikeStores, но не может просматривать объекты базы данных.

После этого добавьте пользователя tiger к роли db_datareader:

ALTER ROLE db_datareader
ADD MEMBER peter;

db_datareader — это фиксированная роль базы данных. Роль db_datareader позволяет всем членам читать данные из всех пользовательских таблиц и представлений в базе данных. Технически это эквивалентно следующему оператору GRANT :

GRANT SELECT 
ON DATABASE::BikeStores
TO tiger;

В этом примере DATABASE — это тип класса, который указывает, что защищаемый объект, следующий за ::, является базой данных. Ниже приведены доступные типы классов:

  • АВТОРИЗОВАТЬСЯ
  • БАЗА ДАННЫХ
  • ОБЪЕКТ
  • РОЛЬ
  • СХЕМА
  • ПОЛЬЗОВАТЕЛЬ

Наконец, переключите соединение на пользователя peter и выберите данные из таблицы sales.orders:

SELECT * FROM sales.orders;

Создание пользовательской роли

В следующем примере создается новый пользователь и роль, предоставляются разрешения для роли и добавляется пользователь к роли.

Сначала установите текущую базу данных как главную и создайте новый логин с именем mary:

USE master;
CREATE LOGIN mary 
WITH PASSWORD='XUjxse19!';

Во-вторых, переключите текущую базу данных на BikeStores и создайте нового пользователя с именем mary для логина mary:

USE BikeStores;
CREATE USER mary 
FOR LOGIN mary;

В-третьих, создайте новую роль с именем sales_report в базе данных BikeStores:

CREATE ROLE sales_report;

В этом примере мы используем оператор CREATE ROLE для создания новой роли. Sales_report — это имя роли.

В-четвертых, предоставьте привилегию SELECT для схемы Sales для sales_report:

GRANT SELECT 
ON SCHEMA::Sales 
TO sales_report;

В-пятых, добавьте пользователя tiger к роли sales_report:

ALTER ROLE sales_report
ADD MEMBER tiger;

Наконец, подключитесь к базе данных BikeStores, используя пользователя mary. В этом случае пользователь mary может видеть только таблицы в схеме продаж. Кроме того, пользователь mary может выбирать данные только из таблиц в этой схеме продаж, поскольку пользователь является членом sales_report, который имеет привилегию SELECT:

Краткое содержание

  • Роль — это группа разрешений.
  • Используйте оператор CREATE ROLE для создания новой роли.
  • Используйте оператор ALTER ROLE … ADD MEMBER … для добавления пользователя к роли.
Мирослав С.

Автор статей, ИБ-специалист