Terraform с хранилищем ключей Azure для получения секретного значения
Есть ли способ получить значение секрета из хранилища ключей Azure?
Не похоже value
раскрывается в секретном объекте хранилища ключей здесь.
6 ответов
Теперь вы можете сделать это с источником данных 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, чтобы получить идентификатор ресурса хранилища ключей:
data "azurerm_key_vault" "keyvault" {
name = "${var.keyvault_name}"
resource_group_name = "${var.resourcegroup_name}"
}
А затем используйте azurerm_key_vault_secret
чтобы получить секрет с идентификатором ресурса хранилища ключей:
data "azurerm_key_vault_secret" "win_admin_pass" {
name = "${var.secret_name}"
key_vault_id = "${data.azurerm_key_vault.keyvault.id}"
}
Обратите внимание, что использование vault_uri
в azurerm_key_vault_secret
устарела и не рекомендуется.
Я работаю над этим, чтобы получить пароль от секретного хранилища ключей. Код ниже работал для меня, попробуйте.
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
}
Я надеюсь, что это поможет вам наверняка.
У меня есть хранилище ключей, и мне нужно несколько секретов из него, так что это мой подход. Я использовал для каждого подхода
data "azurerm_key_vault" "keyvault_devops" {
name = "keyVaultName"
resource_group_name = "resourceGroupName"
}
data "azurerm_key_vault_secrets" "global_devops" {
key_vault_id = data.azurerm_key_vault.keyvault_devops.id
}
data "azurerm_key_vault_secret" "global_devops" {
for_each = toset(data.azurerm_key_vault_secrets.global_devops.names)
name = each.key
key_vault_id = data.azurerm_key_vault.global_devops.id
}
Затем я использую это так:
значение = data.azurerm_key_vault_secret.global_devops["имя-секрета"].value
Есть ли способ получить значение секрета из хранилища ключей Azure?
В качестве обходного пути мы можем использовать PowerShell
чтобы получить это значение, вот так:
$a = Get-AzureKeyVaultSecret -VaultName "jasonkey" -Name "jason"
$a.SecretValueText
К сожалению, в настоящее время это невозможно в Terraform. Terraform будет выводить только секретный идентификатор и версию. Если вам нужно получить секреты 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]
Дополнительные сведения см. В разделе " Управление секретами ключей Azure с помощью Azure-CLi".
Использование Powershell: Get-AzureKeyVaultSecret
get-azurekeyvaultsecret -vaultName "<vault-name>" -name "<secret-name>"