我正在尝试将具有SSL绑定的自定义域添加到具有ARM模板的Web应用程序。我可以在Azure门户中手动完成此操作,但希望它与ARM模板一起使用。
证书位于密钥库中,该密钥库与Web应用程序不在同一资源组中。我可以从发布管道中的密钥库访问普通机密,如databaseconnectionstrings。问题是当我尝试访问证书时。我对密钥库证书具有GET权限。
我正在使用这个github模板 https://github.com/Azure/azure-quickstart-templates/tree/master/201-web-app-certificate-from-key-vault
这是我尝试通过发布管道部署ARM模板时遇到的错误。
“错误”:{
“ code”:“ LinkedAuthorizationFailed”,
“ message”:“对象ID为'xxxx'的客户端'xxxx'有权在范围'***/providers/Microsoft.Web/certificates/xxxxx'
上执行操作'Microsoft.Web / certificates / write';但是,它无权执行操作'write '在链接范围'/subscriptions/xxxx/resourceGroups/xxx/providers/Microsoft.KeyVault/vaults/xxxxx'
上。”
}
答案 0 :(得分:0)
您可以尝试增加Azure DevOps服务连接对访问策略下的关键保管库证书具有的权限,可以从所有证书权限开始,作为故障排除步骤以确认其与权限相关,然后根据需要减少,可能只需要Get和创建吗?
答案 1 :(得分:0)
我通过在ARM模板中创建4个资源解决了它。证书,应用服务计划,Web应用和主机名绑定。就像这个github azure-quickstart-template https://github.com/Azure/azure-quickstart-templates/tree/master/201-web-app-custom-domain-and-ssl。
对我来说,关键是通过添加pxfBlob并删除密钥库属性来修改证书资源,请参见下面的代码。 certificatePfx是一个安全字符串,在keyVault的发布管道中设置。
{
"type": "Microsoft.Web/certificates",
"name": "[parameters('certificateName')]",
"apiVersion": "2016-03-01",
"location": "[resourceGroup().location]",
"properties": {
"name": "[parameters('webAppName')]",
"serverFarmId": "[concat(resourceId('Microsoft.Web/serverFarms', parameters('appServicePlanName')))]",
"hostNames": [
"parameters('hostname_wildcard')",
"parameters('hostname_domain')"
],
"pfxBlob": "[parameters('certificatePfx')]"
},
"dependsOn": [
"[concat('Microsoft.Web/sites/',parameters('webAppName'))]"
]
},