SQL Server 可信连接附加安全性

Xil*_*iki 4 security sql-server connectivity sql-server-2017

使用 Windows 身份验证,有没有办法禁止用户通过 ODBC 连接到数据库?

Dav*_*oft 8

旨在帮助这种情况的功能是应用程序角色。使用应用程序角色,您可以允许用户连接到目标数据库,但在应用程序提供激活应用程序角色的机密之前不能运行任何查询。


Sco*_*red 7

一个可能的解决方案是创建一个服务器登录触发器来检查app_name(). 我在本地实例上创建了以下服务器触发器并尝试通过 ODBC 进行连接。连接被拒绝。您必须根据自己的需要进行修改。

CREATE TRIGGER trgGetAppName ON ALL SERVER
FOR LOGON AS

IF APP_NAME() NOT LIKE ('Microsoft SQL Server Management Studio%')
    AND APP_NAME() NOT LIKE ('.Net SqlClient Data Provider%')
BEGIN
    ROLLBACK
END
Run Code Online (Sandbox Code Playgroud)

关于登录触发器的注意事项:

登录触发器可以有效地阻止所有用户(包括 sysadmin 固定服务器角色的成员)成功连接到数据库引擎。当登录触发器阻止连接时,sysadmin 固定服务器角色的成员可以通过使用专用管理员连接或通过以最小配置模式 (-f) 启动数据库引擎来进行连接