VSTS Build - 使用个人访问令牌(PAT)对Git存储库进行写访问

问题描述 投票:0回答:2

我对使用SSO时安全地允许VSTS构建具有对Git存储库的写访问权的最佳方法感到困惑。

我希望VSTS构建任务使用有限范围的PAT来推送文件,而不是使用提供的OAuth令牌$(System.AccessToken)。我是DevOps团队的成员,我们希望能够在不涉及基础架构团队的情况下根据需要发布或撤销PAT。 PAT将作为机密安全地存储并链接到构建。

“读取”git命令可以使用这种方法,但是在构建代理上“编写”命令会弹出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这样的文章表明,我可以为项目集合构建服务提供“分支”和“贡献”权限到存储库并启用OAuth,然后我根本不需要进行身份验证。但这不是一个大安全噩梦,因为你现在已经给VSTS中的任何构建修改了你打开的存储库中的文件的能力吗?

这个Stack Overflow帖子44773415告诉我,我应该能够将我的提交推送到这样的远程仓库:

git push -q https://{MY_PAT}@my-org.visualstudio.com/path/to/my/_git master

这些选项都没有奏效。所有这些都弹出构建代理上的SSO对话框。

我必须误解这是如何工作的。不可否认,我从2010年左右开始就没有使用过git,我们正在将代码从TFS迁移到VSTS。

任何人都可以进一步阐明这一点吗?我们今天晚些时候正在与微软开一张票。如果他们可以帮助我们,那么我会更新这篇文章。

git azure-pipelines git-push
2个回答
2
投票

不在您的代理计算机上安装Git Credential Manager只会导致不存储凭据,并且您需要在每次与VSTS中的远程仓库连接时提供凭据。

但是有一种方法可以通过提供PAT(通过PAT进行身份验证)来停止弹出SSO对话框(不通过电子邮件地址和密码进行身份验证),例如您可以通过命令推送更改:

git push https://Personal%20Access%20Token:[email protected]/project/_git/repo

#e.g. git push https://Personal%20Access%20Token:t03iai4yextum29xa6k5qbfl5jrvpt4zcaakafkhbhlpis7zknlq@marinaliu.visualstudio.com/Git2/_git/myrepo

0
投票

我的解决方案是让管理员在构建代理上安装凭据管理器。

  1. 我没意识到它没有安装在构建代理上。 (不是我的机器)
  2. 我假设SSO会神奇地了解PAT,并且不需要Windows凭据管理器条目。不是这样。

为在他们的场景中做出这些无效假设的其他人回答这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.