2016-09-29 32 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; 
     } 
    }