2016-09-29 7 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, но не уверен, как это можно перевести на задачу сценария. Думаю ли я это? Есть ли способ установить это в менеджерах соединений или что-то еще, что добавит еще один уровень защиты?

Я хотел добавить, что я использую API служб обмена для подключения к электронной почте.

ответ

1

Вы можете использовать так называемые важные параметры пакета или проекта; параметры среды, сопоставленные таким параметрам, хранятся в каталоге SSIS зашифрованным. Просто создать для вашего пароля и получить его в задаче Script с .GetSensitiveValue() метод как

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

, как описано Matt Masson.

0

Согласно EWS Managed API clients, «Домен-присоединился клиентов, целевой показатель на территории обмена сервер может использовать учетные данные по умолчанию пользователя, вошедшего, предполагая, что учетные данные, связанные с почтовым ящиком»

Так что вы можете быть в состоянии использовать;

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; 
     } 
    } 
Смежные вопросы