共用方式為


AzureKeyVault@2 - Azure Key Vault v2 工作

使用此工作來下載秘密,例如驗證金鑰、記憶體帳戶金鑰、資料加密金鑰、 。來自 Azure Key Vault 實例的 PFX 檔案和密碼。 此工作可用來從保存庫擷取所有或秘密子集的最新值,並將其設定為可用於管線後續工作的變數。 工作是以節點為基礎,可與Linux、macOS和Windows上的代理程式搭配使用。

語法

# Azure Key Vault v2
# Download Azure Key Vault secrets.
- task: AzureKeyVault@2
  inputs:
    azureSubscription: # string. Alias: ConnectedServiceName. Required. Azure subscription. 
    KeyVaultName: # string. Required. Key vault. 
    SecretsFilter: '*' # string. Required. Secrets filter. Default: *.
    #RunAsPreJob: false # boolean. Make secrets available to whole job. Default: false.

輸入

azureSubscription - Azure 訂用帳戶
輸入別名:ConnectedServiceNamestring。 必填。

針對包含 Azure Key Vault 實例的 Azure 訂用帳戶選取服務連線,或建立新的連線。 深入瞭解


KeyVaultName - 金鑰保存庫
string。 必填。

包含要下載之秘密的 Azure Key Vault 名稱。


SecretsFilter - 秘密篩選
string。 必填。 預設值:*

根據輸入的值下載秘密名稱。 此值可以是預設值,可從選取的金鑰保存庫下載所有秘密,或以逗號分隔的秘密名稱清單。


RunAsPreJob - 讓整個作業可以使用秘密
boolean。 預設值:false

在作業執行開始之前執行工作。 將秘密公開給作業中的所有工作,而不只是遵循此秘密的工作。


工作控制選項

除了工作輸入之外,所有工作都有控制選項。 如需詳細資訊,請參閱 控制項選項和一般工作屬性

輸出變數

沒有。

言論

2.0 版的新功能:已新增對 %3B的支援,%5D 秘密。

使用此工作來下載秘密,例如驗證金鑰、記憶體帳戶金鑰、資料加密金鑰、 。來自 Azure Key Vault 實例的 PFX 檔案和密碼。 此工作可用來從保存庫擷取所有或秘密子集的最新值,並將其設定為可用於管線後續工作的變數。 工作是以節點為基礎,可與Linux、macOS和Windows上的代理程式搭配使用。

我在從 Azure Key Vault 取得認證時,在管線上收到 forbidden 錯誤

如果 Azure 金鑰保存庫中缺少必要的許可權,就會發生這種情況。 若要解決此問題,新增具有正確許可權的存取原則

先決條件

此工作具有下列必要條件:

您可以建立金鑰儲存庫:

  • 在 Azure 入口網站
  • 使用 azure PowerShell
  • 使用 azure CLI

將秘密新增至金鑰儲存庫:

  • 使用 PowerShell Cmdlet Set-AzKeyVaultSecret。 如果秘密不存在,此 Cmdlet 會建立它。 如果秘密已經存在,此 Cmdlet 會建立該密碼的新版本。

  • 使用 Azure CLI。 若要將秘密新增至密鑰保存庫,例如名為 SQLPassword 的秘密,其值 PlaceholderPassword,請輸入:

    az keyvault secret set --vault-name 'ContosoKeyVault' --name 'SQLPassword' --value 'PlaceholderPassword'
    

當您要存取秘密時:

  • 請確定 Azure 服務連線至少有 取得,並 列出保存庫 許可權。 您可以在 Azure 入口網站中設定這些權限:

    • 開啟保存庫的 [設定] 刀鋒視窗,選擇 [存取原則],然後 [新增]。
    • 在 [[新增存取原則] 刀鋒視窗中,選擇 [選取主體],然後選取用戶端帳戶的服務主體。
    • 在 [新增存取原則] 刀鋒視窗中,選擇 [秘密許可權]並確定已核取 [取得] 和 [列表]。
    • 選擇 [確定] 來儲存變更。

注意

如果您使用Microsoft裝載的代理程式,您必須將Microsoft裝載代理程式的IP範圍新增至防火牆。 從每周 JSON 檔案取得每周 IP 範圍清單,此檔案是每週三發佈的。 新的IP範圍會在下週一生效。 如需詳細資訊,請參閱Microsoft 裝載的代理程式。 若要尋找 Azure DevOps 組織所需的 IP 範圍,請瞭解如何 識別Microsoft裝載代理程式的可能 IP 範圍。

注意

值會擷取為字串。 例如,如果有名為 connectionString的秘密,則會使用從 Azure 密鑰保存庫擷取之個別秘密的最新值來建立工作變數 connectionString。 此變數接著可在後續工作中取得。

如果從保存庫擷取的值是憑證(例如 PFX 檔案),工作變數會以字串格式包含 PFX 的內容。 您可以使用下列 PowerShell 程序代碼,從工作變數擷取 PFX 檔案:

$kvSecretBytes = [System.Convert]::FromBase64String("$(PfxSecret)")
$certCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$certCollection.Import($kvSecretBytes,$null,[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)

如果憑證檔案將儲存在本機計算機上,最好是使用密碼加密:

 #Get the file created
$password = 'your password'
$protectedCertificateBytes = $certCollection.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $password)
$pfxPath = [Environment]::GetFolderPath("Desktop") + "\MyCert.pfx"
[System.IO.File]::WriteAllBytes($pfxPath, $protectedCertificateBytes)

如需詳細資訊,請參閱 開始使用 Azure Key Vault 憑證

例子

要求

要求 描述
管線類型 YAML、傳統組建、傳統版本
執行於 Agent、DeploymentGroup
需求 沒有
功能 此工作不符合作業中後續工作的任何需求。
命令限制 任何
Settable 變數 任何
代理程式版本 2.182.1 或更新
工作類別 部署