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:

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".
  • 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ı byosStorageRGyeni 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ı storageIddeğ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.Solutionskaydedin.

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ı applicationdefinitionsyeni 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.