簡體   English   中英

如何在 SSIS 腳本任務中加密密碼?

[英]How to encrypt password in SSIS script task?

所以我在訪問電子郵件的 SSIS 包中有一個腳本任務。

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

我已經對包本身進行了加密,但仍然感到不安,因為它是 ScriptMain.cs 頁面上的純文本。 過去,我能夠在 WPF 應用程序上加密這些數據,但不確定如何將其轉換為腳本任務。 我是不是想多了? 有沒有辦法在連接管理器或其他可以增加一層保護的東西中設置它?

我想補充一點,我正在使用交換服務 API 連接到電子郵件。

您可以使用所謂的敏感包或項目參數; 映射到此類參數的環境參數以加密方式存儲在 SSIS 目錄中。 只需為您的密碼創建一個並使用.GetSensitiveValue()方法將其放入您的腳本任務中

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

正如馬特·馬森所描述的那樣。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM