Пользователь с ограниченным доступом sql как исправить
Перейти к содержимому

Пользователь с ограниченным доступом sql как исправить

  • автор:

Настройка прав доступа к базам данных

Управление доступом к базам данных можно производить несколькими способами:

с помощью утилиты DB Администратор, поставляемой в комплекте установки (см. Руководство пользователя, глава Назначение пользователей и администраторов баз данных);

c помощью SQL Server Management Studio (см. ниже).

Создание пользователей и настройка прав доступа к базам данных в SQL Server Management Studio

Создание и редактирование свойств пользователей осуществляется из раздела Безопасность дерева объектов SQL Server Management Studio. Для добавления нового пользователя необходимо выделить раздел Имена входа, в контекстном меню выбрать пункт «Создать имя входа…». Откроется окно «Создание имени входа» (Рис. 1).

Задать проверку подлинности пользователя — Проверка подлинности Windows или Проверка подлинности SQL server.

Для создания пользователя с аутентификацией Windows необходимо выбрать пользователя или группу пользователей по кнопке «Найти…».

Для создания пользователя с аутентификацией SQL необходимо ввести имя пользователя в графе Имя пользователя, указать пароль и подтверждение пароля. Пользователь с SQL аутентификацией создается в случае использования SQL аутентификации базы данных (подробнее см. Руководство пользователя, глава Свойства подключения к базе данных).

На странице Сопоставление пользователей отмечаются галочками базы данных, для которых установлен доступ для данного пользователя и членство в роли в базе данных. Новый пользователь в базе данных создается с правами Пользователя (подробнее о возможностях групп пользователей см. Руководство пользователя, глава Управление доступом к базам данных). Чтобы дать пользователю права Администратора базы данных, необходимо в списке Членство в роли базы данных для: отметить галочкой роль ‘db_owner’.

Также возможно добавление существующего пользователя из раздела Безопасность → Пользователи выделенной базы. Для этого необходимо выбрать пункт контекстного меню «Создать пользователя…», задать Имя пользователя, ввести вручную или выбрать по кнопке Имя входа созданного ранее пользователя. Чтобы дать пользователю права Администратора базы данных, необходимо в списке Членство в роли базы данных отметить галочкой роль ‘db_owner’.

Блокировка доступа к данным в SQL Server

Иногда возникает необходимость ограничения доступа ряду сотрудников к определенной информации, хранящейся в базе банных. Я предлагаю познакомиться с одной из функций SQL Server, которая позволяет контролировать доступ к уровню строк в таблице базы данных в зависимости от пользователя, выполняющего запрос.

Безопасность на уровне строк (Row-Level Security, RLS) ограничивает пользователей таким образом, чтобы они могли работать исключительно с теми данными, к которым у них имеется доступ. Кроме того, данная функция не дает возможности пользователям вставлять, обновлять или удалять данные, доступ к которым запрещен.

Давайте рассмотрим, как можно использовать функцию Row-Level Security на примере условной таблицы, назовем ее ObjectCheck, в которой отражена информация об объектах аудита, сроках начала и завершения проверок и т.д.

Перед нами поставлена задача: каждый пользователь базы данных должен получить доступ к данным, относящимся только к нему, без доступа к проверкам, назначенным другим сотрудникам.

Для выполнения примера создадим трех пользователей базы данных:

create user Ivanovii without login; create user PetrovPP without login; create user SidorovSS without login;

предоставим доступ select к таблице ObjectCheck для этих пользователей:

grant select on ObjectCheck to Ivanovii; grant select on ObjectCheck to PetrovPP; grant select on ObjectCheck to SidorovSS;

Кроме того, желательно создать отдельную схему для объектов базы данных Row-Level Security:

create schema rs; GO

Ограничение доступа к данным с использованием Row-Level Security достигается путем определения предиката безопасности (Security predicate) как функции, которая ограничивает строки на основе логики фильтрации, которая вызывается и применяется политикой безопасности (Security Policy), созданной с помощью T-SQL оператора create security policy, и работает как контейнер предикатов.

Давайте выполним настройку функции безопасности на уровне строк для таблицы ObjectCheck.

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

create function rs.fn_secureData(@Username as sysname) returns table with schemabinding as return select 1 as ‘secureObjectCheck’ where @Username = User_Name();

Создадим политику безопасности в таблице ObjectCheck, используя ранее созданную функцию предиката:

create security policy Object_Check add filter predicate rs.fn_secureData(User) on dbo.ObjectCheck with (state = on);

Теперь защита на уровне строк настроена и готова к фильтрации доступа к данным в таблице ObjectCheck.

Так, если выполнить запрос, указав пользователя Ivanovii:

execute as user = ‘Ivanovii’; select * from ObjectCheck; revert;

то запрос вернет только две записи, связанные с пользователем Ivanovii:

