VSTS 构建 - 使用个人访问令牌 (PAT) 对 Git 存储库进行写入访问
VSTS Build - Write access to Git repositories using personal access token (PAT)
我对在涉及 SSO 时安全地允许 VSTS 构建具有对 Git 存储库的写访问权限的最佳方法感到困惑。
我希望 VSTS 构建任务使用有限范围的 PAT 来推送文件,而不是使用提供的 OAuth 令牌 $(System.AccessToken)。我在 DevOps 团队工作,我们希望能够在不涉及基础设施团队的情况下根据需要发布或撤销 PAT。 PAT 将作为秘密安全存储并链接到构建。
"Read" git 命令适用于此方法,但构建代理上的 "write" 命令像这样弹出 SSO 对话框。
git -c http.extraheader="AUTHORIZATION: bearer {MY_PAT}" push
像 vsts/git/set-up-credential-managers 这样的文章告诉我,我需要使用 Git 凭据管理器将凭据存储在构建代理上。但是使用这种方法我不必访问构建服务器来存储我们维护的每个 PAT 的凭据。
像 vsts/build-release/actions/scripts/git-commands 这样的文章建议我可以为项目集合构建服务提供对存储库的 "Branch" 和 "Contribute" 权限并打开 OAuth,然后我就不需要了完全验证。但这不是一个很大的安全噩梦,因为您现在已经为 VSTS 中的任何构建提供了修改您打开的存储库中的文件的能力吗?
这个 Stack Overflow post 告诉我应该能够像这样将我的提交推送到远程仓库:
git push -q https://{MY_PAT}@my-org.visualstudio.com/path/to/my/_git master
None 这些选项都有效。他们都在构建代理上弹出 SSO 对话框。
我一定是误解了它是如何工作的。不可否认,自 2010 年左右以来我就没有使用过 git,我们正在将我们的代码从 TFS on prem 迁移到 VSTS。
任何人都可以进一步阐明这一点吗?我们将在今天晚些时候与微软开票。如果他们可以帮助我们,那么我会更新这个 post。
不在您的代理计算机上安装 Git 凭据管理器只会导致不会存储凭据,您需要为每次连接 VSTS 中的远程仓库提供凭据。
但是有办法通过提供 PAT(通过 PAT 验证)来停止弹出 SSO 对话框(不通过电子邮件地址和密码验证),例如您可以通过命令推送更改:
git push https://Personal%20Access%20Token:PAT@account.visualstudio.com/project/_git/repo
#e.g. git push https://Personal%20Access%20Token:t03iai4yextum29xa6k5qbfl5jrvpt4zcaakafkhbhlpis7zknlq@marinaliu.visualstudio.com/Git2/_git/myrepo
我的解决方案是让管理员在构建代理上安装凭据管理器。
- 我没有意识到它没有安装在构建代理上。 (不是我的机器)
- 我假设 SSO 会神奇地知道 PAT,并且不需要 Windows 凭据管理器条目。不是这样。
为在他们的场景中做出这些无效假设的任何其他人回答这个问题。
我对在涉及 SSO 时安全地允许 VSTS 构建具有对 Git 存储库的写访问权限的最佳方法感到困惑。
我希望 VSTS 构建任务使用有限范围的 PAT 来推送文件,而不是使用提供的 OAuth 令牌 $(System.AccessToken)。我在 DevOps 团队工作,我们希望能够在不涉及基础设施团队的情况下根据需要发布或撤销 PAT。 PAT 将作为秘密安全存储并链接到构建。
"Read" git 命令适用于此方法,但构建代理上的 "write" 命令像这样弹出 SSO 对话框。
git -c http.extraheader="AUTHORIZATION: bearer {MY_PAT}" push
像 vsts/git/set-up-credential-managers 这样的文章告诉我,我需要使用 Git 凭据管理器将凭据存储在构建代理上。但是使用这种方法我不必访问构建服务器来存储我们维护的每个 PAT 的凭据。
像 vsts/build-release/actions/scripts/git-commands 这样的文章建议我可以为项目集合构建服务提供对存储库的 "Branch" 和 "Contribute" 权限并打开 OAuth,然后我就不需要了完全验证。但这不是一个很大的安全噩梦,因为您现在已经为 VSTS 中的任何构建提供了修改您打开的存储库中的文件的能力吗?
这个 Stack Overflow post
git push -q https://{MY_PAT}@my-org.visualstudio.com/path/to/my/_git master
None 这些选项都有效。他们都在构建代理上弹出 SSO 对话框。
我一定是误解了它是如何工作的。不可否认,自 2010 年左右以来我就没有使用过 git,我们正在将我们的代码从 TFS on prem 迁移到 VSTS。
任何人都可以进一步阐明这一点吗?我们将在今天晚些时候与微软开票。如果他们可以帮助我们,那么我会更新这个 post。
不在您的代理计算机上安装 Git 凭据管理器只会导致不会存储凭据,您需要为每次连接 VSTS 中的远程仓库提供凭据。
但是有办法通过提供 PAT(通过 PAT 验证)来停止弹出 SSO 对话框(不通过电子邮件地址和密码验证),例如您可以通过命令推送更改:
git push https://Personal%20Access%20Token:PAT@account.visualstudio.com/project/_git/repo
#e.g. git push https://Personal%20Access%20Token:t03iai4yextum29xa6k5qbfl5jrvpt4zcaakafkhbhlpis7zknlq@marinaliu.visualstudio.com/Git2/_git/myrepo
我的解决方案是让管理员在构建代理上安装凭据管理器。
- 我没有意识到它没有安装在构建代理上。 (不是我的机器)
- 我假设 SSO 会神奇地知道 PAT,并且不需要 Windows 凭据管理器条目。不是这样。
为在他们的场景中做出这些无效假设的任何其他人回答这个问题。