【发布时间】: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