1

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

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

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

我想补充一下,我正在使用交换服务 API 连接到电子邮件。

4

2 回答 2

1

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

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

正如马特马森所描述的那样。

于 2016-09-29T19:35:14.077 回答
0

根据 EWS 托管 API 客户端,“以本地 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;
        }
    }
于 2016-09-29T19:37:34.733 回答