使用Azure Key Vault进行Terraform以获取机密值

时间:2017-10-15 03:28:17

标签: azure terraform azure-keyvault

有没有办法从Azure Key Vault获取机密值?

看起来value未在密钥保管库秘密对象here中公开。

5 个答案:

答案 0 :(得分:4)

Now you can do it with azurerm_key_vault_secret data source.

I'm enjoying without any scripting.

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}"
}

答案 1 :(得分:3)

您首先需要为天蓝色的密钥库创建数据资源以获取密钥库资源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}"
}

请注意,不建议使用vault_uri中的azurerm_key_vault_secret

答案 2 :(得分:0)

  

有没有办法从Azure Key Vault获取机密值?

作为一种变通方法,我们可以使用AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(this, YourActivity.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); Calendar timeOff = Calendar.getInstance(); /* setting time */ timeOff.set(Calendar.HOUR_OF_DAY, 23); timeOff.set(Calendar.MINUTE, 59); timeOff.set(Calendar.SECOND, 0); alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + AlarmManager.INTERVAL_DAY, AlarmManager.INTERVAL_DAY, intent); 来获取此值,如下所示:

PowerShell

enter image description here

答案 3 :(得分:0)

不幸的是,Terraform目前无法实现这一目标。 Terraform只会输出密码和版本。如果您需要检索azure密钥保险密码,最好的方法是使用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>"

答案 4 :(得分:0)

我一直在努力从金库密钥中获取密码。下面的代码对我有用,请尝试一下。

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
}

希望它能对您有所帮助。