2016-09-29 4 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カタログに格納されています。ちょうどあなたのパスワードを作成し、Matt Massonによって記載されているように

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

よう.GetSensitiveValue()メソッドを使用して、スクリプトタスクでそれを取得します。

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; 
     } 
    } 
関連する問題