Аналогичный результат будет возвращен при запросе данных из таблицы ObjectCheck пользователями PetrovPP и SidorovSS:

execute as user = ‘PetrovPP’; select * from ObjectCheck; revert;
execute as user = ‘SidorovSS’; select * from ObjectCheck; revert;

Из приведенных примеров видно, что функция безопасности на уровне строк может использоваться для фильтрации данных, которые может видеть каждый пользователь, в зависимости от критериев фильтрации, определенных в функции предиката.

Если необходимо прекратить использование функции безопасности rs.fn_SecureData, то можно отключить политику безопасности Object_Check с помощью инструкции ALTER security policy:

alter security policy Object_Check with (state = off)

Затем выполнить запрос DROP для удаления функции и политики безопасности:

drop security policy Object_Check drop function rs.fn_secureData

Теперь безопасность на уровне строк полностью удалена из таблицы Object_Check.

Можно легко добавлять предикаты и критерии фильтрации, подходящие для определенных ситуаций, однако, слишком сложные предикаты ухудшают производительность базы данных, поскольку предикат будет проверяться каждый раз при выполнении доступа к данным. Более подробно ознакомиться с Row-Level Security можно на сайте Microsoft.

Установка однопользовательского режима базы данных

В этой статье описывается, как настроить определяемую пользователем базу данных в однопользовательском режиме в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Однопользовательский режим указывает, что одновременный доступ к базе данных получает только один пользователь. Это в основном используется для операций обслуживания.

ограничения

  • Если в процессе установки однопользовательского режима к базе данных подключены другие пользователи, то их подключения к базе данных будут закрыты без предупреждения.
  • База данных остается в однопользовательском режиме даже после отключения параметра. В этот момент к базе данных могут подключаться и другие пользователи, но одновременно может быть подключен только один.

Предварительные условия

  • Перед заданием параметра SINGLE_USER проверьте, чтобы параметру AUTO_UPDATE_STATISTICS_ASYNC было присвоено значение OFF. Если этот параметр имеет значение ON, то фоновый поток, используемый для обновления статистики, соединится с базой данных и доступ к базе данных в однопользовательском режиме будет невозможен. Дополнительные сведения см. в статье Параметры ALTER DATABASE SET (Transact-SQL).

Разрешения

Необходимо разрешение ALTER в базе данных.

Использование среды SQL Server Management Studio

Чтобы установить однопользовательский режим для базы данных, выполните следующие действия:

  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД SQL Server, а затем разверните этот экземпляр.
  2. Щелкните правой кнопкой мыши базу данных, которую нужно изменить, и выберите пункт Свойства.
  3. В диалоговом окне Свойства базы данных выберите страницу Параметры.
  4. Для параметра Ограничение доступа выберите Один.
  5. Если к базе данных подключены другие пользователи, то появится сообщение Открытые соединения . Чтобы изменить свойство и закрыть все остальные подключения, нажмите кнопку Да.

С помощью этой процедуры можно также установить режим одновременного или ограниченного доступа к базе данных. Дополнительные сведения о параметрах ограничения доступа см. в разделе «Свойства базы данных» (страница «Параметры»).

Использование Transact-SQL

Чтобы установить однопользовательский режим для базы данных, выполните следующие действия:

  1. Соединитесь с ядром СУБД .
  2. На стандартной панели выберите пункт Создать запрос.
  3. Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере база данных устанавливается в режим SINGLE_USER для получения монопольного доступа. Затем состояние базы данных AdventureWorks2022 устанавливается в READ_ONLY , а также возвращается доступ к базе данных всем пользователям.

Чтобы быстро получить монопольный доступ, в примере кода используется параметр завершения WITH ROLLBACK IMMEDIATE . Произойдет откат всех незавершенных транзакций, а любые другие соединения с базой данных AdventureWorks2022 будут немедленно разорваны.

USE master; GO ALTER DATABASE AdventureWorks2022 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO ALTER DATABASE AdventureWorks2022 SET READ_ONLY; GO ALTER DATABASE AdventureWorks2022 SET MULTI_USER; GO 

Далее

SQL пользователь с ограниченным доступом

пользователь с ограниченным доступом

После восстановления базы MS SQL можем получить такую ошибку Для решения этой проблемы мы должны выполнить команду в консоли

USE test ALTER DATABASE test SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO ALTER DATABASE test SET MULTI_USER GO 

Нужна помощь?

Если у Вас возникли трудности и Вы не можете справиться самостоятельно, наши специалисты готовы оказать удаленную помощь. HELP

Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в МИТ

Наши сервисы по этой теме:

Линия консультаций 1С

Консультации по телефону и электронной почте дают специалисты службы технической поддержки по «1С:Предприятию» и обслуживающего партнера

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *