【问题标题】:Secure deployment of SSIS packageSSIS 包的安全部署
【发布时间】:2013-09-13 16:06:22
【问题描述】:

我们正在完成 SSIS 包。然而,当我们进入部署阶段时,我们惊讶地意识到 SSIS 包的部署在安全性方面并不是很直接。

我们需要在生产服务器中使用批处理文件或 .NET 程序运行 SSIS 包。调用者(批处理或 .NET)应通过提供参数(如源文件、目标数据库、用户 ID、密码等)调用 SSIS 包,并从 SSIS 读取返回代码(成功/错误)。用户 ID 和密码不应采用任何人都可以看到的明文格式。我们做了一些研究,发现部署可以使用许多选项来完成,例如 XML 配置、SQL 服务器配置、环境变量、注册表等,但没有提到任何关于密码加密的内容。我们如何实现安全性并确保在多个环境(DEV、UAT、PROD)中部署相同包的灵活性并在部署时简单地更改环境特定变量。

我正在寻找 MVC/Entity 框架在应用程序第一次运行时使用以下代码自动加密连接字符串的东西。

Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
            ConfigurationSection section = config.GetSection("connectionStrings");
            if (!section.SectionInformation.IsProtected)
            {
                section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
                config.Save();
            }

【问题讨论】:

  • 从哪里执行包?如果远程/在 ssis 服务器上,那么您可以制作 web 服务,它将获取参数并执行包 info。如果用户提供自己的密码,那么您可以将包保护级别设置为不存储密码info
  • 您好 T..感谢您回来。该软件包将从不同于数据库服务器的应用程序服务器运行。计划程序将运行包(Batch 或 .NET)。使用id和密码需要加密保存。

标签: sql encryption batch-file ssis


【解决方案1】:

你的问题让人困惑。

默认情况下,SSIS 将使用作者的 Active Directory、AD 帐户加密任何可能具有敏感性质的内容。 SSIS Packages Using Package Protection Level 此包保护级别为EncryptSensitiveWithUserKey 如果您在连接字符串中使用 SQL Server 用户和密码,则 SSIS 包中的静态值将被加密。不信,我,打开文件,找到连接管理器的ConnectionString属性。

部署不是通过 XML、SQL Server、注册表等完成的。这些是指创建和存储 SSIS 包在运行时可能访问的配置值的方法.配置没有解密值的概念。这并不是说您不能加密值并让它们为调用者解密,只是没有内置机制来表示“使用此密钥解密”。

我们使用的一种方法是使用 SQL Server 来保存加密数据。我们创建授权使用密钥的角色,然后根据角色成员资格自动解密数据的计算列。不在该角色中查询该列的人只会得到 NULL 作为解密值。它的使用效果很好。 EncryptionPOC

部署通过

完成
  • 文件拷贝
  • dtutil.exe
  • dtsinstall.exe
  • .NET api

【讨论】:

  • 谢谢比尔,非常感谢您的建议。我能够基于 EncryptionPOC 创建一个测试表。但是如何使用这些信息来运行 SSIS 包。我对 SSIS 很陌生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多