AzureKeyVault@2 - Azure 金鑰保存庫 v2 工作
使用此工作來下載秘密,例如驗證金鑰、儲存體帳戶金鑰、資料加密金鑰、 。來自Azure 金鑰保存庫實例的 PFX 檔案和密碼。 此工作可用來從保存庫擷取所有或秘密子集的最新值,並將其設定為可用於管線後續工作的變數。 工作是以節點為基礎,可與 Linux、macOS 和 Windows 上的代理程式搭配使用。
Syntax
# 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 訂用帳戶
輸入別名: ConnectedServiceName
。 string
. 必要。
選取包含 Azure 金鑰保存庫 實例的 Azure 訂用帳戶服務連線,或建立新的連線。 深入了解。
KeyVaultName
- 金鑰保存庫
string
. 必要。
包含要下載秘密的 Azure 金鑰保存庫名稱。
SecretsFilter
- 秘密篩選
string
. 必要。 預設值:*
。
根據輸入的值下載秘密名稱。 此值可以是預設值,可從選取的金鑰保存庫下載所有秘密,或以逗號分隔的秘密名稱清單。
RunAsPreJob
- 讓整個作業可以使用秘密
boolean
. 預設值:false
。
在作業執行開始之前執行工作。 將秘密公開給作業中的所有工作,而不只是遵循此秘密的工作。
工作控制項選項
除了工作輸入之外,所有工作都有控制選項。 如需詳細資訊,請參閱 控制選項和一般工作屬性。
輸出變數
無。
備註
2.0 版的新功能:已新增對秘密中 %3B、%5D 的支援。
使用此工作來下載秘密,例如驗證金鑰、儲存體帳戶金鑰、資料加密金鑰、 。來自Azure 金鑰保存庫實例的 PFX 檔案和密碼。 此工作可用來從保存庫擷取所有或秘密子集的最新值,並將其設定為可用於管線後續工作的變數。 工作是以節點為基礎,可與 Linux、macOS 和 Windows 上的代理程式搭配使用。
forbidden
我在從 Azure 金鑰保存庫取得認證時收到管線的錯誤
如果 Azure 金鑰保存庫中缺少必要的許可權,就會發生這種情況。 若要解決此問題, 請新增具有正確許可權的存取原則。
必要條件
工作具有下列必要條件:
- 使用Azure Resource Manager服務連線連結至 Azure Pipelines 或 Team Foundation Server 的 Azure 訂用帳戶。
- 包含密碼的 Azure Key Vault。
您可以建立金鑰保存庫:
- 在 Azure 入口網站中
- 使用Azure PowerShell
- 使用 Azure CLI
將秘密新增至金鑰保存庫:
使用 PowerShell Cmdlet Set-AzureKeyVaultSecret。 如果秘密不存在,此 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 金鑰保存庫憑證。
規格需求
需求 | 描述 |
---|---|
管線類型 | YAML、傳統組建、傳統版本 |
在 上執行 | Agent、DeploymentGroup |
要求 | 無 |
Capabilities | 此工作不符合作業中後續工作的任何需求。 |
命令限制 | 任意 |
可設定變數 | 任意 |
代理程式版本 | 2.182.1 或更新版本 |
工作類別 | 部署 |