Azure资源管理器-无法在访问策略中使用Microsoft应用程序服务部署Keyvault
因此,我正试图使用Azure Devops管道和ARM模板对我的所有Azure基础设施进行编码。这是相当困难的,但我可以看到的好处是,部署在5分钟内为我提供20个资源,这一切都很好 然而,我遇到了一个问题。我想部署一个新的Keyvault。别紧张!我想存储x509证书,它是我的Web应用程序使用的通配符证书。打勾很容易。现在我想创建一个“Microsoft.Web/Certificates”证书资源,然后可以使用它为我的Web应用创建SSL自定义绑定。这失败了:Azure资源管理器-无法在访问策略中使用Microsoft应用程序服务部署Keyvault,azure,azure-devops,azure-keyvault,Azure,Azure Devops,Azure Keyvault,因此,我正试图使用Azure Devops管道和ARM模板对我的所有Azure基础设施进行编码。这是相当困难的,但我可以看到的好处是,部署在5分钟内为我提供20个资源,这一切都很好 然而,我遇到了一个问题。我想部署一个新的Keyvault。别紧张!我想存储x509证书,它是我的Web应用程序使用的通配符证书。打勾很容易。现在我想创建一个“Microsoft.Web/Certificates”证书资源,然后可以使用它为我的Web应用创建SSL自定义绑定。这失败了: "The service doe
"The service does not have access to '...microsoft.keyvault/vaults/gs-prd1-kv-apps' Key Vault.
这在这里的样本模板中得到了合理的记录。事实证明**Microsoft.Azure.Websites“资源提供程序没有访问Keyvault的权限。要解决此问题,请运行powershell或az cli命令,将RP添加到我的新Keyvault中
Set-AzureRmKeyVaultAccessPolicy -VaultName KEY_VAULT_NAME -ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd -PermissionsToSecrets get
问题是,我需要在Devops管道或ARM模板中执行此操作,但我完全不知道如何执行。
我曾尝试将az命令添加到新的构建任务中,但运行管道的服务原则也没有添加该命令的正确权限
有人能帮忙吗?一定有办法部署带有x509 cert的Keyvault,并将此资源分配给Web应用程序?我想我会分享我目前正在解决的这个问题的解决方案。因此,让我们澄清一下我们希望在ARM模板中部署什么:
- 一个新的KeyVault(Microsoft.KeyVault/vaults),其中包含一个以pkcs12格式存储为机密的x509证书
- 新的应用程序服务计划(Microsoft.Web/serverfarms)
- 应用程序服务计划中的新web证书(Microsoft.web/certificates),可用于使用HTTPS定义自定义域名。这是已放置在新密钥库中的x509证书
我从中得到了一个暗示,并做了以下事情 1.创建新的Keyvault并将x509证书作为机密添加到其中 2.运行az CLI命令以获取“Microsoft Azure应用程序服务”的服务主体。 这将显示该服务的许多属性,包括我可以复制以在ARM模板中使用的[objectId] 3.使用上面的[objectId]在ARM模板中为“Microsoft Azure应用程序服务”服务主体创建Keyvault访问策略资源。仅授予此主体“获取”机密权限 4.为其创建应用服务计划和新的Web证书资源
现在,当我运行Microsoft Azure应用程序服务主体有权从新的Keyvault检索x509证书并在服务计划中创建web证书资源的模板时。您可以看看这个:将Az powershell模块与Azure Devops一起使用,谢谢Nancy。是的,它确实突出显示了创建和使用服务principal以启用创建资源。但是,我想为我正在ARM模板本身中创建的Keyvault的服务主体添加访问策略。我可以看到如何执行此操作,但我需要服务主体的ObjectId。
az ad sp list --display-name "Microsoft Azure App Service"