Share via


Tutorial: Erstellen von Azure-Portalformularen für eine Vorlagenspezifikation

Sie können ein Formular erstellen, das im Azure-Portal angezeigt wird, um Benutzer bei der Bereitstellung einer Vorlagenspezifikation zu unterstützen. Mit dem Formular können Benutzer Werte eingeben, die als Parameter an die Vorlagenspezifikation übergeben werden.

Wenn Sie die Vorlagenspezifikation erstellen, fassen Sie das Formular und die Azure Resource Manager-Vorlage (ARM-Vorlage) in einem Paket zusammen. Wenn Sie die Vorlagenspezifikation über das Portal bereitstellen, wird das Formular automatisch gestartet.

Der folgende Screenshot zeigt ein im Azure-Portal geöffnetes Formular.

Screenshot des Formulars im Azure-Portal für das Bereitstellen von Werten für eine Vorlagenspezifikation.

Voraussetzungen

Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.

Verwenden Sie mindestens Version 6.0.0 von Azure PowerShell. Verwenden Sie für die Azure CLI mindestens Version 2.24.0.

Erstellen der Vorlage

Um die verschiedenen Portalelemente anzuzeigen, die in einem Formular verfügbar sind, verwenden Sie eine ARM-Vorlage mit mehreren Parametern. Die folgende Vorlage erstellt einen Schlüsseltresor, konfiguriert die Benutzerberechtigungen für den Schlüsseltresor und fügt ein Geheimnis hinzu.

Kopieren Sie diese Datei, und speichern Sie sie lokal. In dieser Anleitung wird davon ausgegangen, dass der Name der Datei keyvault.json lautet, aber Sie können ihr jeden beliebigen Namen geben.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the key vault should be created."
      }
    },
    "enabledForDeployment": {
      "type": "bool",
      "defaultValue": false,
      "allowedValues": [
        true,
        false
      ],
      "metadata": {
        "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault."
      }
    },
    "enabledForDiskEncryption": {
      "type": "bool",
      "defaultValue": false,
      "allowedValues": [
        true,
        false
      ],
      "metadata": {
        "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys."
      }
    },
    "enabledForTemplateDeployment": {
      "type": "bool",
      "defaultValue": false,
      "allowedValues": [
        true,
        false
      ],
      "metadata": {
        "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault."
      }
    },
    "tenantId": {
      "type": "string",
      "defaultValue": "[subscription().tenantId]",
      "metadata": {
        "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet."
      }
    },
    "objectId": {
      "type": "string",
      "metadata": {
        "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets."
      }
    },
    "keysPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge."
      }
    },
    "secretsPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    },
    "secretName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the secret that you want to create."
      }
    },
    "secretValue": {
      "type": "secureString",
      "metadata": {
        "description": "Specifies the value of the secret that you want to create."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2022-07-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enabledForDeployment": "[parameters('enabledForDeployment')]",
        "enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
        "enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
        "tenantId": "[parameters('tenantId')]",
        "accessPolicies": [
          {
            "objectId": "[parameters('objectId')]",
            "tenantId": "[parameters('tenantId')]",
            "permissions": {
              "keys": "[parameters('keysPermissions')]",
              "secrets": "[parameters('secretsPermissions')]"
            }
          }
        ],
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/secrets",
      "apiVersion": "2022-07-01",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretName'))]",
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
      ],
      "properties": {
        "value": "[parameters('secretValue')]"
      }
    }
  ]
}

Erstellen eines Standardformulars

