SQL Server ограничивает пользователя только выбранными хранимыми процедурами

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

Я изменил все свои пароли и нахожусь в процессе шифрования всех конфиденциальных данных.

Как мне ограничить SQL Server Authentication пользователь может выполнять только определенные хранимые процедуры, но не делать ничего другого (не видеть ничего и даже не иметь возможности делать Select * From [SomeTable])?

Обновить:

В итоге я настроил белый список IP-адресов для брандмауэра, создал случайные 90-символьные пароли, настроил db_denydatawriter а также db_denydatareader и предоставление Execute для конкретных хранимых процедур для конкретных пользователей.

2 ответа

Решение

Открывать SQL Server через Интернет небезопасно. Минимально ответственное решение поместит VPN или веб-сервер между ними.

Сказав это, вы можете удалить пользователя из всех групп (включая публичные), а затем предоставить только права на определенные хранимые процедуры. Без db_datareaderпользователь не может select * from SomeTable,

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

Единственные ограничения, которыми вы располагаете, - это разрешения и гранты. Не существует механизма, ограничивающего то, что выполняется при входе в систему (нет механизма, подобного, скажем, тому, как туннель ssh может быть ограничен только определенными командами). Так что это действительно сводится к разрешениям и надежным паролям.