Delen via


Snelstart: Een definitie van een door Azure beheerde toepassing publiceren

In deze quickstart vindt u een inleiding tot het werken met Azure Managed Applications. U maakt en publiceert een definitie van een beheerde toepassing die is opgeslagen in uw servicecatalogus en is bedoeld voor leden van uw organisatie.

Voer de volgende taken uit om een beheerde toepassing te publiceren in uw servicecatalogus:

  • Maak een Azure Resource Manager-sjabloon (ARM-sjabloon) die de resources definieert die worden geïmplementeerd met de beheerde toepassing.
  • De elementen van de gebruikersinterface voor de portal definiëren bij het implementeren van de beheerde toepassing.
  • Maak een .zip-pakket met de vereiste JSON-bestanden. Het .zip-pakketbestand heeft een limiet van 120 MB voor de definitie van een beheerde toepassing van een servicecatalogus.
  • Publiceer de definitie van de beheerde toepassing zodat deze beschikbaar is in uw servicecatalogus.

Als de definitie van uw beheerde toepassing meer dan 120 MB is of als u uw eigen opslagaccount wilt gebruiken om de nalevingsredenen van uw organisatie, gaat u naar quickstart: Bring your own storage to create and publish an Azure Managed Application definition.

U kunt Bicep gebruiken om een definitie van een beheerde toepassing te ontwikkelen, maar deze moet worden geconverteerd naar ARM-sjabloon JSON voordat u de definitie in Azure kunt publiceren. Ga voor meer informatie naar Quickstart: Bicep gebruiken om een definitie van een door Azure beheerde toepassing te maken en te publiceren.

U kunt ook Bicep een definitie van een beheerde toepassing implementeren vanuit uw servicecatalogus. Ga voor meer informatie naar Quickstart: Bicep gebruiken om een definitie van een beheerde Azure-toepassing te implementeren.

Vereisten

U hebt het volgende nodig om deze quickstart te voltooien:

Het ARM-sjabloon maken

De definitie van een beheerde toepassing bevat altijd een bestand met de naam mainTemplate.json. De sjabloon definieert de Azure-resources die moeten worden geïmplementeerd en verschilt niet van een gewone ARM-sjabloon.

Open Visual Studio Code, maak een bestand met de hoofdlettergevoelige naam mainTemplate.json en sla het op.

Voeg de volgende JSON toe en sla het bestand op. Hiermee definieert u de resources voor het implementeren van een App Service- en App Service-plan. De sjabloon maakt gebruik van het App Service Basic-abonnement (B1) met kosten voor betalen per gebruik. Zie Azure-app Service op Linux-prijzen voor meer informatie.

{
  "$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."
      }
    }
  },
  "variables": {
    "appServicePlanSku": "B1",
    "appServicePlanCapacity": 1,
    "appServiceName": "[format('{0}{1}', parameters('appServiceNamePrefix'), uniqueString(resourceGroup().id))]",
    "linuxFxVersion": "DOTNETCORE|8.0"
  },
  "resources": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2023-01-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[variables('appServicePlanSku')]",
        "capacity": "[variables('appServicePlanCapacity')]"
      },
      "kind": "linux",
      "properties": {
        "zoneRedundant": false,
        "reserved": true
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2023-01-01",
      "name": "[variables('appServiceName')]",
      "location": "[parameters('location')]",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "httpsOnly": true,
        "redundancyMode": "None",
        "siteConfig": {
          "linuxFxVersion": "[variables('linuxFxVersion')]",
          "minTlsVersion": "1.2",
          "ftpsState": "Disabled"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]"
      ]
    }
  ],
  "outputs": {
    "appServicePlan": {
      "type": "string",
      "value": "[parameters('appServicePlanName')]"
    },
    "appServiceApp": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.Web/sites', variables('appServiceName')), '2023-01-01').defaultHostName]"
    }
  }
}

Uw portalervaring definiëren

Als uitgever definieert u de portalervaring voor het maken van de beheerde toepassing. Het createUiDefinition.json-bestand genereert de gebruikersinterface van de portal. U definieert hoe gebruikers invoer bieden voor elke parameter met behulp van besturingselementen zoals vervolgkeuzelijsten en tekstvakken.

In dit voorbeeld vraagt de gebruikersinterface u om het voorvoegsel van de App Service-naam en de naam van het App Service-plan in te voeren. Tijdens de implementatie van mainTemplate.json de variabelen de appServiceName uniqueString functie gebruiken om een tekenreeks van 13 tekens toe te voegen aan het naamvoorvoegsel, zodat de naam wereldwijd uniek is in Azure.

