Tutorial: Buat formulir portal Microsoft Azure untuk spesifikasi templat

Anda dapat membuat formulir yang muncul di portal Azure untuk membantu pengguna dalam menyebarkan spesifikasi templat. Formulir memungkinkan pengguna untuk memasukkan nilai yang diteruskan sebagai parameter ke spesifikasi templat.

Saat Anda membuat spesifikasi templat, Anda mengemas formulir dan templat Azure Resource Manager (template ARM) bersama-sama. Menyebarkan spesifikasi templat melalui portal secara otomatis meluncurkan formulir.

Cuplikan layar berikut menunjukkan formulir yang dibuka di portal Azure.

Cuplikan layar formulir portal Azure untuk memberikan nilai ke spesifikasi templat.

Prasyarat

Akun Azure dengan langganan aktif. Buat akun gratis.

Untuk Azure PowerShell, gunakan versi 6.0.0 atau yang lebih baru. Untuk Azure CLI, gunakan versi 2.24.0 atau yang lebih baru.

Membuat templat

Untuk memperlihatkan elemen portal berbeda yang tersedia dalam formulir, Anda akan menggunakan templat ARM dengan beberapa parameter. Templat berikut membuat brankas kunci, mengonfigurasi izin ke brankas kunci untuk pengguna, dan menambahkan rahasia.

Salin file ini dan simpan secara lokal. Tutorial ini mengasumsikan Anda telah menamakannya keyvault.json tetapi Anda dapat memberinya nama apa pun.

{
  "$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')]"
      }
    }
  ]
}

Membuat formulir default

