Oauth 从发布管道登录Azure Devops CLI的最佳方式是什么?
我正在我的一个管道上使用Azure Devops CLI。为了使用CLI,我需要首先登录(验证)。与使用RESTAPI不同,我不能使用可用的OAuth令牌 以下是我对我的选择的理解:Oauth 从发布管道登录Azure Devops CLI的最佳方式是什么?,oauth,azure-devops,command-line-interface,Oauth,Azure Devops,Command Line Interface,我正在我的一个管道上使用Azure Devops CLI。为了使用CLI,我需要首先登录(验证)。与使用RESTAPI不同,我不能使用可用的OAuth令牌 以下是我对我的选择的理解: 我可以使用映射到此环境变量的PAT进行“az登录”: AZURE_DEVOPS_EXT_PAT 我现在就是这样做的。 显然,您可以使用服务主体。我最喜欢这个,因为理论上我应该能够让这个原则适用于我团队中的每个人。对吗 使用带有用户/密码的“az登录”。这是最不可取的方法,因为它涉及到传递凭证。太乱了 尽管我的管道具
我没有订阅,只有一个租户id,我们没有创建任何Azure资源,我们是一个AWS商店,恰好只对CICD使用ADO。使用
az devops登录
而不是az登录
从您的管道使用:
- script: echo $(AccessToken) | az devops login
env:
AccessToken: $(System.AccessToken)
几个有趣的注释:
- 机密(如System.AccessToken)可用于脚本,除非您将其作为环境变量显式传递
- System.AccessToken变量是生成代理的默认访问令牌
- 有一个特定于项目的生成代理和一个项目集合生成代理。实际上,您使用的是由项目管道设置中的“限制对当前项目范围的访问”标志控制的
- 如果试图操作对象,可能需要提升生成代理的权限。例如,如果希望生成代理更新存储库,可以授予存储库的“创建标记”权限
- 您还可以使用指定的权限创建自己的PAT令牌