Door Azure beheerde toepassing met beheerde identiteit
Notitie
Ondersteuning voor beheerde identiteiten voor beheerde toepassingen is momenteel beschikbaar als preview-versie. Gebruik de API-versie 2018-09-01-preview om beheerde identiteit te gebruiken.
Meer informatie over het configureren van een beheerde toepassing voor het bevatten van een beheerde identiteit. Beheerde identiteit kan worden gebruikt om de klant toe te staan de beheerde toepassing toegang te verlenen tot aanvullende bestaande resources. De identiteit wordt beheerd door het Azure-platform en vereist niet dat u geheimen inrichten of roteren. Zie Beheerde identiteiten voor Azure-resources voor meer Azure Active Directory identiteiten in azure-resources (AAD).
Aan uw toepassing kunnen twee typen identiteiten worden verleend:
- Een door het systeem toegewezen identiteit is gekoppeld aan uw toepassing en wordt verwijderd als uw app wordt verwijderd. Een app kan slechts één door het systeem toegewezen identiteit hebben.
- Een door de gebruiker toegewezen identiteit is een zelfstandige Azure-resource die kan worden toegewezen aan uw app. Een app kan meerdere door de gebruiker toegewezen identiteiten hebben.
Beheerde identiteit gebruiken
Beheerde identiteit maakt veel scenario's mogelijk voor beheerde toepassingen. Dit zijn enkele veelvoorkomende scenario's die kunnen worden opgelost:
- Een beheerde toepassing implementeren die is gekoppeld aan bestaande Azure-resources. Een voorbeeld hiervan is het implementeren van een virtuele Azure-machine (VM) in de beheerde toepassing die is gekoppeld aan een bestaande netwerkinterface.
- De beheerde toepassing en uitgever toegang verlenen tot Azure-resources buiten de beheerde resourcegroep.
- Het bieden van een operationele identiteit van beheerde toepassingen voor activiteitenlogboek en andere services in Azure.
Beheerde identiteit toevoegen
Voor het maken van een beheerde toepassing met een beheerde identiteit moet een extra eigenschap worden ingesteld voor de Azure-resource. In het volgende voorbeeld ziet u een voorbeeld van een identiteits-eigenschap:
{
"identity": {
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.ManagedIdentity/userassignedidentites/myuserassignedidentity": {}
}
}
Er zijn twee gebruikelijke manieren om een beheerde toepassing met identiteit te maken:CreateUIDefinition.js op en Azure Resource Manager gebruiken. Voor eenvoudige scenario's met één create moet CreateUIDefinition worden gebruikt om beheerde identiteit in teschakelen, omdat het een rijkere ervaring biedt. Wanneer u echter te maken hebt met geavanceerde of complexe systemen waarvoor geautomatiseerde of meerdere implementaties van beheerde toepassingen zijn vereist, kunnen sjablonen worden gebruikt.
CreateUIDefinition gebruiken
Een beheerde toepassing kan worden geconfigureerd met beheerde identiteit via de CreateUIDefinition.jsop. In de sectie outputs kande sleutel worden gebruikt om de identiteits-eigenschap van de beheerde toepassingssjabloon managedIdentity te overschrijven. Met het voorbeeld wordt een door het systeem toegewezen identiteit ingeschakeld voor de beheerde toepassing. Complexere identiteitsobjecten kunnen worden gevormd met behulp van CreateUIDefinition-elementen om de consument om invoer te vragen. Deze invoer kan worden gebruikt voor het maken van beheerde toepassingen met een door de gebruiker toegewezen identiteit.
"outputs": {
"managedIdentity": { "Type": "SystemAssigned" }
}
Wanneer gebruikt u CreateUIDefinition voor beheerde identiteit?
Hieronder vindt u enkele aanbevelingen voor het gebruik van CreateUIDefinition voor het inschakelen van beheerde identiteit in beheerde toepassingen.
- Het maken van de beheerde toepassing gaat via Azure Portal of marketplace.
- Voor de beheerde identiteit is complexe invoer van consumenten vereist.
- De beheerde identiteit is nodig bij het maken van de beheerde toepassing.
CreateUIDefinition-besturingselement voor beheerde identiteit
CreateUIDefinition biedt ondersteuning voor een ingebouwd beheerd identiteitsbeheer.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.0.1-preview",
"parameters": {
"basics": [],
"steps": [
{
"name": "applicationSettings",
"label": "Application Settings",
"subLabel": {
"preValidation": "Configure your application settings",
"postValidation": "Done"
},
"bladeTitle": "Application Settings",
"elements": [
{
"name": "appName",
"type": "Microsoft.Common.TextBox",
"label": "Managed application Name",
"toolTip": "Managed application instance name",
"visible": true
},
{
"name": "appIdentity",
"type": "Microsoft.ManagedIdentity.IdentitySelector",
"label": "Managed Identity Configuration",
"toolTip": {
"systemAssignedIdentity": "Enable system assigned identity to grant the managed application access to additional existing resources.",
"userAssignedIdentity": "Add user assigned identities to grant the managed application access to additional existing resources."
},
"defaultValue": {
"systemAssignedIdentity": "Off"
},
"options": {
"hideSystemAssignedIdentity": false,
"hideUserAssignedIdentity": false,
"readOnlySystemAssignedIdentity": false
},
"visible": true
}
]
}
],
"outputs": {
"applicationResourceName": "[steps('applicationSettings').appName]",
"location": "[location()]",
"managedIdentity": "[steps('applicationSettings').appIdentity]"
}
}
}