Das Azure-Portal bietet eine Sandbox für die Erstellung und Vorschau von Formularen. Diese Sandbox kann ein Formular aus einer vorhandenen ARM-Vorlage rendern. Sie verwenden dieses Standardformular, um mit dem Erstellen eines Formulars für Ihre Vorlagenspezifikation zu beginnen. Weitere Informationen zur Formularstruktur finden Sie unter FormViewType.

  1. Öffnen Sie Sandbox für Formularansicht.

    Screenshot der Sandbox-Schnittstelle für die Azure-Portal-Formularansicht.

  2. Wählen Sie unter Pakettyp die Option CustomTemplate aus. Stellen Sie sicher, dass Sie den Pakettyp auswählen, bevor Sie die Bereitstellungsvorlage angeben.

  3. Wählen Sie unter Bereitstellungsvorlage (optional) die Schlüsseltresorvorlage aus, die Sie lokal gespeichert haben. Wenn Sie gefragt werden, ob die aktuellen Änderungen überschrieben werden sollen, klicken Sie auf Ja. Das automatisch generierte Formular wird im Codefenster angezeigt. Das Formular kann über das Portal bearbeitet werden. Informationen zum Anpassen des Formulars finden Sie unter Anpassen des Formulars. Wenn Sie sich das automatisch generierte Formular genau ansehen, lautet der Standardtitel Testformularansicht, und es ist nur ein Schritt namens Grundlagen definiert.

    {
      "$schema": "https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json",
      "view": {
        "kind": "Form",
        "properties": {
          "title": "Test Form View",
          "steps": [
            {
              "name": "basics",
              "label": "Basics",
              "elements": [
                ...
              ]
            }
          ]
        },
        "outputs": {
          ...
        }
      }
    }
    
  4. Um zu sehen, ob das Formular auch ohne Modifikationen funktioniert, wählen Sie Vorschau aus.

    Screenshot des generierten Azure-Portal-Basisformulars.

    Die Sandbox zeigt das Formular an. Es enthält Felder zum Auswählen eines Abonnements, einer Ressourcengruppe und einer Region. Außerdem werden Felder für alle Parameter aus der Vorlage angezeigt.

    Die meisten Felder sind Textfelder, aber einige Felder sind spezifisch für den Typ des Parameters. Wenn Ihre Vorlage zulässige Werte für einen Parameter enthält, verwendet das automatisch generierte Formular ein Dropdownelement. Das Dropdownelement ist mit den zulässigen Werten vorab aufgefüllt.

    Zwischen dem Titel und den Projektdetails gibt es keine Registerkarten, da im Standardformular nur ein Schritt definiert ist. Im Abschnitt Formular anpassen teilen Sie die Parameter auf mehrere Registerkarten auf.

    Warnung

    Wählen Sie nicht Erstellen aus, da dies eine tatsächliche Bereitstellung auslöst. Sie haben später in diesem Tutorial die Möglichkeit, die Vorlagenspezifikation bereitzustellen.

  5. Um die Vorschau zu beenden, wählen Sie Abbrechen aus.

Anpassen des Formulars

