【问题标题】:Cant read Key Vault secrets as plain text from Azure PowerShell task in Azure DevOps Build Pipeline无法从 Azure DevOps Build Pipeline 中的 Azure PowerShell 任务将 Key Vault 机密读取为纯文本
【发布时间】:2020-03-10 07:30:40
【问题描述】:

​我正在尝试使用 Azure DevOps 构建管道 PowerShell 任务中的服务主体登录到 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) 

寻找其他方法来完成这项任务。

【问题讨论】:

    标签: azure-devops azure-powershell azure-pipelines-build-task


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 很高兴您找到了答案。您可以接受以上作为答案。
    猜你喜欢
    • 2019-08-17
    • 2020-02-24
    • 2020-01-16
    • 1970-01-01
    • 2022-12-22
    • 2018-06-06
    • 2019-03-25
    • 2020-03-30
    • 2018-07-13
    相关资源
    最近更新 更多