【发布时间】:2020-08-28 15:32:04
【问题描述】:
我正在使用 Microsoft 扩展从 Azure DevOps 访问 KeyVault,以从保管库中获取机密。我收到此错误消息,似乎表明我需要允许 Azure Devops 代理访问密钥库的权限。 “无法获取托管服务主体的访问令牌。请为虚拟机“https://aka.ms/azure-msi-docs”配置托管服务标识 (MSI)。状态代码:400,状态消息:错误请求“”
我在单独的测试订阅上运行,其中 AzureDevOps 帐户在角色分配下具有贡献者访问权限,与出现错误消息的 PROD 订阅相同。
任何见解都将不胜感激。
谢谢,
【问题讨论】:
-
您是否在启用了托管身份的自托管代理上运行此程序?如果没有,您可能需要使用客户端 ID + 机密/证书从 DevOps 构建/发布访问 Key Vault。
-
感谢您的回复。我在 Microsoft 托管池 vs2017-win2016 中的代理上运行它。当我授权订阅的扩展时,它会从正在运行的 DevOps 组织获取应用程序 ID。当我在运行时收到错误消息的 sub 上配置扩展时,也会发生同样的事情。
-
这个问题是关于 Terraform 的吗?如果是,您应该提供导致您出现问题的 Terraform 代码。
-
没错,问题是关于将变量传递给 Terraform 但错误发生在该部分之前。以下是用于使用 keyvault 机密创建 VM 的 Terraform 代码的 sn-p:resource "azurerm_virtual_machine" "vm" {depends_on = [azurerm_network_interface.vmnic] name = "${var.vmname}" location = "East US " resource_group_name = "RG-DEV-01" ... os_profile { computer_name = "hostname" admin_username = "bdadmin" admin_password = "VMPWD" }
标签: azure key terraform devops