1

そのため、電子メールにアクセスする SSIS パッケージにスクリプト タスクがあります。

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

パッケージ自体を暗号化しましたが、ScriptMain.cs ページでプレーン テキストになっていることにまだ不安を感じています。以前は、たとえば WPF アプリケーションでこのデータを暗号化できましたが、それをスクリプト タスクに変換する方法がわかりませんでした。私はこれを考えすぎていますか?接続マネージャーまたは保護のレイヤーをもう 1 つ追加する何かでこれを設定する方法はありますか?

追加したかったのは、交換サービス API を使用して電子メールに接続していることです。

4

2 に答える 2

1

いわゆる機密パッケージまたはプロジェクト パラメーターを使用できます。そのようなパラメーターにマップされた環境パラメーターは、暗号化された SSIS カタログに格納されます。パスワード用に作成し、次の.GetSensitiveValue()ようなメソッド を使用してスクリプト タスクで取得するだけです。

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

Matt Massonの説明によると。

于 2016-09-29T19:35:14.077 に答える
0

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;
        }
    }
于 2016-09-29T19:37:34.733 に答える