Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Quickstart: Bring Your Own Storage voor het maken en publiceren van een definitie van een beheerde Azure-toepassing
Deze quickstart biedt een inleiding tot byos (Bring Your Own Storage) voor een door Azure beheerde toepassing. U maakt en publiceert een definitie van een beheerde toepassing in uw servicecatalogus voor leden van uw organisatie. Wanneer u uw eigen opslagaccount gebruikt, kan de definitie van uw beheerde toepassing de limiet van 120 MB van de servicecatalogus overschrijden.
Voer de volgende taken uit om een definitie van een beheerde toepassing te publiceren in uw servicecatalogus:
Maak een Azure Resource Manager-sjabloon (ARM-sjabloon) die de Azure-resources definieert die door de beheerde toepassing zijn geïmplementeerd.
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.
Maak een opslagaccount waarin u de definitie van de beheerde toepassing opslaat.
Implementeer de definitie van de beheerde toepassing in uw eigen opslagaccount, zodat deze beschikbaar is in uw servicecatalogus.
Als de definitie van uw beheerde toepassing kleiner is dan 120 MB en u uw eigen opslagaccount niet wilt gebruiken, gaat u naar quickstart: Een definitie van een beheerde Azure-toepassing maken en publiceren.
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 hebt het volgende nodig om deze quickstart te voltooien:
Een Azure-account met een actief abonnement en machtigingen voor Microsoft Entra-resources, zoals gebruikers, groepen of service-principals. Als u geen account hebt, maakt u een gratis account voordat u begint.
Azure Managed Applications ondersteunt alleen ARM-sjablonen met languageVersion 1.0 en biedt geen ondersteuning voor languageVersion 2.0. Raadpleeg de documentatie voor ARM-sjablonen om te zien welke functies automatisch versie 2.0 inschakelen.
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 van de beheerde toepassing voor het implementeren van een App Service-, App Service-plan en een opslagaccount.
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.json13 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.
JSON
{
"$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]"
}
}
}
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.
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.
Gebruik de volgende opdracht om de URI van het pakketbestand op te slaan in een variabele met de naam packageuri. U gebruikt de waarde van de variabele wanneer u de definitie van de beheerde toepassing implementeert.
De backslash (\) is een regelvervolgteken om de leesbaarheid van de parameters van de opdracht te verbeteren en wordt gebruikt in veel van de Azure CLI-opdrachten. De pkgstgacct variabele bevat de naam van het opslagaccount voor gebruik in andere opdrachten.
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. Ga voor meer informatie naar Een Azure-rol toewijzen voor toegang tot blobgegevens.
Nadat u de rol aan het opslagaccount hebt toegevoegd, duurt het enkele minuten om actief te worden in Azure. Vervolgens kunt u de parameter --auth-mode login in de opdrachten gebruiken om de container te maken en het bestand te uploaden.
Gebruik de volgende opdracht om de URI van het pakketbestand op te slaan in een variabele met de naam packageuri. U gebruikt de waarde van de variabele wanneer u de definitie van de beheerde toepassing implementeert.
BYOS (Bring Your Own Storage) voor de definitie van de beheerde toepassing
U slaat de definitie van uw beheerde toepassing op in uw eigen opslagaccount, zodat de locatie en toegang door u kunnen worden beheerd voor de wettelijke behoeften van uw organisatie. Met uw eigen opslagaccount kunt u een toepassing hebben die de limiet van 120 MB overschrijdt voor de definitie van een beheerde toepassing van een servicecatalogus.
Notitie
BYOS wordt alleen ondersteund met ARM-sjablonen of REST API-implementaties van de definitie van de beheerde toepassing.
Het opslagaccount maken
Maak het opslagaccount voor de definitie van uw beheerde toepassing. 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.
In het volgende voorbeeld wordt een resourcegroep met de naam byosDefinitionStorageGroup gemaakt. Vervang in de opdracht de tijdelijke aanduiding <byosaccountname> , inclusief de punthaken (<>), door de unieke naam van uw opslagaccount.
Nadat u het opslagaccount hebt gemaakt, voegt u de roltoewijzing Opslagblobgegevensbijdrager toe aan het opslagaccountbereik. Wijs toegang toe aan uw Microsoft Entra-gebruikersaccount. U hebt later in het proces toegang nodig tot een stap.
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.
Gebruik de volgende opdracht om de resource-id van het opslagaccount op te slaan in een variabele met de naam byosstorageid. U gebruikt de waarde van de variabele wanneer u de definitie van de beheerde toepassing implementeert.
az group create --name byosDefinitionStorageGroup --location westus
az storage account create \
--name <byosaccountname> \
--resource-group byosDefinitionStorageGroup \
--location westus \
--sku Standard_LRS \
--kind StorageV2 \
--min-tls-version TLS1_2 \
--allow-blob-public-access true \
--allow-shared-key-access true
byosrg=$(az group show --name byosDefinitionStorageGroup --query name --output tsv)
byosstgacct=$(az storage account show --resource-group $byosrg --name <byosaccountname> --query name --output tsv)
Nadat u het opslagaccount hebt gemaakt, voegt u de roltoewijzing Opslagblobgegevensbijdrager toe aan het opslagaccountbereik. Wijs toegang toe aan uw Microsoft Entra-gebruikersaccount. U hebt later in het proces toegang nodig tot een stap.
Gebruik de volgende opdracht om de resource-id van het opslagaccount op te slaan in een variabele met de naam byosstorageid. U gebruikt de waarde van de variabele om de roltoewijzing van het opslagaccount in te stellen en wanneer u de definitie van de beheerde toepassing implementeert.
Azure CLI
byosstorageid=$(az storage account show --resource-group $byosrg --name $byosstgacct --query id --output tsv)
De roltoewijzing voor uw opslagaccount instellen
Voordat u de definitie van uw beheerde toepassing implementeert in uw opslagaccount, wijst u de rol Inzender toe aan de gebruiker van de resourceprovider van het apparaat in het bereik van het opslagaccount. Met deze toewijzing kunnen de definitiebestanden van de identiteit naar de container van uw opslagaccount worden geschreven.
U kunt variabelen gebruiken om de roltoewijzing in te stellen. In dit voorbeeld wordt de $byosstorageid variabele gebruikt die u in de vorige stap hebt gemaakt en maakt u de $arpid variabele.
U kunt variabelen gebruiken om de roltoewijzing in te stellen. In dit voorbeeld wordt de $byosstorageid variabele gebruikt die u in de vorige stap hebt gemaakt en maakt u de $arpid variabele.
Azure CLI
arpid=$(az ad sp list --display-name "Appliance Resource Provider" --query [].id --output tsv)
az role assignment create --assignee $arpid --role "Contributor" --scope $byosstorageid
Als u CLI-opdrachten uitvoert met Git Bash voor Windows, treedt er mogelijk een InvalidSchema fout op vanwege de tekenreeks van de scope parameter. Als u de fout wilt oplossen, voert u de opdracht uit export MSYS_NO_PATHCONV=1 en voert u deze opnieuw uit om de roltoewijzing te maken.
De resourceprovider van het apparaat is een service-principal in uw Microsoft Entra-tenant. Vanuit Azure Portal kunt u controleren of deze is geregistreerd door naar Microsoft Entra ID> te gaan en het zoekfilter te wijzigen in Microsoft-toepassingen.Zoek naar de resourceprovider van het apparaat. Als deze niet wordt gevonden, registreert u de Microsoft.Solutions resourceprovider.
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 de variabele wanneer u de definitie van de beheerde toepassing implementeert.
principalid=$(az ad group show --group <managedAppDemo> --query id --output tsv)
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 de variabele wanneer u de definitie van de beheerde toepassing implementeert.
roleid=$(az role definition list --name Owner --query [].name --output tsv)
De definitie-implementatiesjabloon maken
Gebruik een Bicep-bestand om de definitie van de beheerde toepassing in uw servicecatalogus te implementeren. Na de implementatie worden de definitiebestanden opgeslagen in uw eigen opslagaccount.
Open Visual Studio Code, maak een bestand met de naam deployDefinition.bicep en sla het op.
Voeg de volgende Bicep-code toe en sla het bestand op.
Bicep
param location string = resourceGroup().location
@description('Name of the managed application definition.')
param managedApplicationDefinitionName string
@description('Resource ID for the bring your own storage account where the definition is stored.')
param definitionStorageResourceID string
@description('The URI of the .zip package file.')
param packageFileUri string
@description('Publishers Principal ID that needs permissions to manage resources in the managed resource group.')
param principalId string
@description('Role ID for permissions to the managed resource group.')
param roleId string
var definitionLockLevel = 'ReadOnly'
var definitionDisplayName = 'Sample BYOS managed application'
var definitionDescription = 'Sample BYOS managed application that deploys web resources'
resource managedApplicationDefinition 'Microsoft.Solutions/applicationDefinitions@2021-07-01' = {
name: managedApplicationDefinitionName
location: location
properties: {
lockLevel: definitionLockLevel
description: definitionDescription
displayName: definitionDisplayName
packageFileUri: packageFileUri
storageAccountId: definitionStorageResourceID
authorizations: [
{
principalId: principalId
roleDefinitionId: roleId
}
]
}
}
Met lockLevel de beheerde resourcegroep voorkomt u 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.
Het parameterbestand maken
De implementatiesjabloon van de definitie van de beheerde toepassing heeft invoer nodig voor verschillende parameters. De implementatieopdracht vraagt u om de waarden of u kunt een parameterbestand voor de waarden maken. In dit voorbeeld gebruiken we een parameterbestand om de parameterwaarden door te geven aan de implementatieopdracht.
Maak in Visual Studio Code een nieuw bestand met de naam deployDefinition-parameters.bicepparam en sla het op.
Voeg het volgende toe aan het parameterbestand en sla het op. Vervang vervolgens de <placeholder values> punthaken (<>) door uw waarden.
Bicep
using './deployDefinition.bicep'
param managedApplicationDefinitionName = 'sampleByosManagedApplication'
param definitionStorageResourceID = '<placeholder for you BYOS storage account ID>'
param packageFileUri = '<placeholder for the packageFileUri>'
param principalId = '<placeholder for principalid value>'
param roleId = '<placeholder for roleid value>'
In de volgende tabel worden de parameterwaarden voor de definitie van de beheerde toepassing beschreven.
Kenmerk
Weergegeven als
managedApplicationDefinitionName
Naam van de definitie van de beheerde toepassing. Gebruik voor dit voorbeeld sampleByosManagedApplication.
definitionStorageResourceID
Resource-id voor het opslagaccount waarin de definitie is opgeslagen. Gebruik de waarde van uw byosstorageid variabele.
packageFileUri
Voer de URI in voor het .zip pakketbestand. Gebruik de waarde van uw packageuri variabele.
principalId
De principal-id van uitgevers die machtigingen nodig heeft voor het beheren van resources in de beheerde resourcegroep. Gebruik de waarde van uw principalid variabele.
roleId
Rol-id voor machtigingen voor de beheerde resourcegroep. Bijvoorbeeld Eigenaar, Inzender, Lezer. Gebruik de waarde van uw roleid variabele.
Ga als volgende te werk om uw variabelewaarden op te halen:
Azure PowerShell: Typ $variableName in PowerShell om de waarde van een variabele weer te geven.
Azure CLI: Typ in Bash echo $variableName om de waarde van een variabele weer te geven.
De definitie implementeren
Wanneer u de definitie van de beheerde toepassing implementeert, wordt deze beschikbaar in uw servicecatalogus. Met dit proces worden de resources van de beheerde toepassing niet geïmplementeerd.
Maak een resourcegroep met de naam byosAppDefinitionGroup en implementeer de definitie van de beheerde toepassing in uw opslagaccount.
az group create --name byosAppDefinitionGroup --location westus
az deployment group create \
--resource-group byosAppDefinitionGroup \
--template-file deployDefinition.bicep \
--parameters deployDefinition-parameters.bicepparam \
--name "deployDefinition"
Opslag van definitiebestanden controleren
Tijdens de implementatie gebruikt de eigenschap van storageAccountId de sjabloon de resource-id van uw opslagaccount en maakt u een nieuwe container met de hoofdlettergevoelige naam applicationdefinitions. De bestanden uit het .zip pakket dat u tijdens de implementatie hebt opgegeven, worden opgeslagen in de nieuwe container.
U kunt de volgende opdrachten gebruiken om te controleren of de definitiebestanden van de beheerde toepassing zijn opgeslagen in de container van uw opslagaccount.
az storage blob list \
--container-name applicationdefinitions \
--account-name $byosstgacct \
--auth-mode login \
--query "[].{Name:name}"
Notitie
Voor extra beveiliging kunt u een definitie van beheerde toepassingen maken en opslaan in een Blob van een Azure-opslagaccount waar versleuteling is ingeschakeld. De inhoud van de definitie wordt versleuteld met de versleutelingsopties van het opslagaccount. Alleen gebruikers met machtigingen voor het bestand hebben toegang tot de definitie in uw servicecatalogus.
Beveiliging van opslagaccount bijwerken
Schakel na een geslaagde implementatie de eigenschap gedeelde toegangssleutel uit om de beveiliging van het opslagaccount te verbeteren. Toen het opslagaccount is gemaakt, hebt u een roltoewijzing toegevoegd voor Inzender voor opslagblobgegevens waarmee u toegang krijgt tot de container en blobs zonder opslagsleutels te gebruiken.
Gebruik de volgende opdrachten om de instellingen voor gedeelde toegangssleutels van het opslagaccount te controleren en bij te werken:
az storage account show --resource-group $byosrg --name $byosstgacct --query allowSharedKeyAccess --output table
az storage account update --resource-group $byosrg --name $byosstgacct --allow-shared-key-access false
Zorg ervoor dat gebruikers toegang hebben tot uw definitie
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. Als u wilt controleren wie toegang heeft tot de definitie en gebruikers of groepen wilt toevoegen, gaat u naar Azure-rollen toewijzen met behulp van Azure Portal.
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, byosDefinitionStorageGroup en byosAppDefinitionGroup.
De opdrachtprompt vraagt om bevestiging en retourneert u vervolgens naar de opdrachtprompt terwijl resources worden verwijderd.
Azure CLI
az group delete --resource-group packageStorageGroup --no-wait
az group delete --resource-group byosDefinitionStorageGroup --no-wait
az group delete --resource-group byosAppDefinitionGroup --no-wait
Volgende stappen
U hebt de definitie van de beheerde toepassing gepubliceerd. Nu krijgt u informatie over het implementeren van een exemplaar van deze definitie.
Hierin wordt beschreven hoe u de beheerde toepassing van een servicecatalogus voor een door Azure beheerde toepassing implementeert met behulp van Azure PowerShell, Azure CLI of Azure Portal.
Hierin wordt beschreven hoe u een door Azure beheerde toepassing maakt en publiceert in uw servicecatalogus met behulp van Azure PowerShell, Azure CLI of Azure Portal.
Bouw end-to-end-oplossingen in Microsoft Azure om Azure Functions te maken, web-apps te implementeren en te beheren, oplossingen te ontwikkelen die gebruikmaken van Azure Storage en meer.