【问题标题】:ARM template keyvault accesspolicies inside object parameter对象参数内的 ARM 模板密钥库访问策略
【发布时间】:2019-03-19 16:31:07
【问题描述】:

当我为 azure keyvault 部署我的 ARM 模板时,我收到了此错误消息。

 "error": {
    "code": "BadRequest",
    "message": "An invalid value was provided for 'accessPolicies'."
  }

我的模板:

  {
            "type": "Microsoft.KeyVault/vaults",
            "name": "[parameters('keyVaultName')]",
            "apiVersion": "2016-10-01",
            "location": "[parameters('location')]",
            "properties": {
                "enabledForDeployment": "[parameters('enableVaultForDeployment')]",
                "enabledForDiskEncryption": "[parameters('enableVaultForDiskEncryption')]",
                "enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
                "tenantId": "[parameters('tenantId')]",
                "accessPolicies": [],
                "sku": {
                    "name": "[parameters('skuName')]",
                    "family": "A"
                }
            }
        },
        {
            "type": "Microsoft.KeyVault/vaults/accessPolicies",
            "name": "[concat(parameters('keyVaultName'), '/add')]",
            "apiVersion": "2018-02-14",
            "dependsOn": [
                "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
            ],
            "properties": {
                "copy": [
                    {
                        "name": "accessPolicies",
                        "count": "[length(parameters('ObjectPolicies'))]",
                        "input": {
                            "tenantId": "[parameters('ObjectPolicies')[copyIndex('accessPolicies')].tenantId]",
                            "objectId": "[parameters('ObjectPolicies')[copyIndex('accessPolicies')].objectId]",
                            "permissions": {
                                "keys": "[parameters('ObjectPolicies')[copyIndex('accessPolicies')].permissions.keys]",
                                "secrets": "[parameters('ObjectPolicies')[copyIndex('accessPolicies')].permissions.secrets]"
                            }
                        }
                    }
                ]
            }
        }

我的参数文件:

  "ObjectPolicies": {
            "value": [
                {
                    "tenantId": "xxxxx",
                    "objectId": "xxxxx",
                    "permissions": {
                        "keys": [
                            "all"
                        ],
                        "secrets": [
                            "all"
                        ]
                    }
                },

我想在一个对象内创建一个具有多个访问策略的 Keyvault,以便对我的参数有一个很好的了解。而不是 objectID1、objectId2、objectId 3。 试图从here 上复制这个好答案的答案。 看来我的设置与 4c74356b41 相同,但仍有错误消息。

This SO question 也有相同的错误消息,但他似乎没有为他的问题添加答案。

【问题讨论】:

  • 嘿,如果您临时删除第二个资源(“Microsoft.KeyVault/vaults/accessPolicies”)怎么办?错误消失了吗?你的循环对我来说很好
  • 如果我删除第二个资源,错误确实消失了。第二个资源是在我将循环放置在访问策略下的 keyvault 资源中之后,我想可能将循环放置在新的资源手镯中。也许这根本不是做事的方式。但我想要一种有效的方式将策略添加到我的密钥库

标签: azure powershell arm-template


【解决方案1】:

我认为不支持“全部”作为权限值,至少根据 api 参考,您必须一一列出所有这些。

"accessPolicies": [
    {
        "tenantId": "00000000-0000-0000-0000-000000000000",
        "objectId": "00000000-0000-0000-0000-000000000000",
        "permissions": {
            "keys": [
                "encrypt",
                "decrypt",
                "wrapKey",
                "unwrapKey",
                "sign",
                "verify",
                "get",
                "list",
                "create",
                "update",
                "import",
                "delete",
                "backup",
                "restore",
                "recover",
                "purge"
            ],
            "secrets": [
                "get",
                "list",
                "set",
                "delete",
                "backup",
                "restore",
                "recover",
                "purge"
            ],
            "certificates": [
                "get",
                "list",
                "delete",
                "create",
                "import",
                "update",
                "managecontacts",
                "getissuers",
                "listissuers",
                "setissuers",
                "deleteissuers",
                "manageissuers",
                "recover",
                "purge"
            ]
        }
    }
]

阅读:
https://docs.microsoft.com/en-us/rest/api/keyvault/vaults/createorupdate#create_a_new_vault_or_update_an_existing_vault

【讨论】:

  • 是的,完全成功了。我从以前的 ARM 模板中获得了“全部”,如果我记得的话,它就像一个魅力。
  • "all" 对我来说很好。我确实收到了 OP 提供的错误,当我尝试针对来自不同租户的对象授予访问策略时 - 这显然是不允许的。
猜你喜欢
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多