我对安全地允许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。
有人能否进一步阐明这一点?我们今天晚些时候正在与微软开一张票。如果他们可以帮助我们,那么我会更新这篇文章。
答案 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)
我的解决方案是让管理员在构建代理上安装凭据管理器。
为在其场景中做出这些无效假设的其他人回答此问题。