Öğretici: Şablon belirtimi için Azure portal formları oluşturma
Kullanıcıların şablon belirtimini dağıtmasına yardımcı olmak için Azure portal görünen bir form oluşturabilirsiniz. Form, kullanıcıların şablon belirtimine parametre olarak geçirilen değerleri girmesini sağlar.
Şablon belirtimini oluşturduğunuzda formu ve Azure Resource Manager şablonunu (ARM şablonu) birlikte paketleyebilirsiniz. Şablon belirtiminin portal aracılığıyla dağıtılması formu otomatik olarak başlatır.
Aşağıdaki ekran görüntüsünde, Azure portal açılan bir form gösterilmektedir.
Önkoşullar
Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir hesap oluşturun.
Azure PowerShell için 6.0.0 veya sonraki bir sürümü kullanın. Azure CLI için 2.24.0 veya sonraki bir sürümü kullanın.
Şablon oluşturma
Formda kullanılabilen farklı portal öğelerini göstermek için birkaç parametre içeren bir ARM şablonu kullanacaksınız. Aşağıdaki şablon bir anahtar kasası oluşturur, bir kullanıcı için anahtar kasası izinlerini yapılandırıp bir gizli dizi ekler.
Bu dosyayı kopyalayın ve yerel olarak kaydedin. Bu öğreticide keyvault.json olarak adlandırdığınız varsayılır ancak istediğiniz adı verebilirsiniz.
{
"$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')]"
}
}
]
}
Varsayılan form oluştur
Azure portal form oluşturmak ve önizlemesini görüntülemek için bir korumalı alan sağlar. Bu korumalı alan, mevcut arm şablonundan form işleyebilir. Şablon belirtiminiz için form oluşturmaya başlamak için bu varsayılan formu kullanacaksınız. Form yapısı hakkında daha fazla bilgi için bkz. FormViewType.
Form görünümü korumalı alanını açın.
Paket Türü'ndeCustomTemplate'ı seçin. Dağıtım şablonunu belirtmeden önce paket türünü seçtiğinizden emin olun.
Dağıtım şablonu (isteğe bağlı) bölümünde, yerel olarak kaydettiğiniz anahtar kasası şablonunu seçin. Geçerli değişikliklerin üzerine yazmak isteyip istemediğiniz sorulduğunda Evet'i seçin. Otomatik oluşturulan form kod penceresinde görüntülenir. Form portaldan düzenlenebilir. Formu özelleştirmek için bkz. formu özelleştirme. Otomatik oluşturulan forma yakından bakarsanız, varsayılan başlık Test Formu Görünümü olarak adlandırılır ve temel bilgiler tanımlı olarak adlandırılan tek bir adım vardır.
{ "$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": { ... } } }
Bunun herhangi bir değişiklik yapmadan çalıştığını görmek için Önizleme'yi seçin.
Korumalı alan formu görüntüler. Abonelik, kaynak grubu ve bölge seçmek için alanlar içerir. Ayrıca, şablondaki tüm parametrelerin alanlarını da içerir.
Alanların çoğu metin kutularıdır, ancak bazı alanlar parametre türüne özeldir. Şablonunuz bir parametre için izin verilen değerler içerdiğinde, otomatik oluşturulan form bir açılan öğe kullanır. Açılan öğe, izin verilen değerlerle önceden doldurulur.
Başlık ve Proje ayrıntıları arasında sekme yoktur çünkü varsayılan formda yalnızca bir adım tanımlanmıştır. Formu özelleştir bölümünde parametreleri birden çok sekmeye böleceksiniz.
Uyarı
Gerçek bir dağıtım başlatacağı için Oluştur'u seçmeyin. Bu öğreticinin ilerleyen bölümlerinde şablon belirtimini dağıtma fırsatınız olacak.
Önizlemeden çıkmak için İptal'i seçin.
Formu özelleştir
Varsayılan form, formları anlamak için iyi bir başlangıç noktasıdır, ancak genellikle formu özelleştirmek istersiniz. Korumalı alanda veya Visual Studio Code düzenleyebilirsiniz. Önizleme seçeneği yalnızca korumalı alanda kullanılabilir.
Forma kullanımını açıklayan bir başlık verin.
{ "$schema": "https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json#", "view": { "kind": "Form", "properties": { "title": "Key Vault and secret",
Varsayılan formunuzda şablonunuz için tüm alanlar Temel bilgiler adlı tek bir adımda birleştirildi. Kullanıcıların sağladıkları değerleri anlamasına yardımcı olmak için formu adımlara bölün. Her adım, dağıtılacak çözümün mantıksal bir bölümüyle ilgili alanlar içerir.
Temel Bilgiler etiketli adımı bulun. Bu adımı kullanmaya devam edersiniz ancak altına adımlar eklersiniz. Yeni adımlar anahtar kasasını yapılandırmaya, kullanıcı izinlerini ayarlamaya ve gizli diziyi belirtmeye odaklanır. Temel bilgiler adımından sonra virgül eklediğinizden emin olun.
{ "$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": { ... } } }
Önemli
Formdaki özellikler büyük/küçük harfe duyarlıdır. Örneklerde gösterilen büyük/küçük harfi kullandığınızdan emin olun.
Önizleme'yi seçin. Adımları görürsünüz, ancak bunların çoğunda herhangi bir öğe yoktur.
Şimdi öğeleri uygun adımlara taşıyın. Gizli Dizi Adı ve Gizli Dizi Değeri etiketli öğelerle başlayın. Bu öğeleri Temel bilgiler adımından kaldırın ve Gizli adıma ekleyin.
{ "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 } ] }
Öğeleri taşırken bölümünü düzeltmeniz
outputs
gerekir. Şu anda çıkışlar bölümü, bu öğelere hala temel bilgiler adımındaymiş gibi başvurur. Söz dizimini, adımdaki öğelere başvurması için düzeltinsecret
."outputs": { "parameters": { ... "secretName": "[steps('secret').secretName]", "secretValue": "[steps('secret').secretValue]" }
Öğeleri uygun adımlara taşımaya devam edin. Her birini incelemek yerine güncelleştirilmiş forma göz atın.
{ "$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]" } } }
Bu dosyayı keyvaultform.json adıyla yerel olarak kaydedin.
Şablon belirtimi oluşturma
Şablon belirtimini oluşturduğunuzda her iki dosyayı da sağlayın.
PowerShell için New-AzTemplateSpec komutunu kullanın ve parametresinde -UIFormDefinitionFile
formu sağlayın.
New-AzTemplateSpec `
-name keyvaultspec `
-version 1 `
-ResourceGroupName templateSpecRG `
-location westus2 `
-templatefile keyvault.json `
-UIFormDefinitionFile keyvaultform.json
Azure CLI için az ts create komutunu kullanın ve parametresinde --ui-form-definition
formu sağlayın.
az ts create \
--name keyvaultspec \
--version 1 \
--resource-group templatespecRG \
--location westus2 \
--template-file keyvault.json \
--ui-form-definition keyvaultform.json
Portal aracılığıyla dağıtma
Formu test etmek için portala gidin ve şablon belirtiminize gidin. Dağıt'ı seçin.
Oluşturduğunuz formu görürsünüz. Adımları izleyin ve alanlar için değerler sağlayın.
Temel Bilgiler adımında Bölge için bir alan görürsünüz. Bu alan kaynak grubunun konumu için kullanılır. Key Vault adımında Konum için bir alan görürsünüz. Bu alan, anahtar kasasının konumu için kullanılır.
İzinler adımında, nesne kimliği için kendi kullanıcı kimliğinizi sağlayabilirsiniz. Anahtar ve gizli dizi izinleri için varsayılan değeri (["list"]
) kullanın. Sonraki bölümde bu seçeneği geliştireceksiniz.
Değerleri sağlamayı bitirdiğinizde, şablon belirtimini dağıtmak için Oluştur'u seçin.
Formu geliştirme
Önceki bölümde adımlar eklediniz ve öğeleri taşıdınız, ancak varsayılan davranışlardan hiçbirini değiştirmediyseniz. Bu bölümde, şablon belirtiminizin kullanıcılarının deneyimini geliştiren değişiklikler yapacaksınız.
Daha önce, iki izin alanı metin kutularıydı. Şimdi bir açılan menü kullanacaksınız. türü olarak Microsoft.Common.DropDown
ayarlayın.
Güncelleştirme keysPermissions
:
{
"name": "keysPermissions",
"type": "Microsoft.Common.DropDown",
Ve secretsPermissions
:
{
"name": "secretsPermissions",
"type": "Microsoft.Common.DropDown",
Bu alanların şablona bir dizi geçirmesi gerekir. Normal bir açılan liste çalışmaz çünkü yalnızca bir değer seçmenize olanak tanır. Birden fazla değer seçmek ve bunları bir dizi olarak geçirmek için alanını ekleyin multiselect
ve olarak true
ayarlayın.
{
"name": "keysPermissions",
"type": "Microsoft.Common.DropDown",
"label": "Keys Permissions",
"multiselect": true,
{
"name": "secretsPermissions",
"type": "Microsoft.Common.DropDown",
"label": "Secrets Permissions",
"multiselect": true,
Son olarak, açılan liste için izin verilen değerleri ve varsayılan değeri belirtmeniz gerekir.
{
"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
}
Şablon belirtiminin yeni bir sürümünü oluşturun.
PowerShell ile:
New-AzTemplateSpec `
-name keyvaultspec `
-version 2 `
-ResourceGroupName templateSpecRG `
-location westus2 `
-templatefile keyvault.json `
-UIFormDefinitionFile keyvaultform.json
Veya Azure CLI:
az ts create \
--name keyvaultspec \
--version 2 \
--resource-group templatespecRG \
--location westus2 \
--template-file keyvault.json \
--ui-form-definition keyvaultform.json
Şablon belirtiminizi geliştirilmiş portal formuyla yeniden dağıtın.
İzin alanlarınızın artık birden çok değere izin veren bir açılan liste olduğuna dikkat edin.
Sonraki adımlar
Şablon belirtimlerini bağlantılı şablon olarak dağıtma hakkında bilgi edinmek için bkz . Öğretici: Şablon belirtimlerini bağlantılı şablon olarak dağıtma.