【问题标题】:How to encrypt password in SSIS script task?如何在 SSIS 脚本任务中加密密码?
【发布时间】:2016-09-29 18:39:40
【问题描述】:

所以我在访问电子邮件的 SSIS 包中有一个脚本任务。

  ExchangeService service = new Microsoft.Exchange.WebServices.Data.ExchangeService(ExchangeVersion.Exchange2010_SP1);
  service.Credentials = new NetworkCredential("email@domain.com", "123");

我已经对包本身进行了加密,但我仍然对它在 ScriptMain.cs 页面上的纯文本感到不安。过去,我能够在说 WPF 应用程序上加密这些数据,但不确定如何将其转换为脚本任务。我是不是想太多了?有没有办法在连接管理器或其他可以增加一层保护的东西中进行设置?

我想添加我正在使用交换服务 API 连接到电子邮件。

【问题讨论】:

    标签: c# encryption ssis script-task


    【解决方案1】:

    您可以使用所谓的敏感包或项目参数;映射到此类参数的环境参数存储在加密的 SSIS 目录中。只需为您的密码创建一个,然后使用.GetSensitiveValue() 方法将其放入您的脚本任务中,例如

    Dts.Variables["$Package::YourPassword"].GetSensitiveValue().ToString()
    

    Matt Masson 所述。

    【讨论】:

    【解决方案2】:

    根据EWS Managed API clients ,“以本地 Exchange 服务器为目标的已加入域的客户端可以使用登录用户的默认凭据,假设凭据与邮箱相关联”

    所以你也许可以使用;

    service.UseDefaultCredentials = true;
    

    如果不可能,我建议将其存储在数据库中以进行检索。您将能够在数据库中保护/加密它。

    此外,如果您使用的是 SQL 2012 或更高版本,则可以使用敏感参数。这是假设您要参数化密码和/或用户名。

        public void Main()
        {
            try
            {
                string value = Dts.Variables["$Package::ExchangePassword"].GetSensitiveValue().ToString();
    
                Dts.TaskResult = (int)ScriptResults.Success;
            }
            catch (Exception e)
            {
                Dts.Log(e.Message, 0, null);
                Dts.TaskResult = (int)ScriptResults.Failure;
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多