在管道运行中,我们尝试在 ARM 模板部署中使用检索到的密钥保管库机密。秘密值是 SAS URL。
我们首先使用 AzureKeyVault@2 任务检索所有机密
- task: AzureKeyVault@2
displayName: 'Retrieve all secrets necessary for install'
inputs:
azureSubscription: 'SUBSCRIPTION'
KeyVaultName: 'KEYVAULT'
SecretsFilter: 'SECRET'
RunAsPreJob: false
我们的存储库中有两个文件:一个 Bicep 模板和一个参数 JSON 文件,因为 .bicepparam 不支持密钥保管库引用。参数文件已经引用了我们需要的秘密,但模板在部署期间似乎没有使用它。管道的服务主体在密钥保管库范围内具有密钥保管库机密用户角色。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"SECRET_PARAM": {
"reference": {
"keyVault": {
"id": "/subscriptions/SUBSCRIPTION/resourceGroups/RESOURCEGROUP/providers/Microsoft.KeyVault/vaults/KEYVAULT"
},
"secretName": "SECRET"
}
}
}
}
我猜我应该将检索到的秘密值从管道任务传递到部署任务,但当我已经引用参数文件时,我不确定如何执行此操作。
如果需要任何其他详细信息,请告诉我。我很感激你们能够提供的任何指导。
我认为你混合了两种不同的参数方法。
1。从参数文件引用 AKV。
在这种情况下,您不需要使用
AzureKeyVault@2
。查看本手册:https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/key-vault-parameter?tabs=azure-cli
2。部署期间更新参数
在这种情况下,您不需要参数文件中的秘密引用。只需将其存储为通常的值即可。然后您可以在
AzureResourceManagerTemplateDeployment@3
任务中更新它。
举个例子:
参数(只是有一些默认值)
"parameters": {
"SECRET_PARAM": {
"value": "SECRET"
}
}
ARM 任务
- task: AzureResourceManagerTemplateDeployment@3
displayName: 'ARM Template deployment: Resource Group scope'
inputs:
azureResourceManagerConnection: 'MY_CONNECTIO'
subscriptionId: 'MY_ID'
resourceGroupName: 'MY_RG'
location: 'West Europe'
csmFile: '$(System.DefaultWorkingDirectory)/my_template_or_bicep_file'
csmParametersFile: '$(System.DefaultWorkingDirectory)/mt_parameters_file'
overrideParameters: '-SECRET_PARAM "$(SECRET)"'