Portal Microsoft Azure menyediakan kotak pasir untuk membuat dan mempratinjau formulir. Kotak pasir ini dapat merender formulir dari templat ARM yang ada. Anda akan menggunakan formulir default ini untuk mulai membuat formulir untuk spesifikasi templat Anda. Untuk informasi selengkapnya tentang struktur formulir, lihat FormViewType.

  1. Buka Kotak pasir tampilan formulir.

    Cuplikan layar tampilan formulir portal Azure antarmuka kotak pasir.

  2. Di Jenis Paket, pilih CustomTemplate. Pastikan Anda memilih jenis paket sebelum menentukan templat penyebaran.

  3. Di Templat penyebaran (opsional), pilih templat brankas kunci yang Anda simpan secara lokal. Saat ditanya apakah Anda ingin menimpa perubahan saat ini, pilih Ya. Formulir yang dibuat secara otomatis ditampilkan di jendela kode. Formulir dapat diedit dari portal. Untuk mengkustomisasi formulir, lihat mengkustomisasi formulir. Jika Anda melihat lebih dekat ke dalam formulir yang dibuat secara otomatis, judul default disebut Uji Tampilan Formulir, dan hanya ada satu langkah yang disebut dasar-dasar yang ditentukan.

    {
      "$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. Untuk melihatnya berfungsi tanpa modifikasi apa pun, pilih Pratinjau.

    Cuplikan layar formulir portal Azure dasar yang dihasilkan.

    Kotak pasir menampilkan formulir. Kotak pasir ini memiliki bidang untuk memilih langganan, grup sumber daya, dan wilayah. Kotak pasir ini juga memiliki bidang untuk semua parameter dari templat.

    Sebagian besar bidang adalah kotak teks, tetapi beberapa bidang khusus untuk jenis parameter. Saat templat Anda menyertakan nilai yang diizinkan untuk parameter, formulir dibuat secara otomatis menggunakan elemen drop-down. Elemen drop-down telah diisi sebelumnya dengan nilai yang diizinkan.

    Di antara judul dan detail Proyek, tidak ada tab karena formulir default hanya memiliki satu langkah yang ditentukan. Di bagian Kustomisasi formulir , Anda akan memecah parameter menjadi beberapa tab.

    Peringatan

    Jangan pilih Buat karena akan meluncurkan penerapan yang sebenarnya. Anda akan memiliki kesempatan untuk menyebarkan spesifikasi templat nanti dalam tutorial ini.

  5. Untuk keluar dari pratinjau, pilih Batal.

Menyesuaikan formulir

Formulir default adalah titik awal yang baik untuk memahami formulir, tetapi biasanya Anda ingin menyesuaikannya. Anda dapat mengeditnya di kotak pasir atau di Visual Studio Code. Opsi pratinjau hanya tersedia di kotak pasir.

  1. Beri judul pada formulir yang menjelaskan penggunaannya.

    {
      "$schema": "https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json#",
      "view": {
        "kind": "Form",
        "properties": {
          "title": "Key Vault and secret",
    
  2. Formulir default Anda memiliki semua bidang untuk kerangka Anda yang digabungkan menjadi satu langkah yang disebut Dasar. Untuk membantu pengguna memahami nilai yang mereka berikan, bagi formulir menjadi langkah-langkah. Setiap langkah berisi bidang yang terkait dengan bagian logis dari solusi untuk digunakan.

    Temukan langkah berlabel Dasar. Anda akan mempertahankan langkah ini tetapi menambahkan langkah-langkah di bawahnya. Langkah-langkah baru akan fokus pada konfigurasi brankas kunci, mengatur izin pengguna, dan menentukan rahasia. Pastikan Anda menambahkan koma setelah langkah dasar.

    {
      "$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": {
          ...
        }
      }
    }
    

    Penting

    Properti dalam bentuk peka huruf besar/kecil. Pastikan Anda menggunakan kapitalisasi yang ditunjukkan pada contoh.

  3. Pilih Pratinjau. Anda akan melihat langkah-langkahnya, tetapi kebanyakan tidak memiliki elemen apa pun.

    Cuplikan layar formulir portal Azure dengan beberapa langkah.

  4. Sekarang, pindahkan elemen ke langkah-langkah yang tepat. Mulailah dengan elemen berlabel Nama Rahasia dan Nilai Rahasia. Hapus elemen ini dari langkah Dasar dan tambahkan ke langkah Rahasia.

    {
      "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. Saat Anda memindahkan elemen, Anda perlu memperbaiki bagian outputs. Saat ini, bagian output mereferensikan elemen-elemen tersebut seolah-olah masih dalam langkah dasar. Perbaiki sintaks sehingga mereferensikan elemen di langkah secret.

    "outputs": {
      "parameters": {
        ...
        "secretName": "[steps('secret').secretName]",
        "secretValue": "[steps('secret').secretValue]"
      }
    
  6. Lanjutkan memindahkan elemen ke langkah-langkah yang tepat. Daripada pergi melalui masing-masing, lihatlah formulir yang diperbarui.

    {
      "$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. Simpan file ini secara lokal dengan nama keyvaultform.json.

Membuat spesifikasi templat

Saat Anda membuat spesifikasi templat, sediakan kedua file.

Untuk PowerShell, gunakan New-AzTemplateSpec dan berikan formulir di parameter -UIFormDefinitionFile.

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

Untuk Azure CLI, gunakan az ts create dan berikan formulir di parameter --ui-form-definition.

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

Sebarkan melalui portal

Untuk menguji formulir, buka portal dan navigasikan ke spesifikasi templat Anda. Pilih Sebarkan.

Cuplikan layar gambaran umum spesifikasi templat Azure dengan opsi sebarkan disorot.

Anda akan melihat bentuk yang Anda buat. Ikuti langkah-langkahnya dan berikan nilai untuk bidang tersebut.

Pada langkah Dasar, Anda akan melihat bidang untuk Wilayah. Bidang ini digunakan untuk lokasi kelompok sumber daya. Pada langkah Brankas Kunci, Anda akan melihat bidang untuk Lokasi. Bidang ini digunakan untuk lokasi kubah kunci.

Pada langkah Izin, Anda dapat memberikan ID pengguna Anda sendiri untuk ID objek. Gunakan nilai default (["list"]) untuk izin kunci dan rahasia. Anda akan memperbaiki opsi tersebut di bagian berikutnya.

Setelah Anda selesai memberikan nilai, pilih Buat untuk menerapkan spesifikasi templat.

Meningkatkan formulir

Di bagian sebelumnya, Anda menambahkan langkah dan memindahkan elemen, tetapi Anda tidak mengubah perilaku default apa pun. Di bagian ini, Anda akan membuat perubahan yang meningkatkan pengalaman bagi pengguna spesifikasi templat Anda.

Sebelumnya, dua bidang izin adalah kotak teks. Sekarang, Anda akan menggunakan drop-down. Setel jenisnya ke Microsoft.Common.DropDown.

Perbarui keysPermissions:

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

Dan secretsPermissions:

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

Bidang-bidang ini perlu melewati array ke templat. Drop-down biasa tidak akan berfungsi karena hanya memungkinkan Anda memilih satu nilai. Untuk memilih lebih dari satu nilai dan meneruskannya sebagai array, tambahkan bidang multiselect dan setel ke true.

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

Akhirnya, Anda harus menentukan nilai yang diizinkan untuk drop-down dan nilai default.

{
  "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
}

Buat versi baru spesifikasi templat.

Dengan PowerShell:

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

atau Azure CLI:

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

Sebarkan ulang spesifikasi templat Anda dengan formulir portal yang ditingkatkan.

Cuplikan layar formulir portal Azure untuk memberikan nilai ke spesifikasi templat.

Perhatikan bahwa bidang izin Anda sekarang drop-down yang memungkinkan beberapa nilai.

Langkah berikutnya

Untuk informasi selengkapnya tentang menyebarkan spesifikasi templat sebagai templat yang ditautkan, lihat Tutorial: Menyebarkan spesifikasi templat sebagai templat yang ditautkan.