Das Standardformular ist ein guter Ausgangspunkt für das Verständnis von Formularen, aber in der Regel möchten Sie es anpassen. Sie können das Formular in der Sandbox oder in Visual Studio Code bearbeiten. Die Vorschauoption ist nur in der Sandbox verfügbar.

  1. Geben Sie dem Formular einen Titel (title), der seine Verwendung beschreibt.

    {
      "$schema": "https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json#",
      "view": {
        "kind": "Form",
        "properties": {
          "title": "Key Vault and secret",
    
  2. In Ihrem Standardformular wurden alle Felder für Ihre Vorlage in einem Schritt namens Basics zusammengefasst. Damit Benutzer die Werte, die sie angeben, besser verstehen können, unterteilen Sie das Formular in Schritte. Jeder Schritt enthält Felder, die sich auf einen logischen Teil der bereitzustellenden Lösung beziehen.

    Suchen Sie den Schritt mit der Bezeichnung Basics. Sie behalten diesen Schritt bei, fügen aber darunter Schritte hinzu. Die neuen Schritte konzentrieren sich auf das Konfigurieren des Schlüsseltresors, das Festlegen von Benutzerberechtigungen und das Angeben des Geheimnisses. Stellen Sie sicher, dass Sie nach dem Schritt „Basics“ ein Komma hinzufügen.

    {
      "$schema": "https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json#",
      "view": {
        "kind": "Form",
        "properties": {
          "title": "Key Vault and secret",
          "steps": [
            {
              "name": "basics",
              "label": "Basics",
              "elements": [
                ...
              ]
            },
            {
              "name": "keyvault",
              "label": "Key Vault",
              "elements": [
              ]
            },
            {
              "name": "permissions",
              "label": "Permissions",
              "elements": [
              ]
            },
            {
              "name": "secret",
              "label": "Secret",
              "elements": [
              ]
            }
          ]
        },
        "outputs": {
          ...
        }
      }
    }
    

    Wichtig

    Für Eigenschaften im Formular muss die Groß-/Kleinschreibung beachtet werden. Stellen Sie sicher, dass Sie die in den Beispielen gezeigte Groß-/Kleinschreibung verwenden.

  3. Wählen Sie Vorschau aus. Sie sehen die Schritte, aber die meisten von enthalten keine Elemente.

    Screenshot des Formulars im Azure-Portal mit mehreren Schritten.

  4. Verschieben Sie nun Elemente in die geeigneten Schritte. Beginnen Sie mit den Elementen Secret Name und Secret Value. Entfernen Sie diese Elemente aus dem Schritt Basics, und fügen Sie in den Schritt Secret ein.

    {
      "name": "secret",
      "label": "Secret",
      "elements": [
      {
          "name": "secretName",
          "type": "Microsoft.Common.TextBox",
          "label": "Secret Name",
          "defaultValue": "",
          "toolTip": "Specifies the name of the secret that you want to create.",
          "constraints": {
            "required": true,
            "regex": "",
            "validationMessage": ""
          },
          "visible": true
        },
        {
          "name": "secretValue",
          "type": "Microsoft.Common.PasswordBox",
          "label": {
            "password": "Secret Value",
            "confirmPassword": "Confirm password"
          },
          "toolTip": "Specifies the value of the secret that you want to create.",
          "constraints": {
            "required": true,
            "regex": "",
            "validationMessage": ""
          },
          "options": {
            "hideConfirmation": true
          },
          "visible": true
        }
      ]
    }
    
  5. Wenn Sie Elemente verschieben, müssen Sie den Abschnitt outputs korrigieren. Derzeit verweist der Abschnitt „outputs“ auf diese Elemente, als ob sie sich noch im Schritt „Grundlagen“ befinden würden. Korrigieren Sie die Syntax, sodass sie auf die Elemente im Schritt secret verweist.

    "outputs": {
      "parameters": {
        ...
        "secretName": "[steps('secret').secretName]",
        "secretValue": "[steps('secret').secretValue]"
      }
    
  6. Fahren Sie mit dem Verschieben von Elementen in die entsprechenden Schritte fort. Anstatt jeden Schritt einzeln durchzugehen, sehen Sie sich das aktualisierte Formular an.

    {
      "$schema": "https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json#",
      "view": {
        "kind": "Form",
        "properties": {
          "title": "Key Vault and secret",
          "steps": [
            {
              "name": "basics",
              "label": "Basics",
              "elements": [
                {
                  "name": "resourceScope",
                  "type": "Microsoft.Common.ResourceScope",
                  "location": {
                    "resourceTypes": [
                      "microsoft.resources/resourcegroups"
                    ]
                  }
                }
              ]
            },
            {
              "name": "keyvault",
              "label": "Key Vault",
              "elements": [
                {
                  "name": "keyVaultName",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Key Vault Name",
                  "defaultValue": "",
                  "toolTip": "Specifies the name of the key vault.",
                  "constraints": {
                    "required": true,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                },
                {
                  "name": "skuName",
                  "type": "Microsoft.Common.DropDown",
                  "label": "Sku Name",
                  "defaultValue": "Standard",
                  "toolTip": "Specifies whether the key vault is a standard vault or a premium vault.",
                  "constraints": {
                    "required": false,
                    "allowedValues": [
                      {
                        "label": "Standard",
                        "value": "Standard"
                      },
                      {
                        "label": "Premium",
                        "value": "Premium"
                      }
                    ]
                  },
                  "visible": true
                },
                {
                  "name": "location",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Location",
                  "defaultValue": "[[resourceGroup().location]",
                  "toolTip": "Specifies the Azure location where the key vault should be created.",
                  "constraints": {
                    "required": false,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                },
                {
                  "name": "enabledForDeployment",
                  "type": "Microsoft.Common.DropDown",
                  "label": "Enabled For Deployment",
                  "defaultValue": "false",
                  "toolTip": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.",
                  "constraints": {
                    "required": false,
                    "allowedValues": [
                      {
                        "label": "true",
                        "value": true
                      },
                      {
                        "label": "false",
                        "value": false
                      }
                    ]
                  },
                  "visible": true
                },
                {
                  "name": "enabledForDiskEncryption",
                  "type": "Microsoft.Common.DropDown",
                  "label": "Enabled For Disk Encryption",
                  "defaultValue": "false",
                  "toolTip": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.",
                  "constraints": {
                    "required": false,
                    "allowedValues": [
                      {
                        "label": "true",
                        "value": true
                      },
                      {
                        "label": "false",
                        "value": false
                      }
                    ]
                  },
                  "visible": true
                },
                {
                  "name": "enabledForTemplateDeployment",
                  "type": "Microsoft.Common.DropDown",
                  "label": "Enabled For Template Deployment",
                  "defaultValue": "false",
                  "toolTip": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.",
                  "constraints": {
                    "required": false,
                    "allowedValues": [
                      {
                        "label": "true",
                        "value": true
                      },
                      {
                        "label": "false",
                        "value": false
                      }
                    ]
                  },
                  "visible": true
                }
              ]
            },
            {
              "name": "permissions",
              "label": "Permissions",
              "elements": [
                {
                  "name": "tenantId",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Tenant Id",
                  "defaultValue": "[[subscription().tenantId]",
                  "toolTip": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.",
                  "constraints": {
                    "required": false,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                },
                {
                  "name": "objectId",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Object Id",
                  "defaultValue": "",
                  "toolTip": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets.",
                  "constraints": {
                    "required": true,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                },
                {
                  "name": "keysPermissions",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Keys Permissions",
                  "defaultValue": "[[\"list\"]",
                  "toolTip": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.",
                  "constraints": {
                    "required": false,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                },
                {
                  "name": "secretsPermissions",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Secrets Permissions",
                  "defaultValue": "[[\"list\"]",
                  "toolTip": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.",
                  "constraints": {
                    "required": false,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                }
              ]
            },
            {
              "name": "secret",
              "label": "Secret",
              "elements": [
                {
                  "name": "secretName",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Secret Name",
                  "defaultValue": "",
                  "toolTip": "Specifies the name of the secret that you want to create.",
                  "constraints": {
                    "required": true,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                },
                {
                  "name": "secretValue",
                  "type": "Microsoft.Common.PasswordBox",
                  "label": {
                    "password": "Secret Value",
                    "confirmPassword": "Confirm password"
                  },
                  "toolTip": "Specifies the value of the secret that you want to create.",
                  "constraints": {
                    "required": true,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "options": {
                    "hideConfirmation": true
                  },
                  "visible": true
                }
              ]
            }
          ]
        },
        "outputs": {
          "parameters": {
            "keyVaultName": "[steps('keyvault').keyVaultName]",
            "location": "[steps('keyvault').location]",
            "enabledForDeployment": "[steps('keyvault').enabledForDeployment]",
            "enabledForDiskEncryption": "[steps('keyvault').enabledForDiskEncryption]",
            "enabledForTemplateDeployment": "[steps('keyvault').enabledForTemplateDeployment]",
            "tenantId": "[steps('permissions').tenantId]",
            "objectId": "[steps('permissions').objectId]",
            "keysPermissions": "[steps('permissions').keysPermissions]",
            "secretsPermissions": "[steps('permissions').secretsPermissions]",
            "skuName": "[steps('keyvault').skuName]",
            "secretName": "[steps('secret').secretName]",
            "secretValue": "[steps('secret').secretValue]"
          },
          "kind": "ResourceGroup",
          "location": "[steps('basics').resourceScope.location.name]",
          "resourceGroupId": "[steps('basics').resourceScope.resourceGroup.id]"
        }
      }
    }
    
  7. Speichern Sie diese Datei lokal unter dem Namen keyvaultform.json.

Erstellen von Vorlagenspezifikationen

Wenn Sie die Vorlagenspezifikation erstellen, geben Sie beide Dateien an.

Verwenden Sie für PowerShell New-AzTemplateSpec, und geben Sie das Formular im Parameter -UIFormDefinitionFile an.

New-AzTemplateSpec `
  -name keyvaultspec `
  -version 1 `
  -ResourceGroupName templateSpecRG `
  -location westus2 `
  -templatefile keyvault.json `
  -UIFormDefinitionFile keyvaultform.json

Bei Verwendung der Azure CLI verwenden Sie az ts create und geben das Formular im Parameter --ui-form-definition an.

az ts create \
  --name keyvaultspec \
  --version 1 \
  --resource-group templatespecRG \
  --location westus2 \
  --template-file keyvault.json \
  --ui-form-definition keyvaultform.json

Bereitstellung über das Portal

Navigieren Sie zum Testen des Formulars im Portal zu Ihrer Vorlagenspezifikation. Wählen Sie Bereitstellen aus.

Screenshot der Übersicht der Azure-Vorlagenspezifikation mit der Option „bereitstellen“ hervorgehoben.

Das von Ihnen erstellte Formular wird angezeigt. Gehen Sie die Schritte durch, und geben Sie Werte für die Felder an.

Im Schritt Basics wird ein Feld für die Region angezeigt. Dieses Feld wird für den Standort der Ressourcengruppe verwendet. Im Schritt Key Vault wird ein Feld Location angezeigt. Dieses Feld wird für den Standort des Schlüsseltresors verwendet.

Im Schritt Permissions können Sie Ihre eigene Benutzer-ID für die Objekt-ID angeben. Verwenden Sie den Standardwert (["list"]) für Schlüssel- und Geheimnisberechtigungen. Sie werden diese Option im nächsten Abschnitt verbessern.

Nachdem Sie alle anderen Werte angegeben haben, wählen Sie Erstellen aus, um die Vorlagenspezifikation bereitzustellen.

Verbessern des Formulars

Im vorherigen Abschnitt haben Sie Schritte hinzugefügt und Elemente verschoben, jedoch keine der Standardverhaltensweisen geändert. In diesem Abschnitt nehmen Sie Änderungen vor, um die Benutzerfreundlichkeit Ihrer Vorlagenspezifikation zu verbessern.

Zuvor waren die zwei Berechtigungsfelder Textfelder. Nun verwenden Sie ein Dropdownelement. Legen Sie den Typ auf Microsoft.Common.DropDown fest.

Aktualisieren Sie keysPermissions:

{
  "name": "keysPermissions",
  "type": "Microsoft.Common.DropDown",

Und secretsPermissions:

{
  "name": "secretsPermissions",
  "type": "Microsoft.Common.DropDown",

Diese Felder müssen ein Array an die Vorlage übergeben. Ein normales Dropdownelement funktioniert nicht, weil Sie nur einen Wert auswählen können. Um mehr als einen Wert auszuwählen und als Array zu übergeben, fügen Sie das Feld multiselect hinzu und legen es auf true fest.

{
  "name": "keysPermissions",
  "type": "Microsoft.Common.DropDown",
  "label": "Keys Permissions",
  "multiselect": true,
{
  "name": "secretsPermissions",
  "type": "Microsoft.Common.DropDown",
  "label": "Secrets Permissions",
  "multiselect": true,

Abschließend müssen Sie die zulässigen Werte für das Dropdownelement und einen Standardwert angeben.

{
  "name": "keysPermissions",
  "type": "Microsoft.Common.DropDown",
  "label": "Keys Permissions",
  "multiselect": true,
  "defaultValue":{
    "value": "list"
  },
  "toolTip": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge.",
  "constraints": {
    "required": false,
    "allowedValues":[
      {
        "label": "all",
        "value": "all"
      },
      {
        "label": "encrypt",
        "value": "encrypt"
      },
      {
        "label": "decrypt",
        "value": "decrypt"
      },
      {
        "label": "list",
        "value": "list"
      },
      {
        "label": "delete",
        "value": "delete"
      },
      {
        "label": "backup",
        "value": "backup"
      },
      {
        "label": "restore",
        "value": "restore"
      },
      {
        "label": "recover",
        "value": "recover"
      },
      {
        "label": "purge",
        "value": "purge"
      },
      {
        "label": "wrapKey",
        "value": "wrapKey"
      },
      {
        "label": "unwrapKey",
        "value": "unwrapKey"
      },
      {
        "label": "sign",
        "value": "sign"
      },
      {
        "label": "verify",
        "value": "verify"
      },
      {
        "label": "get",
        "value": "get"
      },
      {
        "label": "create",
        "value": "create"
      },
      {
        "label": "update",
        "value": "update"
      },
      {
        "label": "import",
        "value": "import"
      }
    ]
  },
  "visible": true
},
{
  "name": "secretsPermissions",
  "type": "Microsoft.Common.DropDown",
  "label": "Secrets Permissions",
  "multiselect": true,
  "defaultValue":{
    "value": "list"
  },
  "toolTip": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.",
  "constraints": {
    "required": false,
    "allowedValues":[
      {
        "label": "all",
        "value": "all"
      },
      {
        "label": "get",
        "value": "get"
      },
      {
        "label": "list",
        "value": "list"
      },
      {
        "label": "set",
        "value": "set"
      },
      {
        "label": "delete",
        "value": "delete"
      },
      {
        "label": "backup",
        "value": "backup"
      },
      {
        "label": "restore",
        "value": "restore"
      },
      {
        "label": "recover",
        "value": "recover"
      },
      {
        "label": "purge",
        "value": "purge"
      }
    ]
  },
  "visible": true
}

Erstellen Sie eine neue Version der Vorlagenspezifikation.

Mit PowerShell:

New-AzTemplateSpec `
  -name keyvaultspec `
  -version 2 `
  -ResourceGroupName templateSpecRG `
  -location westus2 `
  -templatefile keyvault.json `
  -UIFormDefinitionFile keyvaultform.json

Oder der Azure CLI:

az ts create \
  --name keyvaultspec \
  --version 2 \
  --resource-group templatespecRG \
  --location westus2 \
  --template-file keyvault.json \
  --ui-form-definition keyvaultform.json

Stellen Sie Ihre Vorlagenspezifikation mit dem verbesserten Portalformular erneut bereit.

Screenshot des Formulars im Azure-Portal für das Bereitstellen von Werten für eine Vorlagenspezifikation.

Beachten Sie, dass Ihre Berechtigungsfelder jetzt in einem Dropdownelement enthalten sind, das mehrere Werte zulässt.

Nächste Schritte

Weitere Informationen zur Bereitstellung einer Vorlagenspezifikation als verknüpfte Vorlage finden Sie unter Tutorial: Bereitstellen einer Vorlagenspezifikation als verknüpfte Vorlage.