【问题标题】:VSTS Build - Write access to Git repositories using personal access token (PAT)VSTS Build - 使用个人访问令牌 (PAT) 对 Git 存储库进行写入访问
【发布时间】:2018-03-02 01:06:06
【问题描述】:

当涉及 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 on prem 迁移到 VSTS。

谁能进一步阐明这一点?我们今天晚些时候将向 Microsoft 开票。如果他们可以帮助我们,那么我会更新这篇文章。

【问题讨论】:

  • 此时,问题似乎是构建代理上未安装 Git 凭据管理器,因此使用我的 PAT 没有写入 Windows 凭据管理器,这是导致SSO 对话框。

标签: git azure-pipelines git-push


【解决方案1】:

在您的代理机器上不安装 Git 凭据管理器只会导致凭据不会被存储,并且您需要为每次连接到 VSTS 中的远程 repo 提供凭据。

但是有办法通过提供 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

【讨论】:

  • 谢谢玛丽娜刘。这是一个正确的答案,工作...如果安装了 git 凭据管理器。如果没有安装它,无论提供什么凭据或采用什么格式,都会弹出 SSO 对话框。如果没有凭据管理器提供的“翻译层”,则不会创建 windows 凭据,因此对话框...
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2021-10-19
    • 2022-11-22
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多