使用包保护级别的SSIS包

时间:2013-01-08 06:20:03

标签: ssis

SSIS包具有一个名为ProtectionLevel的属性,其中包含几个可能的值。  任何人都可以提供可用的ProtectionLevel选项的说明以及它们在包中的行为示例吗?  使用ProtectionLevel属性的优点和缺点是什么。

感谢。

1 个答案:

答案 0 :(得分:20)

包保护级别有几种不同的风格。这个想法是SSIS知道像连接字符串这样的东西可能包含敏感信息,比如密码。如果您是供应商,那么包本身可能包含专有信息,而您的产品是WhizBangPackage,您不希望人们看到魔术是如何工作的。由于这些原因以及更多原因,MS的概念是如何将基础XML和所有SSIS包都写入磁盘。

  • EncryptSensitiveWithUserKey这是默认设置。任何可能敏感的东西都被认为是敏感的。保存包时,VS将使用原始作者的Active Directory帐户的一些位来加密连接字符串之类的内容。即使该连接字符串使用SSPI,因此没有密码,它仍然会加密底层XML中的连接字符串。当程序包运行时,SSIS将与AD通信以解密该信息。一般来说,一切都运行良好,直到包的原始作者不再与公司及其AD帐户被删除。我们遇到的SQL Server 2005是运行该程序包的SQL代理作业无法解密程序包。开发人员可以打开包,它在交互模式下运行良好,但在非交互模式下失败。立即解决方案是将作者更新为具有活动AD帐户并重新部署的人员。这可以在当前/未来版本中修复,但这是我关于这个版本的战争故事。

  • DontSaveSenstive这是我唯一需要使用的设置。保存时,SSIS不会在.dtsx文件中写入任何类似密码的内容。根据我的经验,它在保存到您当前的设计会话之后也会将其删除,从而导致立即验证错误。特别是,这使得FTP任务成为PITA与协同工作,除非您正在使用配置,您应该这样做,因为这是在环境之间迁移包的唯一有效方式。使用配置帮助SSIS连接管理器“记住”密码,而不会碰到磁盘。

  • EncryptSensitiveWithPassword现在使用开发人员提供的密码,而不是使用AD帐户加密敏感位。这样做的缺点是对于超过1人的团队,你现在拥有一个共享密码,并且由多个人共享密码会破坏密码的目的。

  • EncryptAllWithPassword这不仅仅是加密敏感位,而是使用密码加密整个XML。与以前相同的缺点,共享秘密=没有秘密。此外,如果你丢失钥匙,你就会被重新打造,并重新创造你的包裹。

  • EncryptAllWithUserKey与密码相同,它使用作者的AD帐户作为密钥加密整个文件。与上述相同的缺点是,该帐户消失了,没有钥匙可以解锁包裹。

  • ServerStorage - 无论您的本地设置是什么,假设您部署到msdb目录,程序包将在数据库中加密。我从来没有用它来说实话。我们部署到msdb,但依赖我们的配置来保密敏感数据。