我正在使用TFS 2017更新2发布处理。我有一个在域中工作的有效部署过程(它成功地在10个不同的部署环境下运行)。现在我需要部署到一个不同的环境中,它生活在不同的A/D域中。
不幸的是,域信任是域之间的一种方式,而目标域(“产品”)不信任我正在安装的域("Dev")。
我看到的问题似乎是臭名昭著的“双跳”证书问题。
我的TFS应用程序层可以看到(并触发)运行TFS vNext代理2.117.2的发布服务器,我还可以在发布服务器上执行内联PowerShell和本地托管的PowerShell脚本。
但是,一旦我尝试访问一个PowerShell脚本,而不是在发布服务器上(无论是在生产域中和发布服务器,还是在Dev域中),我就会得到一个错误:
2018-02-13T19:03:32.6611149Z ##[error]. : AuthorizationManager check failed.
At line:1 char:3
+ . '\\unc\path\to\share\TFSScripts\Emit-Variables2. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess运行TFS发布服务的帐户在从发布服务器的桌面运行时已被确认具有对脚本文件的访问权限,因此访问不应成为问题。
对该问题的进一步测试表明,如果我们使用-Authorization CredSSP手动创建一个CredSSP,并传递一个凭据对象,我们就可以成功地访问off服务器资源。
但是,我看不出有什么方法可以将TFS配置为使用CredSSP作为授权机制。
所涉及的服务器是W2K8R2,因此我们不能使用W2K12引入的受限委托功能。我们也尝试过SPN,但也没有取得类似的结果。Kerberos被迫使用TCP,方法是将最大数据包大小设置为0(从而防止UDP数据包碎片和相关问题)。我们的最大Kerberos数据包大小设置为48000。
在最终结束状态下,TFS应用服务器以及所有TFS工件和发布脚本将位于防火墙一侧的"dev“域中.而生产发布服务器和要发布的一组服务器将存在于防火墙的另一端的“生产”域中。
CredSSP似乎是实现这一目标的唯一途径--但我认为没有办法对TFS进行配置。
这不可能是唯一的问题。有人能提供一些关于如何绕过这个问题的洞察力吗?
发布于 2018-02-14 12:21:30
对不起,在访问网络资源时,不能强制TFS使用CredSSP。以及使用CredSSP作为授权机制的TFS的配置
您必须在powershell中手动启用CredSSP。
另一种方法是查看这个解决方案,它可能会起到作用:让部署代理在影子帐户下运行,从而实现TFS2015发布管理:部署到不受信任的域。
https://stackoverflow.com/questions/48775242
复制相似问题