Azure Resource Manager-sjablonen gebruiken
Notitie
Door Marketplace beheerde toepassingssjablonen worden automatisch gegenereerd voor klanten die de Azure Portal maken.
Voor deze scenario's managedIdentity moet de uitvoersleutel op de CreateUIDefinition worden gebruikt om de identiteit in te stellen.
De beheerde identiteit kan ook worden ingeschakeld via Azure Resource Manager sjablonen. Met het voorbeeld wordt een door het systeem toegewezen identiteit ingeschakeld voor de beheerde toepassing. Complexere identiteitsobjecten kunnen worden gevormd met behulp Azure Resource Manager sjabloonparameters om invoer te leveren. Deze invoer kan worden gebruikt voor het maken van beheerde toepassingen met een door de gebruiker toegewezen identiteit.
Wanneer gebruikt u Azure Resource Manager beheerde identiteit?
Hieronder vindt u enkele aanbevelingen voor het gebruik van Azure Resource Manager voor het inschakelen van beheerde identiteit in beheerde toepassingen.
- Beheerde toepassingen kunnen programmatisch worden geïmplementeerd op basis van een sjabloon.
- Aangepaste roltoewijzingen voor de beheerde identiteit zijn nodig voor het inrichten van de beheerde toepassing.
- De beheerde toepassing heeft de stroom voor het maken Azure Portal marketplace niet nodig.
Door systeem toegewezen sjabloon
Een eenvoudige Azure Resource Manager die een beheerde toepassing implementeert met een door het systeem toegewezen identiteit.
"resources": [
{
"type": "Microsoft.Solutions/applications",
"name": "[parameters('applicationName')]",
"apiVersion": "2018-09-01-preview",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"ManagedResourceGroupId": "[parameters('managedByResourceGroupId')]",
"parameters": { }
}
}
]
Door de gebruiker toegewezen sjabloon
Een eenvoudige Azure Resource Manager die een beheerde toepassing implementeert met een door de gebruiker toegewezen identiteit.
"resources": [
{
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"name": "[parameters('managedIdentityName')]",
"apiVersion": "2018-11-30",
"location": "[parameters('location')]"
},
{
"type": "Microsoft.Solutions/applications",
"name": "[parameters('applicationName')]",
"apiVersion": "2018-09-01-preview",
"location": "[parameters('location')]",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',parameters('managedIdentityName'))]": {}
}
},
"properties": {
"ManagedResourceGroupId": "[parameters('managedByResourceGroupId')]",
"parameters": { }
}
}
]
Toegang verlenen tot Azure-resources
Zodra aan een beheerde toepassing een identiteit is verleend, kan deze toegang krijgen tot bestaande Azure-resources. Dit proces kan worden uitgevoerd via de interface Toegangsbeheer (IAM) in de Azure Portal. De naam van de beheerde toepassing of door de gebruiker toegewezen identiteit kan worden doorzocht om een roltoewijzing toe te voegen.

