2016-09-29 30 views
0

所以我有一个脚本任务在访问邮件的SSIS包中。如何加密SSIS脚本任务中的密码?

ExchangeService service = new Microsoft.Exchange.WebServices.Data.ExchangeService(ExchangeVersion.Exchange2010_SP1); 
    service.Credentials = new NetworkCredential("[email protected]", "123"); 

我已加密的包本身,但我仍然感觉不安,它是在ScriptMain.cs页面上纯文本。在过去,我可以对WPF应用程序中的这些数据进行加密,但不知道如何将其转换为脚本任务。我在想这个吗?有没有一种方法可以在连接管理器或其他可以添加一层保护的设置中进行设置?

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

回答

1

您可以使用所谓的敏感包或项目参数;映射到这些参数的环境参数存储在加密的SSIS目录中。只要创建一个密码,由Matt Masson描述.GetSensitiveValue()方法得到它在你的脚本任务一样

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

0

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; 
     } 
    }