小编Wok*_*ket的帖子

从具有不同用户权限的存储过程执行 SSIS 包

由于所需的权限级别不同,我在允许我的用户以合理的方式执行 SSIS 包时遇到了问题。

场景:我们创建了一个数据仓库,有两个不同的 SSIS 包负责加载数据,一个是自动运行的(通过 SQL 代理作业,并且工作正常),另一个必须运行 -一旦上游数据最终确定和清理等,用户的需求。

这个包执行非常有特权的操作,包括在运行开始时备份数据库(可以肯定,可以肯定),删除和重新创建计算表等。

我已经编写了一个存储过程来通过 [SSISDB].[catalog].[create_execution] 和 [SSISDB].[catalog].[start_execution] 存储过程来执行这个作业......这在我的帐户下运行时很好用(我是系统管理员)。

由于 SSISDB 和 MSDB 需要更高级别的权限才能将执行排入队列,因此普通用户运行存储过程失败,并且包本身失败,因为它在其(低级)安全上下文中运行。

我试过的

我试图在存储过程中使用“执行为”来解决这个问题,但是由于跨数据库链接问题、可信标志等,这失败了。

我还试图通过让代理作业运行包来解决这个问题,并且只是从存储过程中运行代理作业,但是我很快就进入了一个痛苦的世界,涉及:

  • 无法在每个作业的基础上设置执行权限
  • 希望通过中央服务器角色配置此访问权限以适应随时间变化的员工,并且工作只能有一个用户作为所有者
  • 代理帐户、凭据与 sql-auth 登录等的黑暗世界

计划 C 和 D

我能想到的唯一选择是创建一个具有提升权限的专用 SQL Server 登录,并相信用户不会传递凭据/失去对谁安排导入的可审计性(如何在其他领域解决此问题)组织),或者自定义构建一个 Web 前端,纯粹是为了允许用户作为他们的“服务器角色”帐户进行身份验证,然后让 Web 应用程序在第二个(特权)连接下运行存储过程。

所以....

关于如何:

  • 让 SSIS 包执行特权操作
  • 由低权限用户执行(使用 AD windows 帐户)
  • 最好是通过中央服务器角色管理运行作业的访问权限(我无法轻松为他们创建新的 Windows 组)
  • 并且任何新的中间/代理帐户都是 SQL Server 身份验证帐户(同样,对 AD 进行更改的能力非常有限)

我知道这里有很多活动部件(有些感觉像是在旋转刀片),所以如果您觉得我错过了任何其他信息,请告诉我。

干杯,蒂姆

编辑....

所以今天我创建了一个具有 ssis_admin 权限的专用 SQL Server 登录,创建了该用户拥有的三个 SQL Server 代理作业,并更新了我的最终用户调用execute as该用户的存储过程。由于无法create execution作为 SQL Server …

sql-server ssis sql-server-2014 ssis-2014

14
推荐指数
1
解决办法
2619
查看次数

标签 统计

sql-server ×1

sql-server-2014 ×1

ssis ×1

ssis-2014 ×1