Open Visual Studio Code, maak een bestand met de hoofdlettergevoelige naam createUiDefinition.json en sla het op.

Voeg de volgende JSON-code toe aan het bestand en sla deze op.

{
  "$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
          }
        ]
      }
    ],
    "outputs": {
      "location": "[location()]",
      "appServicePlanName": "[steps('webAppSettings').appServicePlanName]",
      "appServiceNamePrefix": "[steps('webAppSettings').appServiceName]"
    }
  }
}

Zie Aan de slag met CreateUiDefinition voor meer informatie.

De bestanden verpakken

Voeg de twee bestanden toe aan een pakketbestand met de naam app.zip. De twee bestanden moeten zich in de hoofdmap van het .zip-bestand bevinden. Als de bestanden zich in een map bevinden en u de definitie van de beheerde toepassing maakt, krijgt u een foutmelding waarin wordt aangegeven dat de vereiste bestanden niet aanwezig zijn.

Upload app.zip naar een Azure-opslagaccount, zodat u dit kunt gebruiken wanneer u de definitie van de beheerde toepassing implementeert. De naam van het opslagaccount moet globaal uniek zijn in Azure en de lengte moet 3-24 tekens zijn met alleen kleine letters en cijfers. Vervang in de opdracht de tijdelijke aanduiding <pkgstorageaccountname> , inclusief de punthaken (<>), door de unieke naam van uw opslagaccount.

Open in Visual Studio Code een nieuwe PowerShell-terminal en meld u aan bij uw Azure-abonnement.

Connect-AzAccount

Met de opdracht opent u uw standaardbrowser en wordt u gevraagd u aan te melden bij Azure. Ga naar Aanmelden met Azure PowerShell voor meer informatie.

New-AzResourceGroup -Name packageStorageGroup -Location westus

$pkgstorageparms = @{
  ResourceGroupName = "packageStorageGroup"
  Name = "<pkgstorageaccountname>"
  Location = "westus"
  SkuName = "Standard_LRS"
  Kind = "StorageV2"
  MinimumTlsVersion = "TLS1_2"
  AllowBlobPublicAccess = $true
  AllowSharedKeyAccess = $false
}

$pkgstorageaccount = New-AzStorageAccount @pkgstorageparms

De $pkgstorageparms variabele maakt gebruik van PowerShell-splatting om de leesbaarheid te verbeteren voor de parameterwaarden die in de opdracht worden gebruikt om het nieuwe opslagaccount te maken. Splatting wordt gebruikt in andere PowerShell-opdrachten die meerdere parameterwaarden gebruiken.

Nadat u het opslagaccount hebt gemaakt, voegt u de roltoewijzing Opslagblobgegevensbijdrager toe aan het opslagaccountbereik. Wijs toegang toe aan uw Microsoft Entra-gebruikersaccount. Afhankelijk van uw toegangsniveau in Azure hebt u mogelijk andere machtigingen nodig die zijn toegewezen door uw beheerder. Zie Een Azure-rol toewijzen voor toegang tot blobgegevens en Azure-rollen toewijzen met behulp van Azure Portal voor meer informatie.

Nadat u de rol aan het opslagaccount hebt toegevoegd, duurt het enkele minuten om actief te worden in Azure. Vervolgens kunt u de context maken die nodig is om de container te maken en het bestand te uploaden.

$pkgstoragecontext = New-AzStorageContext -StorageAccountName $pkgstorageaccount.StorageAccountName -UseConnectedAccount

New-AzStorageContainer -Name appcontainer -Context $pkgstoragecontext -Permission blob

$blobparms = @{
  File = "app.zip"
  Container = "appcontainer"
  Blob = "app.zip"
  Context = $pkgstoragecontext
}

Set-AzStorageBlobContent @blobparms

De definitie van de beheerde toepassing maken

In deze sectie haalt u identiteitsgegevens op uit Microsoft Entra-id, maakt u een resourcegroep en implementeert u de definitie van de beheerde toepassing.

Groeps-id en roldefinitie-id ophalen

De volgende stap bestaat uit het selecteren van een gebruiker, beveiligingsgroep of toepassing voor het beheren van de resources voor de klant. Deze identiteit heeft machtigingen voor de beheerde resourcegroep op basis van de toegewezen rol. De rol kan elke ingebouwde rol van op rollen gebaseerd toegangsbeheer (RBAC) zijn, zoals Eigenaar of Inzender.

