【问题标题】:Terraform with Azure Key Vault to get secret value使用 Azure Key Vault 进行 Terraform 以获取机密值
【发布时间】:2018-03-26 20:35:02
【问题描述】:

有什么方法可以从 Azure Key Vault 中获取密钥的值?

看起来value 不会暴露在密钥库机密对象here 中。

【问题讨论】:

  • 在报告一些问题和寻求帮助时,您需要提供详细信息,例如错误、与azurerm_key_vault_secret 一起使用的代码等。

标签: azure terraform azure-keyvault


【解决方案1】:

现在您可以使用azurerm_key_vault_secret 数据源来实现。

没有任何脚本我很享受。

data "azurerm_key_vault_secret" "test" {
  name      = "secret-sauce"
  vault_uri = "https://rickslab.vault.azure.net/"
}

output "secret_value" {
  value = "${data.azurerm_key_vault_secret.test.value}"
}

【讨论】:

    【解决方案2】:

    您首先需要创建一个数据资源到 azure key vault 以获取 key vault 资源 ID:

    data "azurerm_key_vault" "keyvault" {
      name                = "${var.keyvault_name}"
      resource_group_name = "${var.resourcegroup_name}"
    }
    

    然后使用azurerm_key_vault_secret 获取带有密钥库资源 ID 的秘密:

    data "azurerm_key_vault_secret" "win_admin_pass" {
      name         = "${var.secret_name}"
      key_vault_id = "${data.azurerm_key_vault.keyvault.id}"
    }
    

    请注意,azurerm_key_vault_secret 中的vault_uri 已被弃用且不推荐使用。

    【讨论】:

      【解决方案3】:

      有什么方法可以从 Azure Key Vault 中获取密钥的值?

      作为一种解决方法,我们可以使用PowerShell 来获取此值,如下所示:

      $a = Get-AzureKeyVaultSecret -VaultName "jasonkey" -Name "jason"
      $a.SecretValueText
      

      【讨论】:

      • 只是检查提供的信息是否有用。如果您需要进一步的帮助,请告诉我。
      • 这对你有用吗?如果您需要更多帮助,请告诉我:)
      • 谢谢,不幸的是它没有帮助,因为我正在寻找使用 Terraform 而不是 Powershell 的解决方案。
      【解决方案4】:

      我一直在努力从密钥库机密中获取密码。下面的代码对我有用,试试看。

      data "azurerm_key_vault" "terrakv" {
        name                = "terrakv" // KeyVault name
        resource_group_name = "mykv" // resourceGroup
      }
      
      data "azurerm_key_vault_secret" "kvsecret" {
      name = "secret" // Name of secret
      key_vault_id = data.azurerm_key_vault.terrakv.id
      }
      
      os_profile {
      computer_name  = "vm-01"
      admin_username = "testadmin"
      admin_password = data.azurerm_key_vault_secret.kvsecret.value // Toget actual value
      }
      

      希望对你有帮助。

      【讨论】:

        【解决方案5】:

        不幸的是,目前这在 Terraform 中是不可能的。 Terraform 只会输出秘密 ID 和版本。如果您需要检索 azure keyvault 机密,最好的方法是使用 Azure-CLI,如果不可用,则使用 Powershell。

        使用 Azure-CLI (2.0)

        az keyvault secret show --vault-name <vault-name> --name <secret-name>
        

        语法:

        az keyvault secret show --name
                                --vault-name
                                [--version]
        

        更多信息请见:Managing Azure Keyvault Secrets with Azure-CLi


        使用 PowershellGet-AzureKeyVaultSecret

        get-azurekeyvaultsecret -vaultName "<vault-name>" -name "<secret-name>"
        

        【讨论】:

        • 谢谢!我知道如何使用 Azure CLI 进行操作,正在 Terraform 中寻找解决方案。
        • 即使使用 Hashicorp Vault,它们也不支持数据源来检索机密。原因是它会通过状态暴露或可用,这首先否定了拥有保险库的安全性。
        • 感谢您的评论。我很好奇,因为使用 Azure 资源管理器可以获得 Azure Key Vault 机密的值
        • 是的,就像任何 API 一样。 hashcorp Vault 也是如此。 Terraform 无法解决这个问题,除非它们支持在不将值存储在 state 中的情况下检索 Secret 的能力
        猜你喜欢
        • 1970-01-01
        • 2020-05-07
        • 2021-07-23
        • 2016-07-02
        • 2020-04-26
        • 2022-07-22
        • 2020-12-19
        • 2019-05-31
        • 2018-07-13
        相关资源
        最近更新 更多