我刚刚在我的 SQL Server Express 2012 安装上启用了远程连接。现在我有点担心服务器的安全性,因为允许连接到每个人听起来对我来说是一个很大的安全漏洞。
如果用户尝试与不在我的“允许”列表中的用户进行身份验证,是否可以告诉 SQL Server 断开连接?如果是这样,我可以将我的监控用户添加到此列表中,而不必担心我的管理帐户可以访问。
我刚刚在我的 SQL Server Express 2012 安装上启用了远程连接。现在我有点担心服务器的安全性,因为允许连接到每个人听起来对我来说是一个很大的安全漏洞。
如果用户尝试与不在我的“允许”列表中的用户进行身份验证,是否可以告诉 SQL Server 断开连接?如果是这样,我可以将我的监控用户添加到此列表中,而不必担心我的管理帐户可以访问。
首先,这大概是DBA网站应该问的一个问题。无论如何,您可以设置服务器的安全性,以便只允许某些用户登录。
设置服务器时,将登录添加到服务器级别,然后将用户添加到数据库级别。显然,只有设置好的用户才能使用特定的数据库。您可以将用户置于角色中,例如,他们将对数据库具有只读访问权限。您可以控制到对象级别,谁可以访问什么。
这里有一篇关于 SQL Server 安全性的好文章
话虽如此,有时,在您设置了安全性之后,您需要禁止某些用户不允许登录。也许您正在对数据库进行一些重大升级。在这种情况下,一种选择是创建登录触发器。
每次用户登录时都会触发登录触发器。您可以创建一个“允许”用户表,并且在触发器中,如果他们不在您 ROLLBACK 的表中,则有效地禁止登录。
以下是有关创建登录触发器的信息
能够远程连接到 SQL Server 实例并不意味着他们可以登录到它。如果它们未得到正确授权,它们仍应由 SQL Server 登录身份验证序列启动。
这对于“受信任的登录”(授权来自他们的 Windows 登录/域帐户)是静默/不可见的,但它仍然会发生。
如果您查看服务器的“安全”文件夹(在 SSMS 中),您将看到 SQL Server 的授权登录列表。通过添加或删除这些,您可以控制谁可以在您的 SQL Server 上实际创建会话。
您应该能够将 db 服务器设置为仅接受来自某些 IP 地址的连接,而不是接受所有 IP 地址的连接。我不确定 T-SQL 语法,但肯定有人会加入正确的语法。
话虽如此,如果您真的是认真的,那么您将希望使用您提供给他们的证书对客户进行身份验证。请参阅此及其链接到的各种文章: