9

我正在尝试从 Release Management 部署一个 ARM 模板,其中包含一个“Microsoft.Web/certificates”资源,该资源引用存储在密钥保管库中的证书。当密钥保管库与我要部署到的资源组位于同一订阅中时,这可以正常工作。但是,当密钥保管库存在于不同的订阅中时,我收到以下错误。

资源 Microsoft.Web/certificates '证书名称' 失败并显示消息

{
    "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 上传到密钥保管库的,而不是通过门户。

我在这里错过了什么吗?

谢谢

4

2 回答 2

2

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

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

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

于 2017-02-23T10:23:31.913 回答
1

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

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

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

于 2020-04-26T22:59:20.767 回答