Spravovaná aplikace Azure se spravovanou identitou
Poznámka
Podpora spravované identity pro spravované aplikace je momentálně ve verzi Preview. K využití spravované identity použijte verzi rozhraní API 2018-09-01-Preview.
Naučte se, jak nakonfigurovat spravovanou aplikaci tak, aby obsahovala spravovanou identitu. Spravovaná identita se dá použít k tomu, aby zákazník udělil přístup spravované aplikace k dalším existujícím prostředkům. Identita je spravovaná platformou Azure a nevyžaduje zřízení ani otočení jakýchkoli tajných klíčů. další informace o spravovaných identitách v Azure Active Directory (AAD) najdete v tématu spravované identity pro prostředky Azure.
Aplikaci lze udělit dva typy identit:
- Identita přiřazená systémem je svázána s vaší aplikací a je odstraněna, pokud je vaše aplikace odstraněna. Aplikace může mít jenom jednu identitu přiřazenou systémem.
- Uživatelsky přiřazená identita je samostatný prostředek Azure, který je možné přiřadit k vaší aplikaci. Aplikace může mít více uživatelsky přiřazených identit.
Použití spravované identity
Spravovaná identita povoluje mnoho scénářů pro spravované aplikace. Některé běžné scénáře, které lze vyřešit:
- Nasazuje se spravovaná aplikace propojená s existujícími prostředky Azure. Příkladem je nasazení virtuálního počítače Azure v rámci spravované aplikace, která je připojená k existujícímu síťovému rozhraní.
- Udělení přístupu spravované aplikaci a vydavateli k prostředkům Azure mimo spravovanou skupinu prostředků
- Poskytování provozní identity spravovaných aplikací pro protokol aktivit a další služby v rámci Azure.
Přidání spravované identity
Vytvoření spravované aplikace se spravovanou identitou vyžaduje, abyste u prostředku Azure nastavili další vlastnost. Následující příklad zobrazuje ukázkovou vlastnost identity :
{
"identity": {
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.ManagedIdentity/userassignedidentites/myuserassignedidentity": {}
}
}
Existují dva běžné způsoby, jak vytvořit spravovanou aplikaci s identitou: CreateUIDefinition.jsv šablonách a Azure Resource Manager. V případě jednoduchých jednoduchých scénářů vytváření by se měla CreateUIDefinition použít k povolení spravované identity, protože poskytuje bohatší možnosti. Při práci s pokročilými nebo složitými systémy, které vyžadují automatizované nebo vícenásobné nasazení spravovaných aplikací, je ale možné použít šablony.
Použití CreateUIDefinition
Spravovaná aplikace se dá nakonfigurovat se spravovanou identitou prostřednictvím CreateUIDefinition.jsv. V části výstupy managedIdentity lze klíč použít k přepsání vlastnosti identity šablony spravované aplikace. Vzorový níže povolí pro spravovanou aplikaci identitu přiřazenou systémem . Složitější objekty identity mohou být vytvořeny pomocí CreateUIDefinition elementů, aby požádaly spotřebitele o vstupy. Tyto vstupy se dají použít k sestavování spravovaných aplikací s uživatelsky přiřazenou identitou.
"outputs": {
"managedIdentity": { "Type": "SystemAssigned" }
}
Kdy použít CreateUIDefinition pro spravovanou identitu
Níže jsou uvedená doporučení týkající se použití CreateUIDefinition k povolení spravované identity na spravovaných aplikacích.
- Vytváření spravovaných aplikací projde Azure Portal nebo Marketplace.
- Spravovaná identita vyžaduje komplexní uživatelský vstup.
- Spravovaná identita je nutná při vytváření spravované aplikace.
Spravovaný CreateUIDefinition identity – ovládací prvek
CreateUIDefinition podporuje integrovaný spravovaný ovládací prvek identity.
{
"$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]"
}
}
}

Použití šablon Azure Resource Manageru
Poznámka
Šablony spravované aplikace Marketplace se automaticky generují pro zákazníky, kteří procházejí prostředím Azure Portal vytvořit.
V těchto scénářích managedIdentity musí být výstupní klíč na CreateUIDefinition použit k povolení identity.
Spravovaná identita se dá povolit taky prostřednictvím šablon Azure Resource Manager. Vzorový níže povolí pro spravovanou aplikaci identitu přiřazenou systémem . Složitější objekty identity mohou být vytvořeny pomocí parametrů šablony Azure Resource Manager k poskytnutí vstupů. Tyto vstupy se dají použít k sestavování spravovaných aplikací s uživatelsky přiřazenou identitou.
Kdy použít šablony Azure Resource Manager pro spravovanou identitu
Níže jsou uvedená doporučení týkající se použití Azure Resource Manager šablon pro povolení spravované identity na spravovaných aplikacích.
- Spravované aplikace lze programově nasadit na základě šablony.
- Ke zřízení spravované aplikace je potřeba vlastní přiřazení rolí pro spravovanou identitu.
- Spravovaná aplikace nepotřebuje tok vytváření Azure Portal a Marketplace.
Šablona SystemAssigned
Základní Azure Resource Manager šablona, která nasadí spravovanou aplikaci s identitou přiřazenou systémem .
"resources": [
{
"type": "Microsoft.Solutions/applications",
"name": "[parameters('applicationName')]",
"apiVersion": "2018-09-01-preview",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"ManagedResourceGroupId": "[parameters('managedByResourceGroupId')]",
"parameters": { }
}
}
]
Šablona UserAssigned
Základní Azure Resource Manager šablona, která nasadí spravovanou aplikaci s uživatelem přiřazenou identitou.
"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": { }
}
}
]
Udělení přístupu k prostředkům Azure
Po udělení identity spravované aplikaci může být udělen přístup k existujícím prostředkům Azure. Tento postup lze provést prostřednictvím rozhraní IAM (Access Control) v Azure Portal. Název spravované aplikace nebo uživatelsky přiřazené identity můžete vyhledat a přidat přiřazení role.

