Terraform с помощью Azure Key Vault для получения секретного значения

Есть ли способ получить значение секрета из Azure Key Vault?

Не похоже, что value раскрывается в секретном объекте хранилища ключей здесь .


person experimenter    schedule 15.10.2017    source источник
comment
Сообщая о некоторых проблемах и обращаясь за помощью, вам необходимо предоставить подробную информацию, например об ошибке, кодах, которые вы использовали с azurerm_key_vault_secret, и так далее.   -  person BMW    schedule 16.10.2017


Ответы (5)


Теперь вы можете сделать это с помощью источника данных 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}"
}
person guitarrapc    schedule 24.07.2018

Сначала необходимо создать ресурс данных в хранилище ключей 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 устарело и не рекомендуется.

person Saba Jamalian    schedule 19.08.2019

Есть ли способ получить значение секрета из Azure Key Vault?

В качестве обходного пути мы можем использовать PowerShell, чтобы получить это значение, например:

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

введите здесь описание изображения

person Jason Ye    schedule 16.10.2017
comment
Просто проверяю, была ли предоставленная информация полезной. Пожалуйста, дайте мне знать, если вам нужна дополнительная помощь. - person Jason Ye; 17.10.2017
comment
Это работает для вас? Пожалуйста, дайте мне знать, если вам понадобится дополнительная помощь :) - person Jason Ye; 19.10.2017
comment
спасибо, к сожалению, это не помогло, так как я искал решение с использованием Terraform, а не Powershell. - person experimenter; 18.03.2018

К сожалению, в настоящее время это невозможно в 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>"
person Highway of Life    schedule 16.03.2018
comment
Благодарность! Я знаю, как это сделать с помощью Azure CLI, искал решение в Terraform. - person experimenter; 18.03.2018
comment
даже с Hashicorp Vault они не поддерживают источник данных для извлечения секретов. Причина в том, что он будет открыт или доступен через состояние, что, в первую очередь, сводит на нет безопасность хранилища. - person Highway of Life; 18.03.2018
comment
Спасибо за комментарий. Мне было любопытно, потому что с помощью Azure Resource Manager можно получить значение секрета Azure Key Vault. - person experimenter; 18.03.2018
comment
Да, как и любой API. То же самое и с хранилищем hashicorp. Terraform не может решить эту проблему, пока не поддержит возможность извлечения секретов без сохранения значений в состоянии. - person Highway of Life; 18.03.2018

Я работал над этим, чтобы получить пароль от секретного хранилища ключей. Приведенный ниже код работал у меня, попробуйте.

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
}

Надеюсь, это вам точно поможет.

person Sachin Kalia    schedule 18.12.2020