部署包含存储在密钥保管库中的证书的ARM模板时出错

时间:2016-11-30 03:21:18

标签: azure azure-resource-manager azure-keyvault

我正在尝试从发布管理部署一个ARM模板,其中包括一个' Microsoft.Web / certificates'引用存储在密钥库中的证书的资源。当密钥保管库存在于与我部署到的资源组相同的订阅中时,此方法可以正常工作。但是当密钥保管库存在于不同的订阅中时,我收到以下错误。

资源Microsoft.Web /证书'证书名称'失败了消息

{
    "Code": "BadRequest",
    "Message": "The parameter Properties.KeyVaultId has an invalid value.",
    "Target": null,
    "Details": [
    {
      "Message": "The parameter Properties.KeyVaultId has an invalid value."
    },
    {
      "Code": "BadRequest"
    },
    { 
      "ErrorEntity": {
        "Code": "BadRequest",
        "Message": "The parameter Properties.KeyVaultId has an invalid value.",
        "ExtendedCode": "51008",
        "MessageTemplate": "The parameter {0} has an invalid value.",
        "Parameters": [
          "Properties.KeyVaultId"
        ],
        "InnerErrors": null
      }
    }
    ], 
    "Innererror": null
}'

证书资源在我的模板中定义如下。

    {
        "type":"Microsoft.Web/certificates",
        "name": "SomeName",
        "location": "East US 2",
        "apiVersion": "2016-03-01",
        "properties": {
            "keyVaultId": "/subscriptions/<subscriptionId>/resourceGroups/<vault resource group>/providers/Microsoft.KeyVault/vaults/<vault name>",
            "keyVaultSecretName": "SecretName"                
        }            
    }

我正在使用VSTS中的Azure资源组部署任务来部署资源组。该任务配置为使用具有在Azure中设置以下权限的服务主体的端点:

  • 包含密钥保管库的资源组上的密钥保管库参与者角色。
  • 获取密钥保管库的秘密权限

Microsoft.Azure.WebSites主体被授予对密钥保管库机密的获取权限。

密钥保管库还具有“启用Azure资源管理器访问权限以进行模板部署”的功能。选项已启用。证书使用powershell上传到密钥保管库,而不是通过门户网站。

我在这里错过了什么吗?

由于

2 个答案:

答案 0 :(得分:0)

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

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

您是否一直在更改ARM模板中的秘密名称,而不删除azure门户中的完整资源组?

答案 1 :(得分:0)

如果在先前的部署中在keyvault中引用了证书(秘密),并且证书已在keyvault中删除或替换,则可以获取此证书。新部署将因上述错误而失败(51008)。例如,如果您从另一个密钥库存储中迁移了机密。

这与同一证书的版本不同。新版本可以正常工作。

将密钥替换为密钥库中的原始密钥,或者删除密钥并添加新密钥。