Propojování existujících prostředků Azure
Poznámka
Před nasazením spravované aplikace musí být nakonfigurovaná uživatelská identita . Kromě toho se nasazení propojených prostředků u spravovaných aplikací podporuje jenom pro tento druh Marketplace .
Spravovaná identita se dá použít taky k nasazení spravované aplikace, která během jejího nasazení vyžaduje přístup k existujícím prostředkům. Když je spravovaná aplikace zřízená zákazníkem, je možné přidat uživatelsky přiřazené identity k zajištění dalších autorizací nasazení mainTemplate .
Vytváření CreateUIDefinition s propojeným prostředkem
Při propojování nasazení spravované aplikace s existujícími prostředky je nutné zadat jak existující prostředek Azure, tak uživatelem přiřazenou identitu s příslušným přiřazením role daného prostředku.
Vzorový CreateUIDefinition, který vyžaduje dva vstupy: ID prostředku síťového rozhraní a ID prostředku identity přiřazené uživatelem.
{
"$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),':{}}}'))]"
}
}
}
Tato CreateUIDefinition.jsv systému generuje prostředí pro vytváření uživatelů, které má dvě pole. První pole umožňuje uživateli zadat ID prostředku Azure pro prostředek propojený s nasazením spravované aplikace. Druhým je, aby příjemce zadal ID prostředku Azure přiřazené identitě uživatele , který má přístup k propojenému prostředku Azure. Vygenerované prostředí by vypadalo takto:

Vytváření mainTemplate s propojeným prostředkem
Kromě aktualizace CreateUIDefinition je potřeba aktualizovat také hlavní šablonu, aby přijímala předané ID odkazovaného prostředku. Hlavní šablonu lze aktualizovat tak, aby přijímala nový výstup přidáním nového parametru. Vzhledem k managedIdentity tomu, že výstup Přepisuje hodnotu vygenerované šablony spravované aplikace, není předána do hlavní šablony a neměl by být zahrnut do oddílu Parameters.
Ukázková hlavní šablona, která nastavuje profil sítě na stávající síťové rozhraní, které poskytuje 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')]"
}
]
}
}
}
]
}
Využívání spravované aplikace s propojeným prostředkem
Po vytvoření balíčku spravované aplikace je možné spravovanou aplikaci spotřebovat prostřednictvím Azure Portal. Předtím, než bude možné ji spotřebovat, je nutné provést několik požadovaných kroků.
- Musí být vytvořená instance požadovaného propojeného prostředku Azure.
- Je nutné vytvořit identitu přiřazenou uživatelem a přiřadit přiřazení rolí k propojenému prostředku.
- Existující ID propojeného prostředku a ID identity přiřazené uživatelem jsou k dispozici pro CreateUIDefinition.
Přístup ke spravovanému tokenu identity
Token spravované aplikace je teď k dispozici prostřednictvím listTokens rozhraní API z tenanta vydavatele. Příklad požadavku může vypadat takto:
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}"
]
}
Parametry textu žádosti:
| Parametr | Povinné | Popis |
|---|---|---|
| authorizationAudience | Ne | Identifikátor URI ID aplikace cílového prostředku Je to také aud deklarace identity (cílová skupina) vydaného tokenu. Výchozí hodnota je " https://management.azure.com/ " |
| userAssignedIdentities | Ne | Seznam uživatelsky přiřazených spravovaných identit, pro které se má načíst token Pokud není zadaný, listTokens vrátí token pro spravovanou identitu přiřazenou systémem. |
Ukázková odpověď může vypadat takto:
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"
}
]
}
Odpověď bude obsahovat pole tokenů pod value vlastností:
| Parametr | Popis |
|---|---|
| access_token | Požadovaný přístupový token |
| expires_in | Počet sekund, po který bude přístupový token platný |
| expires_on | Časový interval pro přístup k vypršení platnosti přístupového tokenu Tato hodnota je vyjádřena jako počet sekund od epocha. |
| not_before | Časové rozpětí, kdy se přístupový token projeví. Tato hodnota je vyjádřena jako počet sekund od epocha. |
| authorizationAudience | aud(Cílová skupina), pro který přístupový token požádal. To se shoduje s tím, co bylo v listTokens žádosti zadáno. |
| resourceId | ID prostředku Azure pro vydaný token. Toto je buď ID spravované aplikace, nebo ID identity přiřazené uživatelem. |
| token_type | Typ tokenu |