0

由于来自未知用户的多次失败登录尝试,sa帐户最近被锁定在我公司的面向公众的数据库中。我在日志中有他们的IP地址,但它吓坏了我。SQL Server仅将用户限制到选定的存储过程

我改变了我所有的密码,并且正在加密所有敏感数据。

如何限制SQL Server Authentication用户只能执行某些存储过程,但什么都不做(没有看到任何东西,甚至不能做到Select * From [SomeTable])?

更新:

我最终建立IP地址白名单的防火墙,创建随机超过90名字符的密码,设置db_denydatawriterdb_denydatareader以及针对特定用户的特定存储过程授予Execute

+5

大概是题外话题,但是你知道它通常被认为是一个让数据库开放到公共互联网的真正糟糕的主意,对吗?安全与否。 – 2012-03-27 20:40:03

+0

它不是关闭的话题。它已经死了。与您的网络管理员联系。简单地说,除非它在您的网络内部的vpn或其网络内部,否则不会直接连接到sql-server。另外,'sa'应该在每个sql服务器上禁用。 – jerry 2012-03-27 20:50:44

回答

0

将SQL Server打开到互联网并不安全。一个最低限度负责任的解决方案将在两者之间放置一个VPN或网络服务器。尽管如此,您可以从所有组(包括公共)中删除用户,然后仅授予特定存储过程的权限。没有db_datareader,用户不能select * from SomeTable

3

针对不受保护的sa发生的攻击始终为,是每个僵尸网络和恶意软件扫描工具包的一部分。

您在处理的唯一限制是权限和授予。没有任何机制可以限制登录中执行的内容(没有类似于如何将ssh隧道限制为仅限某些命令的机制)。所以它真的归结为权限和强密码。