使用 Azure Key Vault 进行 Terraform 以获得秘密值

Terraform with Azure Key Vault to get secret value

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

看起来 value 没有暴露在密钥库秘密对象 here 中。

Is there any way to get the value of a secret from Azure Key Vault?

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

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

遗憾的是,目前这在 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>"

现在您可以使用 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}"
}

您首先需要创建一个数据资源到 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_secretvault_uri 的使用已被弃用,也不推荐使用。

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

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
}

希望对您有所帮助。