如何解决使用 KeyVault 机密通过 PowerShell 部署 VM,无需明文转换
我目前正在学习 AZ-104 并尝试使用 Powershell 自动部署 VM。
我想使用 New-AzVMConfig
和 Set-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
Powershell 代码示例:
$Secret = Get-AzKeyVaultSecret -VaultName "KeyvaultName" -Name "SecretName"
$SecretValue = $secret.SecretValue | ConvertFrom-SecureString -AsPlainText
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。