Bestaande Azure-resources koppelen
Notitie
Een door de gebruiker toegewezen identiteit moet worden geconfigureerd voordat de beheerde toepassing wordt geïmplementeerd. Bovendien wordt de gekoppelde resource-implementatie van beheerde toepassingen alleen ondersteund voor het marketplace-type.
Beheerde identiteit kan ook worden gebruikt voor het implementeren van een beheerde toepassing die tijdens de implementatie toegang tot bestaande resources vereist. Wanneer de beheerde toepassing wordt ingericht door de klant, kunnen door de gebruiker toegewezen identiteiten worden toegevoegd om extra autorisaties te bieden voor de mainTemplate-implementatie.
CreateUIDefinition maken met een gekoppelde resource
Wanneer u de implementatie van de beheerde toepassing koppelt aan bestaande resources, moeten zowel de bestaande Azure-resource als een door de gebruiker toegewezen identiteit met de toepasselijke roltoewijzing voor die resource worden opgegeven.
Een voorbeeld van CreateUIDefinition dat twee invoergegevens vereist: een resource-id van de netwerkinterface en een resource-id voor een door de gebruiker toegewezen identiteit.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Compute.MultiVm",
"version": "0.1.2-preview",
"parameters": {
"basics": [
{}
],
"steps": [
{
"name": "managedApplicationSetting",
"label": "Managed Application Settings",
"subLabel": {
"preValidation": "Managed Application Settings",
"postValidation": "Done"
},
"bladeTitle": "Managed Application Settings",
"elements": [
{
"name": "networkInterfaceId",
"type": "Microsoft.Common.TextBox",
"label": "network interface resource id",
"defaultValue": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Network/networkInterfaces/existingnetworkinterface",
"toolTip": "Must represent the identity as an Azure Resource Manager resource identifer format ex. /subscriptions/sub1/resourcegroups/myGroup/providers/Microsoft.Network/networkInterfaces/networkinterface1",
"visible": true
},
{
"name": "userAssignedId",
"type": "Microsoft.Common.TextBox",
"label": "user assigned identity resource id",
"defaultValue": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.ManagedIdentity/userassignedidentites/myuserassignedidentity",
"toolTip": "Must represent the identity as an Azure Resource Manager resource identifer format ex. /subscriptions/sub1/resourcegroups/myGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1",
"visible": true
}
]
}
],
"outputs": {
"existingNetworkInterfaceId": "[steps('managedApplicationSetting').networkInterfaceId]",
"managedIdentity": "[parse(concat('{\"Type\":\"UserAssigned\",\"UserAssignedIdentities\":{',string(steps('managedApplicationSetting').userAssignedId),':{}}}'))]"
}
}
}
Deze CreateUIDefinition.jsgenereert een gebruikerservaring met twee velden. In het eerste veld kan de gebruiker de Azure-resource-id invoeren voor de resource die wordt gekoppeld aan de implementatie van de beheerde toepassing. De tweede is voor een consument om de azure-resource-id van de door de gebruiker toegewezen identiteit in te voeren, die toegang heeft tot de gekoppelde Azure-resource. De gegenereerde ervaring ziet er als volgende uit:

