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

时间:2018-02-28 14:08:31

标签: git azure-pipelines git-push

我对安全地允许VSTS构建在涉及SSO时对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。

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

2 个答案:

答案 0 :(得分:2)

不在代理计算机上安装Git Credential Manager只会导致凭据无法存储,并且您需要每次都提供凭据以连接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

答案 1 :(得分:0)

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

  1. 我没有意识到它没有安装在构建代理上。 (不是我的机器)
  2. 我认为SSO会神奇地了解PAT,并且不需要Windows凭据管理器条目。不是这样。
  3. 为在其场景中做出这些无效假设的其他人回答此问题。