In dit voorbeeld wordt een beveiligingsgroep gebruikt en uw Microsoft Entra-account moet lid zijn van de groep. Als u de object-id van de groep wilt ophalen, vervangt u de tijdelijke aanduiding <managedAppDemo> inclusief de punthaken (<>), door de naam van de groep. U gebruikt de waarde van deze variabele wanneer u de definitie van de beheerde toepassing implementeert.

Als u een nieuwe Microsoft Entra-groep wilt maken, gaat u naar Microsoft Entra-groepen en groepslidmaatschap beheren.

$principalid=(Get-AzADGroup -DisplayName <managedAppDemo>).Id

Haal vervolgens de roldefinitie-id op van de ingebouwde Azure-rol die u toegang wilt verlenen tot de gebruiker, groep of toepassing. U gebruikt de waarde van deze variabele wanneer u de definitie van de beheerde toepassing implementeert.

$roleid=(Get-AzRoleDefinition -Name Owner).Id

De definitie van de beheerde toepassing publiceren

Maak een resourcegroep voor de definitie van uw beheerde toepassing.

New-AzResourceGroup -Name appDefinitionGroup -Location westus

Met blob de opdracht maakt u een variabele voor het opslaan van de URL voor het pakket .zip bestand. Deze variabele wordt gebruikt in de opdracht waarmee de definitie van de beheerde toepassing wordt gemaakt.

$blob = Get-AzStorageBlob -Container appcontainer -Blob app.zip -Context $pkgstoragecontext

$publishparms = @{
  Name = "sampleManagedApplication"
  Location = "westus"
  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
}

New-AzManagedApplicationDefinition @publishparms

Wanneer de opdracht is voltooid, hebt u de definitie van een beheerde toepassing in de resourcegroep.

Enkele parameters die in het voorgaande voorbeeld worden gebruikt, zijn:

  • ResourceGroupName: De naam van de resourcegroep waarin de definitie van de beheerde toepassing wordt gemaakt.
  • LockLevel: De lockLevel beheerde resourcegroep voorkomt dat de klant ongewenste bewerkingen op deze resourcegroep uitvoert. ReadOnly Momenteel is dit het enige ondersteunde vergrendelingsniveau. ReadOnly geeft aan dat de klant alleen de resources kan lezen die aanwezig zijn in de beheerde resourcegroep. De uitgeversidentiteiten die toegang krijgen tot de beheerde resourcegroep, zijn uitgesloten van het vergrendelingsniveau.
  • Authorization: Beschrijft de principal-id en de roldefinitie-id die worden gebruikt voor het verlenen van machtigingen aan de beheerde resourcegroep.
    • "${principalid}:$roleid" of u kunt accolades gebruiken voor elke variabele "${principalid}:${roleid}".
    • Gebruik een komma om meerdere waarden te scheiden: "${principalid1}:$roleid1", "${principalid2}:$roleid2".
  • PackageFileUri: De locatie van een .zip pakketbestand dat de vereiste bestanden bevat.

Ervoor zorgen dat gebruikers de definitie kunnen zien

U hebt toegang tot de definitie van de beheerde toepassing, maar u wilt controleren of andere gebruikers in uw organisatie hiertoe toegang hebben. Verleen hun minimaal de rol van Lezer voor de definitie. Mogelijk hebben ze dit toegangsniveau overgenomen van het abonnement of de resourcegroep. Zie Azure-rollen toewijzen met behulp van Azure Portal om te controleren wie toegang heeft tot de definitie en gebruikers of groepen toe te voegen.

Resources opschonen

Als u de definitie gaat implementeren, gaat u verder met de sectie Volgende stappen die is gekoppeld aan het artikel om de definitie te implementeren.

Als u klaar bent met de definitie van de beheerde toepassing, kunt u de resourcegroepen verwijderen die u hebt gemaakt met de naam packageStorageGroup en appDefinitionGroup.

Met de opdracht wordt u gevraagd om te bevestigen dat u de resourcegroep wilt verwijderen.

Remove-AzResourceGroup -Name packageStorageGroup

Remove-AzResourceGroup -Name appDefinitionGroup

Volgende stappen

U hebt de definitie van de beheerde toepassing gepubliceerd. De volgende stap is om te leren hoe u een exemplaar van die definitie implementeert.