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 订阅
输入别名:ConnectedServiceName
。
string
。 必填。
选择包含 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 密钥保管库中缺少所需的权限,则会出现这种情况。 若要解决此问题,添加具有正确权限的访问策略。
先决条件
该任务具有以下先决条件:
- 使用 Azure 资源管理器服务连接链接到 Azure Pipelines 或 Team Foundation Server 的 Azure 订阅。
- Azure Key Vault 包含机密。
可以创建密钥保管库:
- 在 azure 门户
- 使用 Azure PowerShell
- 使用 Azure CLI
将机密添加到密钥保管库:
通过使用 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的机密
如果从保管库提取的值是证书(例如 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 管道 中使用 Azure Key Vault 机密