繁体   English   中英

无法从 Azure DevOps Build Pipeline 中的 Azure PowerShell 任务以纯文本形式读取 Key Vault 机密

[英]Cant read Key Vault secrets as plain text from Azure PowerShell task in Azure DevOps Build Pipeline

我正在尝试使用 Azure DevOps build Pipeline PowerShell task 中的服务主体登录到 Azure 订阅 我需要登录的原因是,我需要从同一个 PowerShell 任务中执行一些日志分析查询,因此它需要对订阅进行身份验证。 服务主体 ID 和密钥在 Key Vault 中作为机密。 我需要将它们作为纯文本阅读才能通过 Azure 订阅进行身份验证

问题是,我无法将它们作为纯文本或纯字符串读取,因为它是 Azure DevOps PowerShell 任务中的加密字符串值。 我似乎无法找到直接将它们作为纯文本阅读的方法。

我无法使用以下命令(Get-AzKeyVaultSecret -VaultName $vaultName -Name $secretName).SecretValueText因为我们需要通过 Azure 订阅的身份验证才能执行其他模块的命令。

尝试了以下(即)$Encrypted(服务主体 ID)的值在 KeyVault 中作为纯文本当我使用下面的内容时,它说,输入格式不正确

$AppId = (ConvertTo-SecureString $Encrypted) $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($AppId) $AppId = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) 

寻找任何其他方法来完成此任务。

找到了这个答案。 我使用 PowerShell 任务类型作为AzurePowerShell@2

但是将其更改为任务: AzurePowerShell@4 ,这使事情变得非常容易,因为我已经有了服务连接,我可以使用它对订阅进行身份验证,还可以成功读取和传递 Key Vault 机密。

您需要在构建任务中提及 azurePowerShellVersion: LatestVersion ,它的工作原理很简单。

这也消除了使用服务主体的要求,现在我可以使用 Azure DevOps 服务连接对订阅进行身份验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM