【问题标题】:Azure Devops - enable access to keyvaultAzure Devops - 启用对 keyvault 的访问
【发布时间】: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


【解决方案1】:

这似乎是使用服务端点定义的 Azure 密钥库的问题。由于 Azure DevOps 不是受信任的服务,因此它无权访问终结点。解决方法是直接从管道中将代理的 ip 列入白名单,在您获得机密后将其删除(现在弄清楚如何执行此操作)。这在herehere 中被引用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-10
    • 2020-04-12
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    相关资源
    最近更新 更多