Во всех моделях безопасности, включая проверку подлинности Windows и SQL, права доступа предоставляются пользователю (удостоверение личности), а не приложению. следовательно, любое право доступа, необходимое приложению, должно быть предоставлено пользователю, выполняющему приложение. Когда используется проверка подлинности Windows, это означает, что один и тот же пользователь может использовать все привилегии, необходимые для самого приложения, из запроса SSMS. Это фундаментальное правило, которое должен понимать любой администратор. С точки зрения безопасности (имея в виду такие вещи, как соответствие CC и т. Д.), Это факт, и любая попытка обойти его обречена.
Но с практической точки зрения существуют определенные меры, которые можно применить. Наиболее часто используемым является использование триггера входа , который проверяет APP_NAME()
и разрешает доступ для SSMS только с четко определенного набора клиентских рабочих станций и для четко определенного набора пользователей.
CREATE TRIGGER reject_SSMS
ON ALL SERVER WITH EXECUTE AS '...'
FOR LOGON
AS
BEGIN
IF (APP_NAME() = 'Microsoft SQL Server Management Studio'
OR APP_NAME() = 'Microsoft SQL Server Management Studio - Query')
AND (ORIGINAL_LOGIN() NOT IN (...)
OR HOST_NAME() NOT IN (...))
ROLLBACK;
END;
Важно понимать, что такие механизмы являются НЕ функциями безопасности, поскольку их может легко обойти злонамеренный пользователь. Они больше похожи на дверные замки: они не держат воров, они держат честных пользователей честными.