无法从Azure DevOps构建管道中的Azure PowerShell任务中以纯文本形式读取密钥保管库秘密

问题描述 投票:0回答:1

我正在尝试使用Azure DevOps构建管道PowerShell任务中的服务主体登录Azure订阅。我需要登录的原因是,我需要从同一PowerShell任务中执行一些日志分析查询,因此需要对订阅进行身份验证。服务主体ID和密钥在密钥库中作为机密。 我需要将它们阅读为纯文本格式,以便通过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) 

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

azure-devops azure-powershell azure-pipelines-build-task
1个回答
0
投票

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

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

您需要在构建任务中提到azurePowerShellVersion:LatestVersion,它很简单。

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

© www.soinside.com 2019 - 2024. All rights reserved.