В этом руководстве вы узнаете о ролях SQL Server и о том, как назначить пользователю роль.
Введение в роли 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 … для добавления пользователя к роли.