Azure 使用KeyVault secret部署带有PowerShell的VM,而不进行明文转换
我目前正在学习AZ-104,并尝试使用Powershell自动化VM部署 我想使用Azure 使用KeyVault secret部署带有PowerShell的VM,而不进行明文转换,azure,azure-powershell,azure-keyvault,azure-vm,Azure,Azure Powershell,Azure Keyvault,Azure Vm,我目前正在学习AZ-104,并尝试使用Powershell自动化VM部署 我想使用新建AzVMConfig和设置AzVMOperatingSystem-Credential$cred创建一个VM,但使用保存在AzureKeyVault中的凭据 我找到的唯一解决方案是使用.NET脚本将秘密转换为明文 $secret = Get-AzKeyVaultSecret -VaultName "somekeyvaultname" -Name "vmpassword"
新建AzVMConfig
和设置AzVMOperatingSystem-Credential$cred
创建一个VM,但使用保存在AzureKeyVault中的凭据
我找到的唯一解决方案是使用.NET脚本将秘密转换为明文
$secret = Get-AzKeyVaultSecret -VaultName "somekeyvaultname" -Name "vmpassword"
$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secret.SecretValue)
try {
$secretValueText = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)
} finally {
[System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}
Write-Output $secretValueText
有没有一种方法可以在脚本中使用KeyVault对象,以便它自动用于VM?或者这仅适用于ARM模板吗?您可以使用AZ CLI或Powershell从AzureKeyVault获取凭据 AZ CLI代码示例:
$Secret = az keyvault secret show --name "SecretName"--vault-name "KeyvaultName" | ConvertFrom-Json
$SecretValue= $Secret.value
$Secret = Get-AzKeyVaultSecret -VaultName "KeyvaultName" -Name "SecretName"
$SecretValue = $secret.SecretValue | ConvertFrom-SecureString -AsPlainText
Powershell代码示例:
$Secret = az keyvault secret show --name "SecretName"--vault-name "KeyvaultName" | ConvertFrom-Json
$SecretValue= $Secret.value
$Secret = Get-AzKeyVaultSecret -VaultName "KeyvaultName" -Name "SecretName"
$SecretValue = $secret.SecretValue | ConvertFrom-SecureString -AsPlainText