【问题标题】:Azure Terraform Unable to Set secret in KeyVault during deploymentAzure Terraform 在部署期间无法在 KeyVault 中设置机密
【发布时间】:2022-01-27 20:17:23
【问题描述】:

我面临着一个我似乎没有找到实际解决方案的障碍。

我正在使用 azure terraform 创建存储帐户,并且我希望在发布管道期间能够将此存储帐户的连接字符串设置为现有 KeyVault 中的机密。

到目前为止,我能够从这个 KeyVault 中检索机密,因为我使用的是 managed identity,它对 KeyVault 具有以下权限:

key = get, list
secret = get, list and set
cert = get , list

我的 terraform 中的工作流程如下:

检索 KeyVault 数据:

data "azurerm_key_vault" "test" {
  name                = "test"
  resource_group_name = "KeyVault-test"
}

检索用户分配的身份数据:

data "azurerm_user_assigned_identity" "example" {
  name                = "mng-identity-example"
  resource_group_name = "managed-identity-example"
}

获得这两个数据后,我尝试按如下方式创建秘密:

resource "azurerm_key_vault_secret" "secretTest" {

  key_vault_id = data.azurerm_key_vault.test.id
  name         = "secretTest"
  value        = azurerm_storage_account.storageaccount.primary_connection_string


}

一旦我设置发布管道来运行这个 terraform,它确实会失败并出现错误 Access Denied

这是完全可以理解的,因为这个 terraform 没有设置或检索秘密的权限。

这就是我被阻止的部分。

如果有人可以帮助了解我如何使用我的托管身份来设置此机密?

我查看了 terraform 文档,但找不到任何步骤或解释。

非常感谢您的帮助和时间,如果您需要更多信息,请直接问我。

【问题讨论】:

  • 你好@Nayden Van,在这里你能理解你是否使用相同的托管身份登录到 azure / 同时执行 terraform 应用?

标签: azure-devops terraform-provider-azure


【解决方案1】:

请确保您用于使用 Terraform 登录 Azure 的服务主体具有您分配给托管的相同的权限身份

provider "azurerm" {
  features {}

  subscription_id = "00000000-0000-0000-0000-000000000000"
  client_id       = "00000000-0000-0000-0000-000000000000" ## This Client ID needs to have the permissions in Keyvault access policy which you have provided to the managed identity.
  client_secret   = var.client_secret
  tenant_id       = "00000000-0000-0000-0000-000000000000"
}

如果您使用 服务连接 将 Devops 管道连接到 Azure 并在 Terrafarom 中使用它,那么您需要提供该 Devops服务连接(服务主体)访问策略中的权限

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2016-05-26
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多