我使用 Azure Key Vault 来存储我在 DevOps Pipelines 运行时检索和使用的机密。我的 DevOps 项目使用了所需的 Azure 订阅,由 Azure 资源管理器(工作负载身份联合)注册和授权。授权后,我还可以通过 DevOps 库轻松查看 Azure Key Vault 中的机密并从那里使用它们。该连接还在 Microsoft Entra ID 中显示为具有显示名称“我的应用程序”和正确 ID 的应用程序。该应用程序还可以在 Azure Key Vault 中看到,并具有访问策略部分中的 Get 和 List 授权。
在第二次运行 DevOps 管道时,应用程序名称失去有效性。无法再在访问策略内解析该应用程序。在 Key Vault 中,应用程序显示为“未知”,并且还具有通过 Azure 资源管理器自动配置的其他权限
作业前下载机密期间我的管道出现错误:
"The user, group or application 'appid=***;oid=ce890xxc-97xx-4703-bxx8-26exxa3c39xx;iss=https://sts.windows.net/<tenant>/' does not have secrets get permission on key vault
如果我通过 DevOps 服务连接更新 Azure 资源管理器连接,则会再次更正此问题,并且我可以在下次运行之前修复该错误。管道长期保持不变。为什么 Microsoft Entra ID 在单次使用后会丢失此服务连接的身份?
我为现有 Azure AD 服务主体之一创建了一个 Azure DevOps ARM 服务连接,并将其添加到 Key Vault 的访问策略中:-
我的服务负责人:-
Azure DevOps 服务连接:-
添加了
powershell应用程序在访问策略中获取、列出、权限:-
密钥库秘密:-
任务第一次运行:-
我的 Yaml 管道:-
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: AzureKeyVault@2
inputs:
azureSubscription: 'PowershellSid'
KeyVaultName: 'siliconkeyvault84'
SecretsFilter: '*'
RunAsPreJob: false
访问政策:-
第二次运行:-
应用程序保持原样,没有更改为未知:-
确保您的应用程序已在 Azure AD 中正确注册和创建。