Gyorsútmutató: Azure-beli felügyelt alkalmazás definíciójának létrehozása és közzététele
Ez a rövid útmutató bemutatja az Azure Managed Applications használatát. Létrehozhat és közzétehet egy felügyelt alkalmazásdefiníciót, amely a szolgáltatáskatalógusban van tárolva, és a szervezet tagjai számára készült.
Felügyelt alkalmazás szolgáltatáskatalógusban való közzétételéhez hajtsa végre a következő feladatokat:
- Hozzon létre egy Azure Resource Manager-sablont (ARM-sablont), amely meghatározza a felügyelt alkalmazással üzembe helyezendő erőforrásokat.
- Meg kell határoznia a felhasználói felület elemeit a portál számára, amikor üzembe helyezi a felügyelt alkalmazást.
- Hozzon létre egy .zip csomagot, amely tartalmazza a szükséges JSON-fájlokat. A .zip-csomagfájl 120 MB-os korláttal rendelkezik a szolgáltatáskatalógus felügyelt alkalmazásdefiníciójára vonatkozóan.
- Tegye közzé a felügyelt alkalmazásdefiníciót, hogy elérhető legyen a szolgáltatáskatalógusban.
Ha a felügyelt alkalmazásdefiníció több mint 120 MB, vagy ha saját tárfiókját szeretné használni a szervezet megfelelőségi okokból, tekintse meg a rövid útmutatót: Hozzon létre és tegyen közzé egy Azure Managed Application-definíciót saját tárterület használatával.
A Bicep használatával fejleszthet felügyelt alkalmazásdefiníciót, de a definíció azure-ban való közzététele előtt arm-sablon JSON-ra kell konvertálni. További információ : Rövid útmutató: Azure Managed Application-definíció létrehozása és közzététele a Bicep használatával.
A Bicep használatával felügyelt alkalmazásdefiníciót is üzembe helyezhet a szolgáltatáskatalógusból. További információ : Rövid útmutató: Azure Managed Application Definition üzembe helyezése a Bicep használatával.
Előfeltételek
A rövid útmutató végrehajtásához a következő elemekre van szüksége:
- Aktív előfizetéssel és Microsoft Entra-erőforrásokhoz, például felhasználókhoz, csoportokhoz vagy szolgáltatásnevekhez tartozó engedélyekkel rendelkező Azure-fiók. Ha nincs fiókja, a kezdés előtt hozzon létre egy ingyenes fiókot .
- Visual Studio Code a legújabb Azure Resource Manager Tools-bővítménysel. Bicep-fájlok esetén telepítse a Visual Studio Code Bicep-bővítményét.
- Telepítse az Azure PowerShell vagy az Azure CLI legújabb verzióját.
Az ARM-sablon létrehozása
Minden felügyelt alkalmazás definíciója tartalmaz egy mainTemplate.json nevű fájlt. A sablon meghatározza az üzembe helyezendő Azure-erőforrásokat, és nem különbözik a szokásos ARM-sablontól.
Nyissa meg a Visual Studio Code-ot, hozzon létre egy fájlt a mainTemplate.json kis- és nagybetűk megkülönböztetésével, és mentse azt.
Adja hozzá a következő JSON-t, és mentse a fájlt. Meghatározza az alkalmazásHoz tartozó App Service-, App Service-csomag- és tárfiók üzembe helyezéséhez szükséges erőforrásokat. Ez a tárfiók nem a felügyelt alkalmazásdefiníció tárolására szolgál.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"appServicePlanName": {
"type": "string",
"maxLength": 40,
"metadata": {
"description": "App Service plan name."
}
},
"appServiceNamePrefix": {
"type": "string",
"maxLength": 47,
"metadata": {
"description": "App Service name prefix."
}
},
"storageAccountNamePrefix": {
"type": "string",
"maxLength": 11,
"metadata": {
"description": "Storage account name prefix."
}
},
"storageAccountType": {
"type": "string",
"allowedValues": [
"Premium_LRS",
"Standard_LRS",
"Standard_GRS"
],
"metadata": {
"description": "Storage account type allowed values"
}
}
},
"variables": {
"appServicePlanSku": "F1",
"appServicePlanCapacity": 1,
"appServiceName": "[format('{0}{1}', parameters('appServiceNamePrefix'), uniqueString(resourceGroup().id))]",
"storageAccountName": "[format('{0}{1}', parameters('storageAccountNamePrefix'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2022-03-01",
"name": "[parameters('appServicePlanName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[variables('appServicePlanSku')]",
"capacity": "[variables('appServicePlanCapacity')]"
}
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2022-03-01",
"name": "[variables('appServiceName')]",
"location": "[parameters('location')]",
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
"httpsOnly": true,
"siteConfig": {
"appSettings": [
{
"name": "AppServiceStorageConnectionString",
"value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};Key={2}', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2022-09-01').keys[0].value)]"
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
]
},
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
],
"outputs": {
"appServicePlan": {
"type": "string",
"value": "[parameters('appServicePlanName')]"
},
"appServiceApp": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Web/sites', variables('appServiceName')), '2022-03-01').defaultHostName]"
},
"storageAccount": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2022-09-01').primaryEndpoints.blob]"
}
}
}
A portál élményének meghatározása
Közzétevőként ön határozza meg a portál felületét a felügyelt alkalmazás létrehozásához. A createUiDefinition.json fájl létrehozza a portál felhasználói felületét. Ön határozza meg, hogy a felhasználók hogyan adnak bemenetet az egyes paraméterekhez vezérlőelemek, például legördülő listák és szövegdobozok használatával.
Ebben a példában a felhasználói felület kéri, hogy adja meg az App Service névelőtagját, az App Service-csomag nevét, a tárfiók előtagját és a tárfiók típusát. Az üzembe helyezés során a mainTemplate.json változói a uniqueString
függvény használatával fűznek hozzá egy 13 karakteres sztringet a névelőtagokhoz, így a nevek globálisan egyediek az Azure-ban.
Nyissa meg a Visual Studio Code-ot, hozzon létre egy fájlt a createUiDefinition.json kis- és nagybetűk megkülönböztetésével, és mentse azt.
Adja hozzá a következő JSON-kódot a fájlhoz, és mentse.
{
"$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": "webAppSettings",
"label": "Web App settings",
"subLabel": {
"preValidation": "Configure the web app settings",
"postValidation": "Completed"
},
"elements": [
{
"name": "appServicePlanName",
"type": "Microsoft.Common.TextBox",
"label": "App Service plan name",
"placeholder": "App Service plan name",
"defaultValue": "",
"toolTip": "Use alphanumeric characters or hyphens with a maximum of 40 characters.",
"constraints": {
"required": true,
"regex": "^[a-z0-9A-Z-]{1,40}$",
"validationMessage": "Only alphanumeric characters or hyphens are allowed, with a maximum of 40 characters."
},
"visible": true
},
{
"name": "appServiceName",
"type": "Microsoft.Common.TextBox",
"label": "App Service name prefix",
"placeholder": "App Service name prefix",
"defaultValue": "",
"toolTip": "Use alphanumeric characters or hyphens with minimum of 2 characters and maximum of 47 characters.",
"constraints": {
"required": true,
"regex": "^[a-z0-9A-Z-]{2,47}$",
"validationMessage": "Only alphanumeric characters or hyphens are allowed, with a minimum of 2 characters and maximum of 47 characters."
},
"visible": true
}
]
},
{
"name": "storageConfig",
"label": "Storage settings",
"subLabel": {
"preValidation": "Configure the storage settings",
"postValidation": "Completed"
},
"elements": [
{
"name": "storageAccounts",
"type": "Microsoft.Storage.MultiStorageAccountCombo",
"label": {
"prefix": "Storage account name prefix",
"type": "Storage account type"
},
"toolTip": {
"prefix": "Enter maximum of 11 lowercase letters or numbers.",
"type": "Available choices are Standard_LRS, Standard_GRS, and Premium_LRS."
},
"defaultValue": {
"type": "Standard_LRS"
},
"constraints": {
"allowedTypes": [
"Premium_LRS",
"Standard_LRS",
"Standard_GRS"
]
},
"visible": true
}
]
}
],
"outputs": {
"location": "[location()]",
"appServicePlanName": "[steps('webAppSettings').appServicePlanName]",
"appServiceNamePrefix": "[steps('webAppSettings').appServiceName]",
"storageAccountNamePrefix": "[steps('storageConfig').storageAccounts.prefix]",
"storageAccountType": "[steps('storageConfig').storageAccounts.type]"
}
}
}
További információ: Ismerkedés a CreateUiDefinition szolgáltatással.
A fájlok becsomagolása
Adja hozzá a két fájlt egy app.zip nevű csomagfájlhoz. A két fájlnak a .zip fájl gyökérszintjén kell lennie. Ha a fájlok egy mappában találhatók, a felügyelt alkalmazásdefiníció létrehozásakor hibaüzenet jelenik meg, amely szerint a szükséges fájlok nincsenek jelen.
Töltse fel az app.zip fájlt egy Azure Storage-fiókba, hogy a felügyelt alkalmazás definíciójának üzembe helyezésekor használhassa. A tárfiók nevének globálisan egyedinek kell lennie az Azure-ban, a hossznak pedig 3–24 karakternek kell lennie, csak kisbetűkkel és számokkal. A parancsban cserélje le a helyőrzőt <demostorageaccount>
, beleértve a szögletes zárójeleket (<>
) az egyedi tárfiók nevére.
A Visual Studio Code-ban nyisson meg egy új PowerShell-terminált, és jelentkezzen be az Azure-előfizetésbe.
Connect-AzAccount
A parancs megnyitja az alapértelmezett böngészőt, és kéri, hogy jelentkezzen be az Azure-ba. További információ: Bejelentkezés az Azure PowerShell-lel.
New-AzResourceGroup -Name packageStorageGroup -Location westus3
$storageAccount = New-AzStorageAccount `
-ResourceGroupName packageStorageGroup `
-Name "<demostorageaccount>" `
-Location westus3 `
-SkuName Standard_LRS `
-Kind StorageV2
$ctx = $storageAccount.Context
New-AzStorageContainer -Name appcontainer -Context $ctx -Permission blob
Set-AzStorageBlobContent `
-File "app.zip" `
-Container appcontainer `
-Blob "app.zip" `
-Context $ctx
A felügyelt alkalmazás definíciójának létrehozása
Ebben a szakaszban lekérheti az identitásadatokat a Microsoft Entra-azonosítóból, létrehoz egy erőforráscsoportot, és üzembe helyezi a felügyelt alkalmazásdefiníciót.
Csoportazonosító és szerepkördefiníció azonosítójának lekérése
A következő lépés egy felhasználó, biztonsági csoport vagy alkalmazás kiválasztása az ügyfél erőforrásainak kezelésére. Ez az identitás a hozzárendelt szerepkörnek megfelelően rendelkezik engedélyekkel a felügyelt erőforráscsoporthoz. A szerepkör lehet bármilyen beépített Azure-szerepkör, például tulajdonos vagy közreműködő.
Ez a példa egy biztonsági csoportot használ, és a Microsoft Entra-fióknak a csoport tagjának kell lennie. A csoport objektumazonosítójának lekéréséhez cserélje le a helyőrzőt <managedAppDemo>
, beleértve a szögletes zárójeleket (<>
) a csoport nevére. A változó értékét a felügyelt alkalmazásdefiníció üzembe helyezésekor használja.
Új Microsoft Entra-csoport létrehozásához lépjen a Microsoft Entra-csoportok és csoporttagság kezelése elemre.
$principalid=(Get-AzADGroup -DisplayName <managedAppDemo>).Id
Ezután szerezze be annak az Azure-beli beépített szerepkörnek a szerepkördefiníciós azonosítóját, amelyet hozzáférést szeretne biztosítani a felhasználónak, csoportnak vagy alkalmazásnak. A változó értékét a felügyelt alkalmazásdefiníció üzembe helyezésekor használja.
$roleid=(Get-AzRoleDefinition -Name Owner).Id
A felügyelt alkalmazás definíciójának közzététele
Hozzon létre egy erőforráscsoportot a felügyelt alkalmazás definíciójához.
New-AzResourceGroup -Name appDefinitionGroup -Location westus3
A blob
parancs létrehoz egy változót a csomag .zip fájljának URL-címének tárolásához. Ezt a változót a felügyelt alkalmazásdefiníciót létrehozó parancs használja.
$blob = Get-AzStorageBlob -Container appcontainer -Blob app.zip -Context $ctx
New-AzManagedApplicationDefinition `
-Name "sampleManagedApplication" `
-Location "westus3" `
-ResourceGroupName appDefinitionGroup `
-LockLevel ReadOnly `
-DisplayName "Sample managed application" `
-Description "Sample managed application that deploys web resources" `
-Authorization "${principalid}:$roleid" `
-PackageFileUri $blob.ICloudBlob.StorageUri.PrimaryUri.AbsoluteUri
A parancs befejeződésekor egy felügyeltalkalmazás-definíció található az erőforráscsoportban.
Íme néhány az előző példában használt paraméterek közül:
ResourceGroupName
: Annak az erőforráscsoportnak a neve, amelyben a felügyelt alkalmazásdefiníció létrejön.LockLevel
: AlockLevel
felügyelt erőforráscsoportban az ügyfél nem kívánt műveleteket hajt végre ezen az erőforráscsoporton.ReadOnly
Jelenleg ez az egyetlen támogatott zárolási szint.ReadOnly
megadja, hogy az ügyfél csak a felügyelt erőforráscsoportban található erőforrásokat olvassa be. A felügyelt erőforráscsoporthoz hozzáférést biztosító közzétevői identitások mentesülnek a zárolási szint alól.Authorization
: A felügyelt erőforráscsoport engedélyének megadásához használt egyszerű azonosítót és szerepkördefiníció-azonosítót ismerteti."${principalid}:$roleid"
vagy használhat kapcsos zárójeleket az egyes változókhoz"${principalid}:${roleid}"
.- Több érték elválasztásához használjon vesszőt:
"${principalid1}:$roleid1", "${principalid2}:$roleid2"
.
PackageFileUri
: A szükséges fájlokat tartalmazó .zip-csomagfájl helye.
Győződjön meg arról, hogy a definíció a felhasználók számára látható
Ön hozzáfér a felügyelt alkalmazás definíciójához, azonban gondoskodnia kell róla, hogy a vállalat más felhasználói is hozzáférjenek. Engedélyezzen számukra legalább Olvasó szerepkört a definícióhoz. Előfordulhat, hogy ezt a hozzáférési szintet már megörökölték az előfizetéstől vagy az erőforráscsoporttól. Annak ellenőrzéséhez, hogy kinek van hozzáférése a definícióhoz, és felhasználókat vagy csoportokat vehet fel, olvassa el az Azure-szerepkörök hozzárendelése az Azure Portalon című témakört.
Clean up resources
Ha telepíteni szeretné a definíciót, folytassa a következő lépésekkel , amelyek a cikkre mutató hivatkozásokat tartalmaznak a definíció üzembe helyezéséhez.
Ha végzett a felügyelt alkalmazás definíciójával, törölheti a packageStorageGroup és az appDefinitionGroup nevű erőforráscsoportokat.
A parancssor kéri, hogy erősítse meg, hogy el szeretné távolítani az erőforráscsoportot.
Remove-AzResourceGroup -Name packageStorageGroup
Remove-AzResourceGroup -Name appDefinitionGroup
Következő lépések
Sikeresen közzétette a felügyelt alkalmazás definícióját. A következő lépés a definíció egy példányának üzembe helyezésének elsajátítása.