如何从 ARM 模板访问 KeyVault 中的 SSL

How to access SSL in KeyVault from ARM Template

重复问题?

我不相信。如前所述,这正在使用本地部署中的我的用户工作,并且所有(据我了解)权限已授予服务主体和本地也失败的测试用户。

我有一个 ARM 模板,用于配置和部署 Web 应用程序,其中一部分是将证书绑定应用到 Web 应用程序。模板的那部分看起来像这样:

{
  "type": "Microsoft.Web/sites",
  "kind": "api",
  "name": "[parameters('name')]",
  "apiVersion": "2015-08-01",
  "location": "[resourceGroup().location]",
  "properties": {
    "name": "[parameters('name')]",
    "serverFarmId": "[resourceId(parameters('servicePlanGroup'), 'Microsoft.Web/serverFarms', parameters('servicePlanName'))]"
  },
  "resources": [
    {
      "name": "[parameters('certificateName')]",
      "apiVersion": "2014-04-01",
      "type": "Microsoft.Web/certificates",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/Sites', parameters('name'))]"
      ],
      "properties": {
        "keyVaultId": "[parameters('keyVaultId')]",
        "keyVaultSecretName": "[parameters('keyVaultSecretName')]"
      }
    }
   ]
  }

当我从我的 PC 在本地 运行 它工作正常,当我从 VSTS 运行 它时,部署失败,看起来像这样:

错误所在:

"operationName": {
    "localizedValue": "Microsoft.Web/certificates/write",
    "value": "Microsoft.Web/certificates/write"
},
"properties": {
    "statusCode": "Unauthorized",
    "statusMessage": "{\"error\":{\"code\":\"BadRequest\",\"message\":\"\"}}"
}

SSL 证书和 KeyVault 都为 VSTS 运行 在此版本下的服务主体添加了权限。

Release Principal 用户在 KeyVault 中拥有 Read,List 的密钥和秘密,并且是订阅中的 Contributor。我在本地使用的帐户是 co-admin

关于需要添加哪些权限有什么想法吗?

更新

我添加了另一个用户 testuser,它与服务主体具有相同的权限,但它现在在本地失败。我想添加权限并查看有效方法需要反复试验。

这不是一个重复的问题 - 如前所述,它指出了跨帐户的奇怪权限问题,即使设置了权限也是如此。事实证明,出于某种原因,co-admin 尽管存在以下问题仍能正常工作——可能是 ARM/permission 基础架构中的一个潜在错误?

这适用于 co-admin 用户,但不适用于其他任何人。

而这适用于特权较低的 user/principal。

注意架构版本更改。 2014-04-01 的原始架构实际上不包含任何有关 Microsoft.Web/Certificates 的内容,而更新后的架构 2015-08-01 确实包含此信息。

使用具有与 VSTS 服务主体相同权限的 testuser 的本地测试可以很好地处理此更改。

其他任何试图实现 SSL 绑定的旁注:

资源的位置在我的例子中都是一样的。我怀疑如果保险库位于不同的位置,那么它的资源组可能还需要指定才能使其正常工作——不过我还没有测试过这个理论。