我有一个要在生产中部署的应用程序,它使用“荣誉系统”安全性。也就是说,所有用户都使用 SQL 用户/密码凭据连接到数据库,并且应用程序自己管理权限。后一部分并不像连接对象包含嵌入式凭据并且可以自由复制这一事实那样困扰我。我试图找到一些方法来限制与一组更有限的客户端的连接。当然,我可以创建防火墙规则来限制 IP。有没有办法通过机器帐户或域成员资格“预认证”SQL 登录?
我有一个要在生产中部署的应用程序,它使用“荣誉系统”安全性。也就是说,所有用户都使用 SQL 用户/密码凭据连接到数据库,并且应用程序自己管理权限。后一部分并不像连接对象包含嵌入式凭据并且可以自由复制这一事实那样困扰我。我试图找到一些方法来限制与一组更有限的客户端的连接。当然,我可以创建防火墙规则来限制 IP。有没有办法通过机器帐户或域成员资格“预认证”SQL 登录?
正如 Thomas 提到的,它可以使用 LOGON Trigger 来完成。以下是可以帮助您的脚本
您可以通过登录触发器来实现这一点。在您的登录触发器中,您可以使用逻辑来执行您正在寻找的必要检查(例如机器名称)。不幸的是,如果您使用 SQL Server 身份验证,我认为没有办法获取用户的域成员身份。
您可以查看使用EVENTDATA函数来查看是否可以提取其他信息以确定是否应允许连接。如果您不希望该特定登录成功,您可以简单地有条件地测试并发出
ROLLBACK
.