Sql 如何在SSIS中加密变量值

Sql 如何在SSIS中加密变量值,sql,encryption,ssis,passwords,ssis-2012,Sql,Encryption,Ssis,Passwords,Ssis 2012,我正在开发一个从第三方SFTP服务器导入数据的例程。此服务器使用WinSCP创建SFTP连接,并为连接使用SSH私钥,而不是用户名和密码。因此,我在脚本任务中创建连接,如下所示: SessionOptions sessionOptions = new SessionOptions { Protocol = Protocol.Sftp, HostName = ftpSite, UserName = userna

我正在开发一个从第三方SFTP服务器导入数据的例程。此服务器使用WinSCP创建SFTP连接,并为连接使用SSH私钥,而不是用户名和密码。因此,我在脚本任务中创建连接,如下所示:

SessionOptions sessionOptions = new SessionOptions
        {
            Protocol = Protocol.Sftp,
            HostName = ftpSite,
            UserName = username,
            Password = password,
            SshHostKeyFingerprint = sshKey,
            SshPrivateKeyPassphrase = "mypassword",
            SshPrivateKeyPath = @"C:\path\to\private.ppk"
        };
我很乐意将私钥路径存储在数据库表中(其中包含我的连接设置),但我想将SshPrivateKeyPassphrase存储在加密的地方。我最初认为我可以创建一个加密的变量,因此如果查看包的xml,它不会直接公开密码,但我可以在代码中引用该变量以将密码传递给连接

我还考虑创建一个虚拟连接,看看是否可以引用该连接并在代码中获取密码,但这似乎有点假


包中的解决方案是密码的,我只是尝试覆盖所有的基础,因此如果有人访问了包,而不应该访问,他们将不会获得私钥密码短语,因为这将导致我们各种各样的问题

由于您标记了2012,我立即想到的是一个包级参数,因为您可以将其标记为敏感,但在包执行期间它们是只读的。你可以用一个专用的包来伪装它,假设它收到了正确的值,然后让一个主包读入该值并将其传递给孩子。我来玩玩这个,但这似乎有点假。我认为SSIS内部可能有一种方法可以轻松加密变量的值,但似乎我需要重新考虑我的过程。