Назначение привилегий и ролей пользователям
Атомарные полномочия в SQL Server называются привилегиями, группы полномочий — ролями. Managed Service for SQL Server поддерживает предопределенные роли. Подробнее об организации прав доступа читайте в документации SQL Server.
Пользователь, создаваемый вместе с кластером Managed Service for SQL Server, автоматически получает роль владельца (DB_OWNER
) первой базы данных в кластере. После этого вы можете создавать других пользователей и настраивать их права по своему усмотрению:
- Изменить список ролей пользователя.
- Выдать привилегию пользователю.
- Отозвать привилегию у пользователя.
Изменить список ролей пользователя
Для назначения роли пользователю используйте консоль управления или API Yandex.Cloud: назначение роли запросом GRANT
отменится при следующей операции с базой.
Чтобы изменить список ролей пользователя:
- Перейдите на страницу каталога и выберите сервис Managed Service for SQL Server.
- Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите значок и выберите пункт Настроить.
- При необходимости добавьте пользователю нужные базы данных:
- Нажмите кнопку Добавить базу данных.
- Выберите базу данных из выпадающего списка.
- Повторите два предыдущих шага, пока не будут выбраны все требуемые базы данных.
- Чтобы отозвать доступ к определенной базе, удалите ее из перечня, нажав значок справа от имени базы данных.
- Задайте нужные роли пользователя для каждой из баз данных пользователя:
- Нажмите значок в столбце Роли.
- Выберите роль, которую вы хотите добавить пользователю из выпадающего списка.
- Повторите два предыдущих шага, пока не будут добавлены все требуемые роли.
- Чтобы отозвать роль, нажмите значок справа от ее имени.
- Нажмите кнопку Сохранить.
Воспользуйтесь методом API update и передайте в запросе:
- Идентификатор кластера, в котором находится пользователь в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя пользователя в параметре
userName
. Чтобы узнать имя, получите список пользователей в кластере. - Имя базы данных, для которой вы хотите изменить список ролей пользователя в параметре
permissions.databaseName
. Чтобы узнать имя, получите список баз данных в кластере. - Массив нового списка ролей пользователя в параметре
permissions.roles
. - Список полей конфигурации пользователя подлежащих изменению (в данном случае —
permissions
) в параметреupdateMask
.
Важно
Этот метод API сбросит все настройки пользователя, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, обязательно передайте название поля подлежащего изменению (в данном случае — permissions
) в параметре updateMask
.
Выдать привилегию пользователю
- Подключитесь к базе данных с помощью учетной записи владельца базы данных.
- Выполните команду
GRANT
. Подробное описание синтаксиса команды смотрите в документации SQL Server.
Отозвать привилегию у пользователя
- Подключитесь к базе данных с помощью учетной записи владельца базы данных.
- Выполните команду
REVOKE
. Подробное описание синтаксиса команды смотрите в документации SQL Server.
Примеры
Добавить пользователя с правами только на чтение
Чтобы добавить в существующий кластер нового пользователя user2
с доступом только на чтение к базе данных db1
:
-
Создайте пользователя с именем
user2
. При этом выберите базы данных, к которым должен иметь доступ пользователь. -
Подключитесь к базе данных
db1
с помощью учетной записи владельца БД. -
Чтобы выдать права доступа только к таблице
Products
в схеме по умолчаниюdbo
, выполните команду:GRANT SELECT ON dbo.Products TO user2; GO
-
Чтобы выдать права доступа ко всем таблицам схемы
myschema
, выполните команду:GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::myschema TO user2; GO
Для отзыва выданных привилегий выполните команды:
REVOKE SELECT ON dbo.Products FROM user2;
REVOKE SELECT, INSERT, UPDATE, DELETE ON SCHEMA::myschema FROM user2;
GO
Описание предопределенных ролей
DB_OWNER
— владелец базы данных. Пользователи, обладающие этой ролью, могут выполнять все действия по настройке и обслуживанию базы данных, удалять базу данных в SQL Server.DB_SECURITYADMIN
— администратор безопасности. Пользователи, обладающие этой ролью, могут управлять привилегиями. Имеют возможность повышать собственные права доступа, поэтому необходимо отслеживать их действия.DB_ACCESSADMIN
— администратор доступов. Пользователи, обладающие этой ролью, могут выдавать или отзывать права удаленного доступа к базе данных для пользователей и групп Windows и пользователей SQL Server.DB_BACKUPOPERATOR
— оператор резервных копий. Пользователи, обладающие этой ролью, могут создавать резервные копии базы данных.DB_DDLADMIN
— администратор DDL. Пользователи, обладающие этой ролью, могут выполнять любые команды языка описания данных (DDL).DB_DATAWRITER
— пользователь с правом на запись. Пользователи, обладающие этой ролью, могут добавлять, удалять или изменять данные во всех пользовательских таблицах.DB_DATAREADER
— пользователь с правом на чтение. Пользователи, обладающие этой ролью, могут считывать все данные из всех пользовательских таблиц.DB_DENYDATAWRITER
— пользователь без права на запись. Пользователи, обладающие этой ролью, не могут добавлять, изменять или удалять данные в пользовательских таблицах базы данных.DB_DENYDATAREADER
— пользователь без права на чтение. Пользователи, обладающие этой ролью, не могут считывать данные из пользовательских таблиц базы данных.