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>"
Другие вопросы по тегам