sql-server - 除非登录在特定的 AD 组中,否则如何创建触发器以阻止某些程序名称?
问题描述
我需要能够阻止 Microsoft Office 应用程序连接到我的 SQL 数据库,除非使用的登录名是特定 AD 组的一部分。
只有所述 AD 组中的人员才能使用任何 Office 应用程序连接到数据库。这甚至可能吗?
SQL Server 2012 企业版。
我知道它们是为整个服务器配置的,但我正在考虑创建一个触发器。我创建了一个与 AD 用户一起不断更新的表,并创建了以下联接。我需要的是让这个查询返回的每个人都能使用他们想要的 Office 应用程序访问数据库,而没有返回的每个人都被拒绝。
SELECT A.LOGIN_NAME, A.PROGRAM_NAME, B.LOGIN NAME
FROM sys.dm_exec_sessions A
JOIN AD_Group_Members B ON A.login_name = B.LOGIN NAME
WHERE session_id = @@SPID
AND program_name IN (N'2007 Microsoft Office system', N'Microsoft Office', N'Microsoft Office 2016', N'Microsoft Office 2013', N'Microsoft® Mashup Runtime')
我无法对此进行测试,因为我无法获得足够的测试环境:/
那么,这行得通吗?有没有更好的方法来执行此操作?
我知道如何编写触发器,我只是在寻找正确的部分,因为我不想阻止生产盒上的错误连接。