基于主机名限制ms sql数据库上的sql登录

wxclj1h5  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(265)

我们正在尝试基于主机名限制mssql数据库上的sql类型登录。这些主机名的ip地址是动态的。我可以使用下面的查询打印当前登录的用户。
我试着四处寻找,但找不到太多的信息。我们是否可以根据主机名限制sql类型的登录。提前谢谢

SELECT DB_NAME(database_id) as [DB]
, login_name
, nt_domain
, nt_user_name
, status
, host_name
, program_name
, COUNT(*) AS [Connections] FROM sys.dm_exec_sessions
WHERE database_id > 0 
and login_name='MySQLLogin' 
GROUP BY database_id, login_name, status, host_name, program_name, nt_domain, nt_user_name;
wmomyfyw

wmomyfyw1#

您可能想看看在身份验证阶段之后但在用户会话建立之前触发的登录触发器,例如:

USE master;  
GO
CREATE TRIGGER host_name_reject_trigger
ON ALL SERVER
FOR LOGON  
AS
BEGIN
    IF HOST_NAME() in (N'bad_host', N'worse_host', N'the_worst')
        ROLLBACK;
END;

在此示例中,从坏主机、坏主机或最坏主机连接的用户将收到类似以下的错误消息:

Logon failed for login 'sa' due to trigger execution.
Changed database context to 'master'.
Changed language setting to us_english. (Microsoft SQL Server, Error: 17892)

当然这取决于 HOST_NAME() 返回您所说的“正确”结果。主机名(transact-sql)明确表示:
重要的
客户端应用程序提供工作站名称,并且可能提供不准确的数据。不要将主机名作为安全功能。
你应该试着找到一些机制 HOST_NAME() 确定应拒绝的登录。

相关问题