我希望允许从 Microsoft Access 数据库远程访问 SQL Server 数据库,以便我的客户可以随时构建报告。
我可以在服务器上的 Windows 防火墙中打开相关端口,这样就不会出现任何问题。但是,这似乎是一种非常不安全的访问方式,我的服务器正被某些人(或多个人)试图猜测“sa”密码所针对,这令人担忧。
虽然根据已发布的指南,这个密码已经设置得非常强,但我还是想防止这种情况发生。
以这种方式允许访问服务器的最佳做法是什么?
非常感谢,安东尼
答案1
如果可能的话,您不应该像这样直接向公共互联网开放服务。
我建议使用某种形式的 VPN,它可以提供适当的安全性(完全加密的流量等),只允许拥有 VPN 密钥的人看到 SQL 服务器的存在,甚至可以通过添加压缩来加快速度。它也不需要花费任何费用:OpenVPN是免费的(并且是 OSS),稳定且可靠——我们一直将它用于类似的事情。
如果您不想要完整的 VPN,那么请在您的机器上安装一个 SSH 服务器,并让您的客户端使用其隧道功能通过该服务器进行连接以将连接转发到端口 1433。Windows 的完整 OpenSSH 集有多个端口,因此这个解决方案再次是 F+OSS。
如果您的客户端真的无法应付 VPN 或 SSH 客户端带来的额外麻烦,那么您能做的就不多了。如果他们有固定的 IP 地址,您可以通过将防火墙的“接受端口 1433 连接”规则限制到该地址来删除来自其他来源的登录尝试。如果他们有动态地址但来自固定范围(即他们总是从同一个 ISP 连接),那么您至少可以将规则的范围限制在该地址范围内。
如果您的客户不愿意使用 VPN 或 SSH 隧道,您可以通过宣扬加密流量(直接连接将以纯文本形式发送数据)、压缩流量(如果他们运行输出多行的报告,这可能很重要)以及 OpenVPN 等更可靠的连接(OpenVPN 对断线重连或其他网络故障的恢复能力比直接连接更强)的优点来“推销”解决方案。通常认为,在任何公共网络中直接访问 SQL 服务器都是一个坏主意。
答案2
看起来 SQL Reporting Services 非常适合。我可能完全错了,但看起来它可以很方便地将报告公开给您的客户端(如果可能的话,在单独的服务器上),而不会让您的数据库服务器处于危险之中。
答案3
不要使用 SA 或 重命名 SA 帐户。