如何通过 ARM 模板将访问策略添加到不同资源组中的 Keyvault

How to add Access Policy to a Keyvault in different Resource Group through ARM Templates

我有 3 个应用共享 1 个密钥库。所以我决定创建 4 个 RG。 3 个 RG 用于 3 个应用程序,1 个 RG 用于 keyvault 和其他公共资源。

一切正常。我可以通过自己的 ARM 模板创建 3 个应用程序,通过它自己的 ARM 模板创建 Keyvault。

因此,当应用程序资源被配置时,我想通过 ARM 模板在 keyvault 中为该应用程序添加访问策略。

   {
      "apiVersion": "2018-05-01",
      "name": "accesspolicies_deployment",
      "resourceGroup": "Common-RG",
      "type": "Microsoft.Resources/deployments",
      "dependsOn": [],
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {},
          "variables": {},
          "resources": [
            {
              "type": "Microsoft.KeyVault/vaults/accessPolicies",
              "name": "[concat('kvdevwus', '/add')]",
              "apiVersion": "2018-02-14",
              "properties": {
                "accessPolicies": [
                  {
                    "tenantId": "[reference(variables('website'),'2018-02-01','Full').identity.tenantId]",
                    "objectId": "[reference(variables('website'),'2018-02-01','Full').identity.principalId]",
                    "permissions": {
                      "keys": [
                        "all"
                      ],
                      "secrets": [
                        "all"
                      ],
                      "certificates": [
                        "all"
                      ],
                      "storage": [
                        "all"
                      ]
                    }
                  }
                ]
              }
            }
          ],
          "outputs": {
            "principalId": {
              "type": "string",
              "value": "[reference(variables('website'),'2018-02-01','Full').identity.principalId]"
            }
          }
        }
      }
    }

我在 apps 模板中使用上述模板。但是出现 Resource Not Found 错误。

是设计本身有问题还是我遗漏了什么?

必须查看更多代码才能确定,但​​我怀疑您无法通过内联部署执行您想要的操作,您必须使用链接模板。我们正在努力解决该问题,但尚不可用。

我认为您缺少 accesspolicies_deployment 资源中的 "dependsOn": []。我有和你一样的 set-up 我在一个公共资源组中有密钥保管库,在不同的资源中有我的 Web 应用程序。

在我创建网站的 ARM 模板中,我还添加了 accesspolicies_deployment 但添加了 "dependsOn": [webapp01] 以确保它首先创建的网站和创建 keyvalut 访问策略之前创建的身份