带有 Key Vault 证书的 ARM 模板

ARM Template with Key Vault certificate

我遇到了一个奇怪的问题。我有 1 个 ARM 模板,用于部署 2 个环境。

我正在添加这样的证书:

{
        "type": "Microsoft.Web/certificates",
        "name": "[variables('certificateName')]",
        "apiVersion": "2016-03-01",
        "location": "[resourceGroup().location]",
        "properties": {
            "keyVaultId": "[parameters('almKeyVaultId')]",
            "keyVaultSecretName": "[parameters('servicePrincipalCertSecretName')]",
            "serverFarmId": "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]"
        },
        "dependsOn": [
            "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]"
        ]
    },

对于我的测试环境,这成功了。 当我部署 QA 环境时,出现错误:参数 KeyVaultId 和 KeyVaultSecretName 的值无效。

但是,测试和 QA 的参数值相同(almKeyVaultId 和 servicePrincipalCertSecretName)。

知道我做错了什么吗?

更新

删除完整的 QA 资源组后,我能够重新部署完全相同的 ARM 模板。 似乎资源组应该在 Key Vault 秘密之后创建?任何想法为什么?如果我们在生产中遇到这种情况,我们不想删除整个资源组

我想我找到了这个问题的原因。 显然,创建资源组后,您不能更改秘密名称。如果这样做,将抛出上述错误。

如果要更改密文名称,需要删除资源组并重新部署所有内容。

我可以确认删除资源组会起作用,但我已将 RBAC 应用于资源组并且供应商管理我们的权限,因此重新创建资源组会导致其他问题。

我使用 resources.azure.com 从资源组中删除了证书(未在门户中的资源组中显示),导航到资源组并将其从 Microsoft.Web\Certificates 集合中删除。