繁体   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