gpt4 book ai didi

azure - 使用服务主体 - invalid_client 从发布管道运行 Azure CLI 脚本

转载 作者:行者123 更新时间:2023-12-01 21:32:05 26 4
gpt4 key购买 nike

我有一个 Azure CLI 脚本,它在 Cloud Shell 中运行得很好,但当我尝试将其包含在 devops 发布管道中时遇到了麻烦。出于调试目的,我将脚本简化为仅以服务主体身份登录,然后检索版本...

az login --service-principal -u http://[Service Principal name] -p [Service Principal password] --tenant [Service Principal tenant GUID]
az --version

...但仍然会出现同样的错误。

以下是我的 Azure CLI 任务的属性:

脚本类型:Shell
脚本位置:内联脚本
内联脚本:[同上]
脚本参数:
在脚本中访问服务主体详细信息:false
使用全局 Azure CLI 配置:false
工作目录:
标准错误失败:false
启用:true
出现错误时继续:false*
环境变量:

错误是:

2020-06-15T12:46:39.8710944Z ##[error]Error Code: [1]
2020-06-15T12:46:39.8724737Z ##[error]Error: Azure login failed
2020-06-15T12:46:39.8728448Z ##[error]Script failed with error: Get Token request returned http error: 401 and server response: {"error":"invalid_client","error_description":"AADSTS7000222: The provided client secret keys are expired. Visit the Azure Portal to create new keys for your app, or consider using certificate credentials for added security: https://learn.microsoft.com/azure/active-directory/develop/active-directory-certificate-credentials
Trace ID: d0f42793-739e-4ce9-9118-5049086aa800
Correlation ID: 2ad50471-9c2a-4c02-a4d0-189efad2f0c8
Timestamp: 2020-06-15 12:46:39Z","error_codes":[7000222],"timestamp":"2020-06-15 12:46:39Z","trace_id":"d0f42793-739e-4ce9-9118-5049086aa800","correlation_id":"2ad50471-9c2a-4c02-a4d0-189efad2f0c8","error_uri":"https://login.microsoftonline.com/error?code=7000222"}

我能够使用 Azure Cloud Shell 作为此服务主体进行身份验证,因此我很困惑为什么我显然无法在发布管道中执行相同的操作。

* 我尝试过使用 Continue on error: true ,尽管任务完成了,但输出中仍出现相同的错误。

最佳答案

要在 Azure CLI 中使用服务主体,无需手动登录。

正确的方法,请按照以下步骤操作。

1.从错误消息来看,您的服务主体的客户端 key (即客户端 key )已过期。所以你需要先检查一下,导航到azure portal -> Azure Active Directory -> 应用程序注册 -> 所有应用程序 -> 找到与您的服务主体相关的 AD 应用程序 -> 证书和 secret -> 检查 secret 是否过期。如果已过期,只需点击新建客户端 key 即可创建一个新客户端 key 并保存该值。

enter image description here

2.在 devops 中,导航到项目设置 -> 服务连接 -> 新服务连接 -> Azure 资源Manager -> 服务主体(手动)

enter image description here

enter image description here

enter image description here

然后用您的服务主体修复选项,您可以从应用程序注册页面中的 AD 应用程序获取值。 服务主体 ID应用程序(客户端)ID服务主体 key 客户端 secret

enter image description here

订阅 ID订阅名称 是您想要使用 Azure CLI 访问的内容,您可以在 azure 门户中找到它们。

enter image description here

输入值后 -> 验证 -> 验证并保存

enter image description here

3.在您的 Azure CLI 任务中 -> Azure 资源管理器连接 -> 在步骤 2 中选择服务连接。在我的示例中,我测试获取 Web我的订阅中的应用程序带有 az webapp show --name xxxx --resource-group xxxx(注意:无需手动使用 az login,它将自动使用在服务连接中配置的服务主体登录)。

enter image description here

然后运行它并检查结果,它工作正常。

enter image description here

关于azure - 使用服务主体 - invalid_client 从发布管道运行 Azure CLI 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62390138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com