ado*_*lot 8 security sql-server sql-server-2012
我有一个我依赖的愚蠢的应用程序,里面有硬编码的连接字符串。
为了提高我的 SQL Server 的安全性,我想让 SQL 用户与内部应用程序的硬编码相同,但我希望该用户只能从特定主机(IP 地址)使用 SQL Server。
您可以为此使用登录触发器。
CREATE TRIGGER TR_check_ip_address
ON ALL SERVER
FOR LOGON
AS
BEGIN
DECLARE @ip_addr varchar(48)
SELECT @ip_addr = client_net_address
FROM sys.dm_exec_connections
WHERE session_id = @@SPID
IF ORIGINAL_LOGIN() = 'bob' AND @ip_addr <> '127.0.0.1'
ROLLBACK;
END
Run Code Online (Sandbox Code Playgroud)
如果您尝试从未经授权的 IP 连接,您将收到错误消息:
Logon failed for login 'bob' due to trigger execution.
Run Code Online (Sandbox Code Playgroud)
请记住,登录触发器可能是邪恶的,并且可能最终将所有人锁定在实例之外。当心!
但是,我认为你真的不需要这样做。如果要启用来自已知地址列表的连接,防火墙是最适合此工作的工具。可能发生的最糟糕的事情是错误的用户从已知的 IP 地址连接,如果用户小心地保留他们的凭据,这种情况就不太可能发生。
另外,考虑到 IP 地址可能会被欺骗,因此我不确定您将提供何种程度的额外安全性。
归档时间: |
|
查看次数: |
8478 次 |
最近记录: |