使用 Azure Key Vault 进行 Terraform 以获取机密值
Posted
技术标签:
【中文标题】使用 Azure Key Vault 进行 Terraform 以获取机密值【英文标题】:Terraform with Azure Key Vault to get secret value 【发布时间】:2018-03-26 20:35:02 【问题描述】:有什么方法可以从 Azure Key Vault 中获取密钥的值?
看起来value
不会暴露在密钥库机密对象here 中。
【问题讨论】:
在报告一些问题和寻求帮助时,您需要提供详细信息,例如错误、与azurerm_key_vault_secret
一起使用的代码等。
【参考方案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
使用 Powershell:Get-AzureKeyVaultSecret
get-azurekeyvaultsecret -vaultName "<vault-name>" -name "<secret-name>"
【讨论】:
谢谢!我知道如何使用 Azure CLI 进行操作,正在 Terraform 中寻找解决方案。 即使使用 Hashicorp Vault,它们也不支持数据源来检索机密。原因是它会通过状态暴露或可用,这首先否定了拥有保险库的安全性。 感谢您的评论。我很好奇,因为使用 Azure 资源管理器可以获得 Azure Key Vault 机密的值 是的,就像任何 API 一样。 hashcorp Vault 也是如此。 Terraform 无法解决这个问题,除非它们支持在不将值存储在 state 中的情况下检索 Secret 的能力以上是关于使用 Azure Key Vault 进行 Terraform 以获取机密值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Azure Key Vault 中的证书/密钥对使用 Azure Pipelines 构建的代码进行签名?
Python Azure 函数 - 使用 Key Vault 进行 MSI 身份验证
Azure Key Vault 使用Azure Portal创建和查看Azure Key Vault