限制用户只能访问ssis软件包

时间:2019-12-02 18:57:50

标签: sql-server ssis user-permissions

我们正在运行SQL Server2016。出于内部政治原因,我不能以自己想要的方式限制访问。假设我不能改变前提。

我们有一个用于SSIS程序包的用户。不幸的是,一些开发人员正在使用此用户使用ssms直接登录db。我需要在不更改密码或其他内容的情况下阻止它。我需要的是仅允许用户访问从SSIS包运行的数据库,而不能以其他任何方式访问数据库。

我没有在寻找有关如何解决此问题的其他建议。我已经了解了其中大多数信息,因为无法更改的管理决策而陷入困境。

有人可以告诉我如何以这种方式限制用户吗?

1 个答案:

答案 0 :(得分:1)

一种方法是使用LOGON触发器

第一种腮红方法可能是拒绝任何看起来像SSMS应用程序的过程

CREATE OR ALTER TRIGGER logon_developer_check
ON ALL SERVER
FOR LOGON
AS 
BEGIN
    IF (ORIGINAL_LOGIN() = 'triskydeveloper'
    and EXISTS
    (
    SELECT
        *
    FROM
        sys.sysprocesses AS S
    WHERE
        S.spid = @@SPID
        AND S.program_name LIKE 'Microsoft SQL Server Management%'
    )
    BEGIN
        ROLLBACK
    END
END

但是,作为狡猾的小虫子的开发人员,然后将编写他们自己的.NET应用程序或使用SQLCMD,这样您就陷入了试图找出所有可能出现的program_name的麻烦之中。

相反,我将查看hostname上的sys.sysprocesses列-如果连接不是来自服务器本身,则拒绝连接。除非您必须与能够将RDP部署到服务器上的开发人员打交道。

哦,如果您破坏了登录触发器却拒绝了所有内容,请使用SQLCMD以及专用的管理控制台,DAC和

sqlcmd.exe -S localhost -d master -Q "DISABLE TRIGGER ALL ON SERVER" -A