De mainTemplate maken met een gekoppelde resource
Naast het bijwerken van de CreateUIDefinition moet de hoofdsjabloon ook worden bijgewerkt om de doorgegeven in de gekoppelde resource-id te accepteren. De hoofdsjabloon kan worden bijgewerkt om de nieuwe uitvoer te accepteren door een nieuwe parameter toe te voegen. Omdat de uitvoer de waarde van de gegenereerde beheerde toepassingssjabloon overschrijven, wordt deze niet doorgegeven aan de hoofdsjabloon en mag deze niet worden managedIdentity opgenomen in de sectie parameters.
Een voorbeeld van een hoofdsjabloon die het netwerkprofiel in stelt op een bestaande netwerkinterface die wordt geleverd door de CreateUIDefinition.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"existingNetworkInterfaceId": { "type": "string" }
},
"variables": {
},
"resources": [
{
"apiVersion": "2016-04-30-preview",
"type": "Microsoft.Compute/virtualMachines",
"name": "myLinkedResourceVM",
"location": "[resourceGroup().location]",
"properties": {
…,
"networkProfile": {
"networkInterfaces": [
{
"id": "[parameters('existingNetworkInterfaceId')]"
}
]
}
}
}
]
}
De beheerde toepassing gebruiken met een gekoppelde resource
Zodra het managed application-pakket is gemaakt, kan de beheerde toepassing worden gebruikt via de Azure Portal. Voordat deze kan worden gebruikt, zijn er verschillende vereiste stappen.
- Er moet een exemplaar van de vereiste gekoppelde Azure-resource worden gemaakt.
- De door de gebruiker toegewezen identiteit moet worden gemaakt en roltoewijzingen worden gegeven aan de gekoppelde resource.
- De bestaande gekoppelde resource-id en de door de gebruiker toegewezen identiteits-id worden verstrekt aan de CreateUIDefinition.
Toegang tot het token voor beheerde identiteit
Het token van de beheerde toepassing is nu toegankelijk via de listTokens API van de tenant van de uitgever. Een voorbeeld van een aanvraag kan er als volgende uitzien:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Solutions/applications/{applicationName}/listTokens?api-version=2018-09-01-preview HTTP/1.1
{
"authorizationAudience": "https://management.azure.com/",
"userAssignedIdentities": [
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{userAssignedIdentityName}"
]
}
Parameters voor aanvraag body:
| Parameter | Vereist | Beschrijving |
|---|---|---|
| authorizationAudience | No | De URI van de app-id van de doelresource. Het is ook de aud claim (doelgroep) van het uitgegeven token. De standaardwaarde is " https://management.azure.com/ " |
| userAssignedIdentities | No | De lijst met door de gebruiker toegewezen beheerde identiteiten voor het ophalen van een token. Als dit niet wordt opgegeven, listTokens retourneert het token voor de door het systeem toegewezen beheerde identiteit. |
Een voorbeeld van een antwoord kan er als volgende uitzien:
HTTP/1.1 200 OK
Content-Type: application/json
{
"value": [
{
"access_token": "eyJ0eXAi…",
"expires_in": "2…",
"expires_on": "1557…",
"not_before": "1557…",
"authorizationAudience": "https://management.azure.com/",
"resourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Solutions/applications/{applicationName}",
"token_type": "Bearer"
}
]
}
Het antwoord bevat een matrix met tokens onder de value eigenschap :
| Parameter | Beschrijving |
|---|---|
| access_token | Het aangevraagde toegangs token. |
| expires_in | Het aantal seconden dat het toegangs token geldig is. |
| expires_on | De periode waarin het toegangs token verloopt. Dit wordt weergegeven als het aantal seconden uit epoche. |
| not_before | De periode waarin het toegangs token van kracht wordt. Dit wordt weergegeven als het aantal seconden uit epoche. |
| authorizationAudience | De aud (doelgroep) waar het toegang token voor is gevraagd. Dit is hetzelfde als wat is opgegeven in de listTokens aanvraag. |
| resourceId | De Azure-resource-id voor het uitgegeven token. Dit is de id van de beheerde toepassing of de door de gebruiker toegewezen identiteits-id. |
| token_type | Het type token. |