AzureKeyVault@2 - Azure Key Vault v2 任务

使用此任务下载机密,例如身份验证密钥、存储帐户密钥、数据加密密钥。Azure Key Vault 实例中的 PFX 文件和密码。 该任务可用于从保管库中提取所有或机密子集的最新值,并将其设置为可在管道后续任务中使用的变量。 任务基于 Node,适用于 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 - Key Vault
string。 必填。

包含要下载的机密的 Azure Key Vault 的名称。


SecretsFilter - 机密筛选器
string。 必填。 默认值:*

根据输入的值下载机密名称。 该值可以是从所选密钥保管库下载所有机密的默认值,也可以是以逗号分隔的机密名称列表。


RunAsPreJob - 使机密可用于整个作业
boolean。 默认值:false

在作业执行开始之前运行任务。 向作业中的所有任务公开机密,而不仅仅是遵循此机密的任务。


任务控制选项

除任务输入之外,所有任务都具有控制选项。 有关详细信息,请参阅 控件选项和常见任务属性

输出变量

没有。

言论

版本 2.0 中的新增功能:添加了对 %3B的支持,%5D 机密。

使用此任务下载机密,例如身份验证密钥、存储帐户密钥、数据加密密钥。Azure Key Vault 实例中的 PFX 文件和密码。 该任务可用于从保管库中提取所有或机密子集的最新值,并将其设置为可在管道后续任务中使用的变量。 任务基于 Node,适用于 Linux、macOS 和 Windows 上的代理。

在从 Azure Key Vault 获取凭据时,我在管道上收到 forbidden 错误

如果 Azure 密钥保管库中缺少所需的权限,则会出现这种情况。 若要解决此问题,添加具有正确权限的访问策略

先决条件

该任务具有以下先决条件:

可以创建密钥保管库:

将机密添加到密钥保管库:

  • 通过使用 PowerShell cmdlet Set-AzKeyVaultSecret。 如果机密不存在,则此 cmdlet 会创建它。 如果机密已存在,此 cmdlet 将创建该机密的新版本。

  • 使用 Azure CLI。 若要将机密添加到密钥保管库,例如名为 sqlPassword 的机密 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 密钥保管库提取的相应机密的最新值创建任务变量 。 然后,此变量可在后续任务中使用。

如果从保管库提取的值是证书(例如 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,经典版本,经典版本
运行时间 代理,DeploymentGroup
需求 没有
功能 此任务不满足作业中后续任务的任何要求。
命令限制 任何
Settable 变量 任何
代理版本 2.182.1 或更高版本
任务类别 部署