Hızlı Başlangıç: Azure Yönetilen Uygulama tanımı oluşturma ve yayımlama
Bu hızlı başlangıçta Azure Yönetilen Uygulamaları ile çalışmaya giriş bilgileri sağlanmaktadır. Hizmet kataloğunuzda depolanan ve kuruluşunuzun üyelerine yönelik yönetilen bir uygulama oluşturup yayımlarsınız.
Yönetilen uygulamayı hizmet kataloğunuzda yayımlamak için aşağıdaki görevleri gerçekleştirin:
- Yönetilen uygulamayla dağıtılacak kaynakları tanımlayan bir Azure Resource Manager şablonu (ARM şablonu) oluşturun.
- Yönetilen uygulamayı dağıtırken portal için kullanıcı arabirimi öğeleri tanımlayın.
- Gerekli şablon dosyalarını içeren bir .zip paketi oluşturun. .zip paket dosyasının hizmet kataloğunun yönetilen uygulama tanımı için 120 MB sınırı vardır.
- Kullanıcının aboneliğindeki kaynak grubuna hangi kullanıcı, grup veya uygulamanın erişmesi gerektiğine karar verin.
- .zip paketine işaret eden ve kimlik için erişim isteyen yönetilen uygulama tanımını oluşturun.
İsteğe bağlı: Yönetilen uygulama tanımınızı kendi depolama hesabınızdaki bir ARM şablonuyla dağıtmak istiyorsanız bkz. Kendi depolama alanınızı getirme.
Not
Bicep dosyaları yönetilen bir uygulamada kullanılamaz. Bicep derleme komutuyla bicep dosyasını ARM şablonu JSON'a dönüştürmeniz gerekir.
Önkoşullar
Bu hızlı başlangıcı tamamlamak için aşağıdaki öğelere ihtiyacınız vardır:
- Etkin aboneliği olan bir Azure hesabı. Hesabınız yoksa başlamadan önce ücretsiz bir hesap oluşturun .
- En son Azure Resource Manager Araçları uzantısıyla Visual Studio Code.
- Azure PowerShell veya Azure CLI'nın en son sürümünü yükleyin.
ARM şablonu oluşturma
Her yönetilen uygulama tanımı mainTemplate.json adlı bir dosya içerir. Şablon, dağıtılacak Azure kaynaklarını tanımlar ve normal ARM şablonundan farklı değildir.
Visual Studio Code açın, büyük/küçük harfe duyarlı mainTemplate.json adlı bir dosya oluşturun ve kaydedin.
Aşağıdaki JSON dosyasını ekleyin ve dosyayı kaydedin. Depolama hesabı oluşturma parametrelerini tanımlar ve depolama hesabının özelliklerini belirtir.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountNamePrefix": {
"type": "string",
"maxLength": 11,
"metadata": {
"description": "Storage prefix must be maximum of 11 characters with only lowercase letters or numbers."
}
},
"storageAccountType": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"storageAccountName": "[concat(parameters('storageAccountNamePrefix'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageEndpoint": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2021-09-01').primaryEndpoints.blob]"
}
}
}
Oluşturma deneyiminizi tanımlama
Yayımcı olarak, yönetilen uygulamayı oluşturmak için portal deneyimini tanımlarsınız. createUiDefinition.json dosyası portal arabirimini oluşturur. Açılan menüler, metin kutuları ve parola kutuları gibi denetim öğelerini kullanarak kullanıcıların her parametre için nasıl giriş sağladığını tanımlarsınız.
Visual Studio Code açın, büyük/küçük harfe duyarlı createUiDefinition.json adlı bir dosya oluşturun ve kaydedin.
Aşağıdaki JSON dosyasını dosyasına ekleyin ve kaydedin.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"basics": [
{}
],
"steps": [
{
"name": "storageConfig",
"label": "Storage settings",
"subLabel": {
"preValidation": "Configure the infrastructure settings",
"postValidation": "Done"
},
"bladeTitle": "Storage settings",
"elements": [
{
"name": "storageAccounts",
"type": "Microsoft.Storage.MultiStorageAccountCombo",
"label": {
"prefix": "Storage account name prefix",
"type": "Storage account type"
},
"defaultValue": {
"type": "Standard_LRS"
},
"constraints": {
"allowedTypes": [
"Premium_LRS",
"Standard_LRS",
"Standard_GRS"
]
}
}
]
}
],
"outputs": {
"storageAccountNamePrefix": "[steps('storageConfig').storageAccounts.prefix]",
"storageAccountType": "[steps('storageConfig').storageAccounts.type]",
"location": "[location()]"
}
}
}
Daha fazla bilgi edinmek için bkz . CreateUiDefinition ile çalışmaya başlama.
Dosyaları paketleme
İki dosyayı app.zipadlı bir dosyaya ekleyin. İki dosya ,.zip dosyasının kök düzeyinde olmalıdır. Dosyaları bir klasöre yerleştirirseniz, yönetilen uygulama tanımını oluştururken gerekli dosyaların mevcut olmadığını belirten bir hata alırsınız.
Paketi, tüketilebileceği erişilebilir bir konuma yükleyin. Depolama hesabı adı Azure genelinde genel olarak benzersiz olmalı ve uzunluk yalnızca küçük harf ve sayılarla 3-24 karakter uzunluğunda olmalıdır. parametresinde Name
yer tutucuyu demostorageaccount
benzersiz depolama hesabı adınızla değiştirin.
New-AzResourceGroup -Name storageGroup -Location eastus
$storageAccount = New-AzStorageAccount `
-ResourceGroupName storageGroup `
-Name "demostorageaccount" `
-Location eastus `
-SkuName Standard_LRS `
-Kind StorageV2
$ctx = $storageAccount.Context
New-AzStorageContainer -Name appcontainer -Context $ctx -Permission blob
Set-AzStorageBlobContent `
-File "D:\myapplications\app.zip" `
-Container appcontainer `
-Blob "app.zip" `
-Context $ctx
Yönetilen uygulama tanımı oluşturma
Bu bölümde Azure Active Directory'den kimlik bilgilerini alacak, bir kaynak grubu oluşturacak ve yönetilen uygulama tanımını oluşturacaksınız.
Azure Active Directory kullanıcı grubu veya uygulaması oluşturma
Sonraki adım, müşterinin kaynaklarını yönetmek için bir kullanıcı grubu, kullanıcı veya uygulama seçmektir. Bu kimlik, atanan role göre yönetilen kaynak grubu üzerinde izinlere sahiptir. Rol, Sahip veya Katkıda Bulunan gibi herhangi bir Azure yerleşik rolü olabilir. Yeni bir Active Directory kullanıcı grubu oluşturmak için bkz. Azure Active Directory’de grup oluşturma ve üye ekleme.
Bu örnekte bir kullanıcı grubu kullanıldığından, kaynakları yönetmek için kullanılacak kullanıcı grubunun nesne kimliğine ihtiyacınız vardır. Yer tutucuyu mygroup
grubunuzun adıyla değiştirin.
$groupID=(Get-AzADGroup -DisplayName mygroup).Id
Rol tanımı kimliği oluşturma
Ardından, kullanıcıya, kullanıcı grubuna veya uygulamaya erişim vermek istediğiniz Azure yerleşik rolünün rol tanımı kimliğine ihtiyacınız vardır. Genellikle Sahip, Katkıda Bulunan veya Okuyucu rolünü kullanırsınız. Aşağıdaki komut, Sahip rolünün rol tanımı kimliğinin nasıl alınacağını gösterir:
$roleid=(Get-AzRoleDefinition -Name Owner).Id
Yönetilen uygulama tanımı oluşturma
Yönetilen uygulama tanımınızı depolamak için henüz bir kaynak grubunuz yoksa yeni bir kaynak grubu oluşturun.
İsteğe bağlı: Yönetilen uygulama tanımınızı kendi depolama hesabınızdaki bir ARM şablonuyla dağıtmak istiyorsanız bkz. Kendi depolama alanınızı getirme.
New-AzResourceGroup -Name appDefinitionGroup -Location westcentralus
Yönetilen uygulama tanımı kaynağını oluşturun. parametresinde Name
yer tutucuyu demostorageaccount
benzersiz depolama hesabı adınızla değiştirin.
blob
Azure PowerShell veya Azure CLI'dan çalıştırılacak komut, paket .zip dosyasının URL'sini almak için kullanılan bir değişken oluşturur. Bu değişken, yönetilen uygulama tanımını oluşturan komutta kullanılır.
$blob = Get-AzStorageBlob -Container appcontainer -Blob app.zip -Context $ctx
New-AzManagedApplicationDefinition `
-Name "ManagedStorage" `
-Location "westcentralus" `
-ResourceGroupName appDefinitionGroup `
-LockLevel ReadOnly `
-DisplayName "Managed Storage Account" `
-Description "Managed Azure Storage Account" `
-Authorization "${groupID}:$roleid" `
-PackageFileUri $blob.ICloudBlob.StorageUri.PrimaryUri.AbsoluteUri
Komut tamamlandığında, kaynak grubunuzda bir yönetilen uygulamanız olur.
Yukarıdaki örnekte kullanılan parametrelerden bazıları şunlardır:
kaynak grubu: Yönetilen uygulama tanımının oluşturulduğu kaynak grubunun adı.
kilit düzeyi: Yönetilen kaynak grubuna yerleştirilen kilidin türü. Müşterinin bu kaynak grubunda istenmeyen işlemler gerçekleştirmesini engeller.
ReadOnly
Şu anda desteklenen tek kilit düzeyidir.ReadOnly
Belirtildiğinde müşteri yalnızca yönetilen kaynak grubunda bulunan kaynakları okuyabilir. Yönetilen kaynak grubuna erişim izni verilen yayımcı kimlikleri kilitli olmaz.authorizations: Yönetilen kaynak grubuna izin vermek için kullanılan sorumlu kimliğini ve rol tanımı kimliğini açıklar.
- Azure PowerShell:
"${groupid}:$roleid"
veya her değişken"${groupid}:${roleid}"
için küme ayraçları kullanabilirsiniz. Birden çok değeri ayırmak için virgül kullanın:"${groupid1}:$roleid1", "${groupid2}:$roleid2"
. - Azure CLI:
"$groupid:$roleid"
veya PowerShell'de gösterildiği gibi küme ayraçları kullanabilirsiniz. Birden çok değeri ayırmak için boşluk kullanın:"$groupid1:$roleid1" "$groupid2:$roleid2"
.
- Azure PowerShell:
paket dosyası URI'si: Gerekli dosyaları içeren bir.zip paket dosyasının konumu.
Yönetilen uygulama tanımı için kendi depolama alanınızı getirme
Bu bölüm isteğe bağlıdır. Yönetilen uygulama tanımınızı kendi depolama hesabınızda depolayabilirsiniz, böylece konumu ve erişimi yasal gereksinimleriniz için sizin tarafınızdan yönetilebilir. .zip paket dosyasının hizmet kataloğunun yönetilen uygulama tanımı için 120 MB sınırı vardır.
Not
Kendi depolama alanınızı getirin yalnızca yönetilen uygulama tanımının ARM şablonu veya REST API dağıtımlarıyla desteklenir.
Depolama hesabınızı oluşturma
Bir hizmet kataloğuyla kullanmak üzere yönetilen uygulama tanımınızı içerecek bir depolama hesabı oluşturmanız gerekir. Depolama hesabı adı Azure genelinde genel olarak benzersiz olmalı ve uzunluk yalnızca küçük harf ve sayılarla 3-24 karakter uzunluğunda olmalıdır.
Bu örnek adlı byosStorageRG
yeni bir kaynak grubu oluşturur. parametresinde Name
yer tutucuyu definitionstorage
benzersiz depolama hesabı adınızla değiştirin.
New-AzResourceGroup -Name byosStorageRG -Location eastus
New-AzStorageAccount `
-ResourceGroupName byosStorageRG `
-Name "definitionstorage" `
-Location eastus `
-SkuName Standard_LRS `
-Kind StorageV2
Depolama hesabının kaynak kimliğini adlı storageId
değişkende depolamak için aşağıdaki komutu kullanın. Yönetilen uygulama tanımını dağıtırken bu değişkeni kullanacaksınız.
$storageId = (Get-AzStorageAccount -ResourceGroupName byosStorageRG -Name definitionstorage).Id
Depolama hesabınız için rol atamasını ayarlama
Yönetilen uygulama tanımınızın depolama hesabınıza dağıtılabilmesi için önce depolama hesabı kapsamındaKimlik Kaynağı Sağlayıcısı kullanıcısına Katkıda Bulunan rolünü atayın. Bu atama, kimliğin tanım dosyalarını depolama hesabınızın kapsayıcısına yazmasına olanak tanır.
PowerShell'de rol ataması için değişkenleri kullanabilirsiniz. Bu örnek, önceki adımda oluşturduğunuz öğesini kullanır $storageId
ve değişkenini $arpId
oluşturur.
$arpId = (Get-AzADServicePrincipal -SearchString "Appliance Resource Provider").Id
New-AzRoleAssignment -ObjectId $arpId `
-RoleDefinitionName Contributor `
-Scope $storageId
Alet Kaynak Sağlayıcısı, Azure Active Directory kiracınızdaki bir hizmet sorumlusudur. Azure portal, Azure Active Directory>Enterprise uygulamalarına gidip arama filtresini Microsoft Uygulamaları olarak değiştirerek kayıtlı olup olmadığını görebilirsiniz. Alet Kaynak Sağlayıcısı'yı arayın. Bulunamazsa kaynak sağlayıcısını Microsoft.Solutions
kaydedin.
Yönetilen uygulama tanımını ARM şablonuyla dağıtma
Paketlenmiş yönetilen uygulamanızı hizmet kataloğunuzda yeni bir yönetilen uygulama tanımı olarak dağıtmak için aşağıdaki ARM şablonunu kullanın. Tanım dosyaları depolama hesabınızda depolanır ve korunur.
Visual Studio Code açın, azuredeploy.json adlı bir dosya oluşturun ve kaydedin.
Aşağıdaki JSON dosyasını ekleyin ve dosyayı kaydedin.
{
"$schema": "http://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"applicationName": {
"type": "string",
"metadata": {
"description": "Managed Application name."
}
},
"definitionStorageResourceID": {
"type": "string",
"metadata": {
"description": "Storage account's resource ID where you're storing your managed application definition."
}
},
"packageFileUri": {
"type": "string",
"metadata": {
"description": "The URI where the .zip package file is located."
}
}
},
"variables": {
"lockLevel": "None",
"description": "Sample Managed application definition",
"displayName": "Sample Managed application definition",
"managedApplicationDefinitionName": "[parameters('applicationName')]",
"packageFileUri": "[parameters('packageFileUri')]",
"defLocation": "[parameters('definitionStorageResourceID')]"
},
"resources": [
{
"type": "Microsoft.Solutions/applicationDefinitions",
"apiVersion": "2021-07-01",
"name": "[variables('managedApplicationDefinitionName')]",
"location": "[parameters('location')]",
"properties": {
"lockLevel": "[variables('lockLevel')]",
"description": "[variables('description')]",
"displayName": "[variables('displayName')]",
"packageFileUri": "[variables('packageFileUri')]",
"storageAccountId": "[variables('defLocation')]"
}
}
],
"outputs": {}
}
ARM şablonunun özellikleri hakkında daha fazla bilgi için bkz. Microsoft.Solutions/applicationDefinitions. Yönetilen uygulamalar yalnızca ARM şablonu JSON kullanır.
Tanımı dağıtma
byosDefinitionRG adlı bir kaynak grubu oluşturun ve yönetilen uygulama tanımını depolama hesabınıza dağıtın.
New-AzResourceGroup -Name byosDefinitionRG -Location eastus
$storageId
New-AzResourceGroupDeployment `
-ResourceGroupName byosDefinitionRG `
-TemplateFile .\azuredeploy.json
Tanımı dağıtmak için sizden üç parametre istenir.
Parametre | Değer |
---|---|
applicationName |
Yönetilen uygulama tanımınız için bir ad seçin. Bu örnekte sampleManagedAppDefintion komutunu kullanın. |
definitionStorageResourceID |
Depolama hesabınızın kaynak kimliğini girin. Önceki bir adımda değişkeni bu değerle oluşturdunuz storageId . Kaynak kimliğini tırnak içine alma. |
packageFileUri |
.zip paket dosyanızın URI'sini girin. Önceki bir adımda oluşturduğunuz .zippaket dosyası için URI'yi kullanın. Biçimi şeklindedir https://yourStorageAccountName.blob.core.windows.net/appcontainer/app.zip . |
Tanım dosyalarının depolama alanını doğrulama
Dağıtım sırasında şablonun storageAccountId
özelliği depolama hesabınızın kaynak kimliğini kullanır ve büyük/küçük harfe duyarlı adlı applicationdefinitions
yeni bir kapsayıcı oluşturur. Dağıtım sırasında belirttiğiniz .zip paketindeki dosyalar yeni kapsayıcıda depolanır.
Yönetilen uygulama tanım dosyalarının depolama hesabınızın kapsayıcısına kaydedildiğini doğrulamak için aşağıdaki komutları kullanabilirsiniz. parametresinde Name
yer tutucuyu definitionstorage
benzersiz depolama hesabı adınızla değiştirin.
Get-AzStorageAccount -ResourceGroupName byosStorageRG -Name definitionstorage |
Get-AzStorageContainer -Name applicationdefinitions |
Get-AzStorageBlob | Select-Object -Property *
Not
Daha fazla güvenlik için yönetilen uygulamalar tanımı oluşturabilir ve şifrelemenin etkinleştirildiği bir Azure depolama hesabı blobunda depolayabilirsiniz. Tanım içeriği, depolama hesabının şifreleme seçenekleri aracılığıyla şifrelenir. Hizmet kataloğunuzda tanımı yalnızca dosya izinleri olan kullanıcılar görebilir.
Kullanıcıların tanımınızı görebilmesini sağlama
Yönetilen uygulama tanımına eriştiniz ama kuruluşunuzdaki diğer kullanıcıların da erişebildiğinden emin olmak istiyorsunuz. Onlara tanım üzerinde en azından Okuyucu rolü verin. Bu erişim düzeyini abonelikten veya kaynak grubunda devralmış olabilirler. Kimlerin tanıma erişimi olduğunu denetlemek ve kullanıcıları veya grupları eklemek için bkz. Azure portal kullanarak Azure rolleri atama.
Sonraki adımlar
Yönetilen uygulama tanımını yayımladınız. Şimdi bu tanımın bir örneğini nasıl dağıtacağınızı öğrenin.