SSIS包中的Windows身份验证

时间:2015-09-10 22:31:02

标签: ssis

我正在处理连接到SQL服务器的第一个SSIS包。在我开发它的时候,我正在使用Windows身份验证进行连接,因为我的Windows用户名被添加到我正在处理的数据库的安全性中。现在,我的IT部门创建了一个服务帐户来部署包。我的问题是,在部署之前如何更改连接的用户名/密码?是否有连接可以读取的配置文件?怎么办呢?

1 个答案:

答案 0 :(得分:3)

您实际上有两个安全上下文需要关注。第一个是部署您创建的软件包或项目所需的帐户。第二个是能够执行您创建的包所需的帐户。

端到端Windows身份验证(部署,执行和数据源)

部署帐户需要具有对其所驻留的服务器或文件系统的正确权限。执行帐户可能配置了一组非常不同的权限,主要与执行您在程序包中构建的任何任务所需的权限相关。

为了在您自己的不同用户下部署软件包,可能就像打开一个应用程序(如命令提示符,Windows资源管理器或SSIS部署实用程序)一样简单,并将软件包移动到正确的位置。这可以在您的工作站或服务器上处理。

对于执行帐户,您可以选择,具体取决于您如何操作包的执行。这里有几个场景:

  • 如果您将使用SQL Server代理程序执行程序包,并且执行程序包所需的帐户是SQL Server代理程序服务帐户,则只需创建作业即可运行程序包。除非另有编程,否则从SQL代理作业调用的包将作为SQL代理帐户运行
  • 如果要通过SQL Server代理作业执行包,并且您需要用于执行包的帐户不是SQL代理服务帐户,则可以创建SSIS代理帐户并在SSIS包中指定该帐户执行工作步骤。在SQL Server中创建凭证后,就像更改下拉列表一样简单。
  • 如果您将从SQL代理作业使用命令行执行,则上述两种方案仍然适用。
  • 如果您将使用另一种使用命令行执行方法的机制(如Windows Scheduler或其他企业调度工具),您仍然可以使用该过程"运行为"执行帐户。

仅用于部署和执行的Windows身份验证(数据的SQL身份验证)

以上详细信息仍适用于通过作业和/或命令行执行SSIS包,但您需要在程序包运行时将用户名和密码传递给连接管理器。您有多种选择可以执行此操作,并且应遵循组织已建立的任何已建立的模式或标准。 SSIS长期以来一直支持使用基于XML的.dtsConfig文件,该文件可以在运行时读入包中。 SSDT / BIDS中有一个GUI,它将引导您完成创建文件的过程,并告诉您希望它能够配置哪些软件包属性。

提醒

当您尝试在SSIS包中保存敏感信息时要小心。有一个名为PackageProtectionLevel的属性,可以在项目和包级别设置。默认情况下,它设置为EncryptSensitiveWithUserKey。现在,不要让这个属性诱使你认为整个包都是加密的。它不是。此设置专门指SSIS如何处理键入为敏感的属性。例如,连接管理器中的密码被键入为敏感信息。 SSIS将加密该字段,以便它不以纯文本形式存储密码。但它仅适用于保存/存储包。您可以通过变量或配置文件传递纯文本,该文件将在运行时读入敏感字段(如密码)。

如果您需要能够使用已开发的软件包保存密码,我建议将PackageProtectionLevel更改为EncryptSensitiveWithPassword,并将其设置为您的团队能够记住或用于保护其他资产的内容。一旦设置到位,您就可以检查"保存密码"连接管理器中的框,并将其包含在软件包所在的位置。如果您不需要使用包保存该密码,请将该属性更改为DontSaveSentitive。就像我提到的,你仍然可以通过配置或其他方式传递凭证,但它不会被存储在包本身内。