gpt4 book ai didi

azure - 如何从 powershell 使用构建管道上使用的 *.pfx 证书以及下载安全文件任务

转载 作者:行者123 更新时间:2023-12-02 23:29:00 26 4
gpt4 key购买 nike

我遇到了这个问题:我需要从构建管道上使用的 powershell 脚本连接到 azure 订阅,但出于安全要求,我无法在代码上写入用户和密码,因此我有一个包含凭据的 pfx 证书。现在我正在使用名为“下载安全文件”的任务,将证书放在构建上。然后我尝试从 powershell 代码访问证书。

我已经在我的机器上测试了代码,但是当我尝试在构建管道上使用它时,我无法使用它访问证书

我遇到了这样的错误

正在登录...D:\a\1\s\Scripts\fileName.ps1:脚本不起作用:无法识别术语“cert.secureFilePath”作为 cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者路径是否为包括,验证路径是否正确,然后重试。

$tenantId  = "xxxxxxxxxxx"
$appId = "zzzzz"
$cert = %DOWNLOADSECUREFILE_SECUREFILEPATH%
$certThumbprint = $cert.Thumbprint

Write-Host "Logging in...";

Login-AzureRmAccount `
-ServicePrincipal `
-TenantId $tenantId `
-ApplicationId $appId `
-CertificateThumbprint $certThumbprint

Tasks used on the build pipeline

最佳答案

下载的安全文件的完整路径存储到$env:DOWNLOADSECUREFILE_SECUREFILEPATH环境变量中。有关下载安全文件任务的更多信息,请参阅此 document .

我们可以使用以下代码获取 certThumbprint

$CertificatePath = "$env:DOWNLOADSECUREFILE_SECUREFILEPATH"
$sSecStrPassword = "xxxxx"
$certificateObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$certificateObject.Import($CertificatePath, $sSecStrPassword, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet)
$thumbprint = $certificateObject.Thumbprint

如果我们不想直接在代码中使用用户名和密码。我们可以使用Azure Pipeline library 。我们可以在代码中引用它。

If you want to encrypt and securely store the value, choose the "lock" icon at the end of the row. When you're finished adding variables, choose Save

enter image description here

You access the value of the variables in a linked variable group in exactly the same way as variables you define within the pipeline itself. For example, to access the value of a variable named customer in a variable group linked to the pipeline, use $(customer) in a task parameter or a script. However, secret variables (encrypted variables and key vault variables) cannot be accessed directly in scripts - instead they must be passed as arguments to a task

如果我在库中添加一个名为sSecStrPassword的变量。然后代码可以更改如下:

function GetThumbprintPFX {
param([string] $CertificatePath, [string]$Password)
$certificateObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$certificateObject.Import($CertificatePath, $Password, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet)
$thumbprint = $certificateObject.Thumbprint
return $thumbprint
}


$thumbprint = GetThumbprintPFX -CertificatePath $env:DOWNLOADSECUREFILE_SECUREFILEPATH -Password '$(sSecStrPassword)'
Write-Host "$thumbprint"

测试结果:

enter image description here

有关变量组的更多信息,请参阅此link 。 Azure Key Vault 是 security requirements 的另一个选择.

更新:

以下是在 Azure Devops 管道中使用 pfx 文件的详细步骤。

  1. 准备一个 .pfx 文件。
  2. 添加下载安全文件任务并上传 pfx 文件。

enter image description here

  • 创建变量组并添加名为 sSecStrPassword 的变量
  • enter image description here

  • 将变量链接到构建
  • enter image description here

  • 添加 powershell 脚本任务并在其中添加以下脚本。
  • enter image description here

    # Write your powershell commands here.

    Write-Host $env:DOWNLOADSECUREFILE_SECUREFILEPATH

    function GetThumbprintPFX {
    param([string] $CertificatePath, [string]$Password)
    $certificateObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
    $certificateObject.Import($CertificatePath, $Password, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet)
    $thumbprint = $certificateObject.Thumbprint
    return $thumbprint
    }

    $thumbprint = GetThumbprintPFX -CertificatePath $env:DOWNLOADSECUREFILE_SECUREFILEPATH -Password '$(sSecStrPassword)'
    Write-Host "$thumbprint"
  • 对构建进行排队并检查结果。
  • enter image description here

    关于azure - 如何从 powershell 使用构建管道上使用的 *.pfx 证书以及下载安全文件任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54009357/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com