用户注销后,无法从SQL Agent进行GPG解密

时间:2018-10-10 08:34:54

标签: encryption ssis gnupg pgp

设置:- 我正在尝试通过Ssis包中的脚本任务中的C#代码解密传入的文件。下面是生成的命令,该命令在Visual Studio中通过调试模式执行时效果很好。此外,Visual Studio是使用服务帐户凭据打开的。

-homedir C:\ Users \ serviceaccounntName \ AppData \ Roaming \ gnupg \“ --batch-是--passphrase MyPassphrase -d -o” outputfileName“-始终信任” SourceFileName“

问题: 通过调试模式运行后,通过SQL代理作业也可以正常运行。 但是,一旦我从设置了所有这些内容的远程桌面注销,传入的文件就不再通过SQl代理程序进行解密 并继续执行。我检查了任务管理器,我可以看到pinentry.exe在服务帐户用户下运行。为了使其正常工作,我终止了任务并从调试模式下调试了一个示例文件,该文件将要求输入密码并发布,甚至sql agent作业也开始工作。但是,一旦我注销,该操作就会再次发生。

在脚本和流程任务中,我都尝试使用不带--homedir选项的命令,但是相同的行为仍在继续。

谢谢

1 个答案:

答案 0 :(得分:0)

下面是最后起作用的东西。

  1. 确保gpg代理会话处于活动状态。为此,我手动运行了一个解密包(调试模式)并输入了密码。
  2. 从CMD(命令提示符)运行以下两个命令。 gpg-agent.exe allow-loopback-pinentry gpgconf –杀死gpg-agent
  3. 我在批处理文件中使用以下命令,该命令从我的SSIS处理任务中调用。 @echo OURPASSPHRASE | gpg.exe --batch --pinentry-mode = loopback --passphrase-fd 0 -d -o FILEPath \ FileName.txt FilePath \ FileName.txt.gpg

(以上所有操作都是通过我们用于运行sql作业的服务帐户完成的。)

参考以下链接 https://github.com/carlolars/gnupg2-msys2/issues/1

谢谢 希望对您有所帮助。