Установите политики доступа к хранилищу ключей для нескольких идентификаторов объектов, используя параметр (тип массива) через шаблон ARM - PullRequest
0 голосов
/ 18 июня 2020

Можно ли установить политики доступа к хранилищу ключей для нескольких идентификаторов объектов с помощью параметра типа массива через шаблон ARM?

    "policies": {
            "value": [
              {
                "objectId": "<object-id-1>",
                "permissions": ["get", "set", "list"]
              },
              {
                "objectId": "<object-id-2>",
                "permissions": ["get", "set", "list"]
              }
            ]
          }

Мне нужно установить политики доступа к хранилищу ключей для двух идентификаторов объектов, как показано выше . Вот что я пробовал:

введите описание изображения здесь

Я вижу следующую ошибку:

[error] InvalidTemplate: Ошибка проверки шаблона развертывания: 'Ресурс' Microsoft.KeyVault / vaults / keyvaultname / accessPolicies / add 'определен множественным раз в шаблоне.

1 Ответ

1 голос
/ 20 июня 2020

Похоже, вы почти у цели. Вот модификация того, что вы опубликовали, над которым я работаю.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "keyVaultName": {
      "type": "string"
    },
    "policies": {
      "type": "array",
      "metadata": {
        "description": "Array of object ids and permissions."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults/accessPolicies",
      "name": "[concat(parameters('keyVaultName'), '/add')]",
      "apiVersion": "2019-09-01",
      "properties": {
        "copy": [
          {
            "name": "accessPolicies",
            "count": "[length(parameters('policies'))]",
            "input": {
              "tenantId": "[parameters('policies')[copyIndex('accessPolicies')].tenantId]",
              "objectId": "[parameters('policies')[copyIndex('accessPolicies')].objectId]",
              "permissions": {
                "keys": "[parameters('policies')[copyIndex('accessPolicies')].keys]",
                "secrets": "[parameters('policies')[copyIndex('accessPolicies')].secrets]",
                "certificates": "[parameters('policies')[copyIndex('accessPolicies')].certificates]"
              }
            }
          }
        ]
      }
    }
  ]
}

Вот переменная PowerShell, которую я добавил при вызове развертывания.

$parameters = @{
  'keyVaultName' = 'kv62443460'
  'policies' = @(
    @{
        'tenantId' = '<GUID>'
        'objectId' = '<GUID>'
        'keys' = @()
        'secrets' = @('get')
        'certificates' = @()
    },
    @{
        'tenantId' = '<GUID>'
        'objectId' = '<GUID>'
        'keys' = @()
        'secrets' = @()
        'certificates' = @('list')
    }
  )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...