Как определить наиболее строгие разрешения безопасности SQL-сервера, которые программа может использовать и по-прежнему функционировать? - PullRequest
1 голос
/ 06 сентября 2011

ИСТОРИЯ ПРОБЛЕМЫ

Извините, если читать это немного утомительно, но, пожалуйста, потерпите меня.

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

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

Поэтому, чтобы сузить разрешения для этого пользователя, я удалил права db_owner и назначилэто для ролей db_datareader и db_datawriter .К сожалению, это вызывает проблему, и при запуске службы появляется диалоговое окно с сообщением об ошибке:

Ошибка 1053: служба не ответила на запрос запуска или управления своевременно.

и в окне просмотра событий в разделе Системные события регистрируются:

  • событие 7009 (время ожидания ожидания ... до соединения)
  • событие 7000 (служба не отвечает на запуск илиcontrol)

Моя проблема в том, что база кода действительно велика, и я не уверен, что именно для поиска потребуется разрешение db_owner (возможно, оно устанавливает разрешения?).


ВОПРОС

Что я должен искать в программе, которая выполняет SQL, для которого требуются разрешения db_owner?

В случае, если первый вопрос слишком общий: есть ли простойспособ / любые инструменты, которые я могу использовать, чтобы выяснить, что служба Windows пытается сделать во время запуска, «мудрый SQL», если я регистрирую события системной ошибки:

  • событие 7009 (Времяout (30000 миллисекунд) ожидание подключения ... службы)
  • событие 7000 (служба не ответила на запрос запуска или управления своевременно).

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

1 Ответ

0 голосов
/ 06 сентября 2011

Это такой широкий вопрос, не зная архитектуры вашего сервиса и того, как он взаимодействует с SQL Server.Вы используете встроенный SQL?Хранимые процедуры?

Я думаю, что вам лучше всего решить эту проблему, начав с кода службы и проследив путь выполнения с самого начала и посмотрев, что выполняется на / против SQL Server.

В качестве альтернативы, если вы используете хранимые процедуры, вы можете записать их все в файл и выполнить поиск по некоторым распространенным командам T-SQL, ограниченным db_owner, таким как CREATE, DROP, ALTER.

...