Безопасность SQL Server через TSQL

Не похоже, что у вас действительно определена функция setUserLocation, но вы пытаетесь вызвать ее из обработчика намерений «SaveLocation - PermissionHandler».

5
задан cindi 21 January 2009 в 17:41
поделиться

6 ответов

Если Вы находитесь на SQL Server 2005 или 2008, лучший ответ является тем, который это было уже дано, и это - триггеры DDL. Правильно записанный триггер DDL остановит даже кого-то, кто имеет права системного администратора от выполнения любого вида операции DDL. Системный администратор может отключить триггер для выполнения работы, или триггер может быть записан, чтобы позволить определенным людям выполнять работу, таким образом, у Вас все еще есть опция сделать модификации как требуется.

Если Вы находитесь на SQL Server 2000 (или ниже), Ваше единственное обращение за помощью должно проверить права доступа на каждый вход в систему/пользователя. В конечном счете это - что-то, что должно быть сделано, даже если Вы находитесь на SQL Server 2005 или 2008, но в предыдущих версиях нет ярлыка.

1
ответ дан 14 December 2019 в 04:49
поделиться

Cindi - изучите ОТКЛОНЯТЬ команду полномочий для получения мелкомодульного контроля над возможностями пользователей.

Я также должен задать более глубокий вопрос, все же. Почему у этих людей был бы доступ командной строки SQL к Вашим базам данных? Таким образом, если они не должны даже мочь удалить или обновить записи, какую возможную причину они могли иметь для предоставленного доступа к командной строке SQL для начала?

Я действительно не думаю, что необходимо знать, как ОТКЛОНИТЬ полномочия. Вы должны заново продумать свою полную стратегию доступа к данным так, чтобы Вы постарались не делать этим людям отчет вообще. Это кажется, что необходимо пропустить их доступ к данным только через приложение фронтенда.

Обновление: один сценарий, который я могу предположить, где это имеет смысл, - то, если у Вас есть некоторые люди, которые только генерируют отчеты. В этом случае необходимо создать учетную запись с общим состоянием DENY и затем ДАТЬ разрешение только на Выборе и на определенных хранимых процедурах (только те что данные получения по запросу, полезные для отчетов).

0
ответ дан 14 December 2019 в 04:49
поделиться

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

Хранимые процедуры предоставляют значительные преимущества когда дело доходит до безопасности. При помощи хранимой процедуры можно дать разрешения определенным пользователям получать доступ к данным, уменьшив огромное кодирование, которое необходимо сделать в клиентских приложениях. Это - один из лучших способов управлять доступом к Вашим данным.

http://www.wwwcoder.com/main/parentid/191/site/4004/68/default.aspx

1
ответ дан 14 December 2019 в 04:49
поделиться

Вы не можете действительно проверить, видите ли Вы команды отбрасывания, потому что кто-то мог бы сделать что-то вроде этого

просто предположите, что это имеет должностное лицо вместо печати

print ( convert(varchar(50), 0x64726F7020646174616261736520616263))

Вы могли дать им доступ для чтения только и предоставить исполнительный доступ к сохраненному procs только

можно также использовать триггеры DDL http://msdn.microsoft.com/en-us/library/ms190989.aspx

Вот пример

CREATE TRIGGER safety 
ON DATABASE 
FOR DROP_TABLE, ALTER_TABLE 
AS 
   PRINT 'You are not allowed to drop or alter tables!' 
   ROLLBACK
;
0
ответ дан 14 December 2019 в 04:49
поделиться

(протест, это для каждой базы данных; я не знаю ни о чем всего сервера, так как база данных является основной автономной единицей),

По-видимому, Ваш пользователь не является владельцем схемы (или dbo)? В этом случае у них уже не должно быть доступа к, ну, в общем, ничему, если Вы НЕ ПРЕДОСТАВЛЯЕТЕ его. Не ПРЕДОСТАВЛЯЙТЕ доступ, они не нуждаются, ОТКЛОНЯЮТ любой доступ, который Вы предоставили неправильно и ОТКЛОНЯЕТЕ что-либо, что Вы абсолютно не хотите их никогда способность сделать.

См. также MSDN.

6
ответ дан 14 December 2019 в 04:49
поделиться

В то время как я использую SQL Server, где я в настоящее время работаю, я не имею дело очень со стороной безопасности его. Я предположил бы, что можно сделать то же для SQL Server как в Oracle (где у меня есть больше опыта).

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

это похоже на пользователей, которых Вы хотите ограничить, должен только иметь:

  • независимо от того, что полномочие требуется, чтобы соединяться с сервером (и возможно выбирать базу данных)
  • выберите доступ ко всем таблицам и представлениям в определенной схеме
  • вставьте доступ ко всем таблицам в определенной схеме
  • возможно полномочия на исполнение на определенных хранимых процедурах в определенной схеме

ничто иное нельзя предоставить.

0
ответ дан 14 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: