Как отключить SQL Server Management Studio для пользователя - PullRequest
8 голосов
/ 22 мая 2009

Есть ли способ запретить пользователям входить в SQL Server Management Studio, чтобы они не могли просто редактировать строки таблицы вручную? Им все еще нужно получить доступ к таблицам, запустив мое приложение.

Ответы [ 11 ]

16 голосов
/ 22 мая 2009

Вы можете использовать команду DENY VIEW ANY DATABASE для конкретного пользователя (ей). Это новая функция, доступная в SQL Server 2008.

Он не позволяет пользователю просматривать системный каталог (sys.databases, sys.sysdatabases и т. Д.) И, следовательно, делает БД невидимой для него в SQL Management Studio (SSMS).

Запустите эту команду из основной базы данных:

DENY VIEW ANY DATABASE TO 'loginName'

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

Тем не менее, это не надежно. Если пользователь достаточно умен, чтобы запустить команду запроса:

USE <YourDatabaseName>

Затем они увидят базу данных в Query Analyzer.

Поскольку это решение занимает у вас 90%, я бы назвал базу данных неясным именем, чтобы пользователи не знали имя базы данных.

7 голосов
/ 22 мая 2009

Вы НЕ нужно беспокоиться о том, что они имеют доступ к инструменту. Просто убедитесь, что они не знают ни одного логина SQL для конкретных баз данных, которые имеют разрешения на чтение / запись, если они изменили пароль. Если у них есть доступ к БД через проверку подлинности Windows, убедитесь, что они имеют роль администратора данных . Вы можете использовать роли для управления тем, что пользователи могут делать в SQL.

4 голосов
/ 22 мая 2009

Я бы посоветовал вам заблокировать базу данных и предоставить соответствующие права только для чтения (или другие) для пользователя. Таким образом, пользователь по-прежнему может использовать Management Studio для выполнения запросов на выборку и тому подобное.

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

3 голосов
/ 27 апреля 2017

Вы можете использовать триггер.

CREATE TRIGGER [TR_LOGON_APP]
ON ALL SERVER 
FOR LOGON
AS
BEGIN

   DECLARE @program_name nvarchar(128)
   DECLARE @host_name nvarchar(128)

   SELECT @program_name = program_name, 
      @host_name = host_name
   FROM sys.dm_exec_sessions AS c
   WHERE c.session_id = @@spid


   IF ORIGINAL_LOGIN() IN('YOUR_APP_LOGIN_NAME') 
      AND @program_name LIKE '%Management%Studio%' 
   BEGIN
      RAISERROR('This login is for application use only.',16,1)
      ROLLBACK;
   END
END;

https://www.sqlservercentral.com/Forums/1236514/How-to-prevent-user-login-to-SQL-Management-Studio-#bm1236562

2 голосов
/ 22 мая 2009

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

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

Надеюсь, это поможет!

1 голос
/ 21 марта 2015

Вы можете запретить «Права доступа пользователей» к исполняемому файлу ssms.exe, одновременно предоставив соответствующие права пользователям / администраторам.

1 голос
/ 22 мая 2009

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

1 голос
/ 22 мая 2009
  • Не сообщайте им, что такое логин базы данных.
  • Если вы не можете ограничить вход в систему, используйте хранимые процедуры исключительно для обновлений и отключите любые разрешения CREATE, DELETE, INSERT или UPDATE для этого пользователя.
1 голос
/ 22 мая 2009

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

0 голосов
/ 22 мая 2009

Хорошо используйте роли базы данных, если у пользователей должен быть только доступ SELECT (чтение), назначьте им роль db_datareader. Даже если они войдут в систему с использованием SSMS, они смогут выполнять только операторы SELECT.

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