Spravovaná aplikace Azure se spravovanou identitou
Poznámka:
Podpora spravovaných identit pro spravované aplikace Azure je aktuálně ve verzi Preview. Použití spravované identity ve verzi api verze 2018-09-09-01-Preview
Zjistěte, jak nakonfigurovat spravovanou aplikaci tak, aby obsahovala spravovanou identitu. Spravovanou identitu lze použít k tomu, aby zákazníkovi umožnil udělit spravované aplikaci přístup k existujícím prostředkům. Platforma Azure spravuje identitu a nevyžaduje zřízení ani obměně tajných kódů. Další informace o spravovaných identitách v Microsoft Entra ID najdete v tématu Spravované identity pro prostředky Azure.
Vaší aplikaci je možné udělit dva typy identit:
- Spravovaná identita přiřazená systémem je svázaná s vaší aplikací a v případě odstranění aplikace se odstraní. Aplikace může mít jenom jednu spravovanou identitu přiřazenou systémem.
- Spravovaná identita přiřazená uživatelem je samostatný prostředek Azure, který se dá přiřadit k vaší aplikaci. Aplikace může mít více spravovaných identit přiřazených uživatelem.
Jak používat spravovanou identitu
Spravovaná identita umožňuje pro spravované aplikace mnoho scénářů. Mezi běžné scénáře, které je možné vyřešit, patří:
- Nasazení 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é aplikace a vydavatele k prostředkům Azure mimo spravovanou skupinu prostředků.
- Poskytnutí 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, aby byla v prostředku Azure nastavená jiná vlastnost. Následující příklad ukazuje ukázkovou vlastnost identity :
{
"identity": {
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testRG/providers/Microsoft.ManagedIdentity/userassignedidentites/myuserassignedidentity": {}
}
}
}
Existují dva běžné způsoby, jak vytvořit spravovanou aplikaci: identity
createUiDefinition.json a šablony Azure Resource Manageru. V případě jednoduchých scénářů jednoduchého vytvoření by se k povolení spravované identity měla použít funkce createUiDefinition , protože poskytuje bohatší prostředí. Při práci s pokročilými nebo složitými systémy, které vyžadují automatizovaná nebo více nasazení spravovaných aplikací, je však možné použít šablony.
Použití createUiDefinition
Spravovanou aplikaci je možné nakonfigurovat se spravovanou identitou prostřednictvím createUiDefinition.json. V části Výstupy lze klíč managedIdentity
použít k přepsání vlastnosti identity šablony spravované aplikace. Následující ukázka umožňuje spravovanou identitu přiřazenou systémem ve spravované aplikaci. Složitější objekty identity lze vytvořit pomocí elementů createUiDefinition , které uživatele požádá o vstupy. Tyto vstupy lze použít k vytváření spravovaných aplikací pomocí spravované identity přiřazené uživatelem.
"outputs": {
"managedIdentity": { "Type": "SystemAssigned" }
}
Kdy použít createUiDefinition pro spravovanou identitu
Tady je několik doporučení, kdy použít createUiDefinition k povolení spravované identity ve spravovaných aplikacích.
- Vytvoření spravované aplikace prochází přes Azure Portal nebo Azure Marketplace.
- Spravovaná identita vyžaduje složitý vstup příjemce.
- Spravovaná identita je potřebná při vytváření spravované aplikace.
Ovládací prvek CreateUiDefinition spravované identity
CreateUiDefinition.json podporuje integrované řízení spravované identity.
{
"$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": "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ých aplikací marketplace se automaticky generují pro zákazníky procházející prostředím pro vytváření na webu Azure Portal.
Pro tyto scénáře managedIdentity
musí být k povolení identity použit výstupní klíč pro createUiDefinition .
Spravovanou identitu je možné povolit také prostřednictvím šablon Azure Resource Manageru. Následující ukázka umožňuje spravovanou identitu přiřazenou systémem ve spravované aplikaci. Složitější objekty identity je možné vytvořit pomocí parametrů šablony Azure Resource Manageru, které poskytují vstupy. Tyto vstupy lze použít k vytváření spravovaných aplikací pomocí spravované identity přiřazené uživatelem.
Kdy použít šablony Azure Resource Manageru pro spravovanou identitu
Tady je několik doporučení, kdy použít šablony Azure Resource Manageru pro povolení spravované identity ve spravovaných aplikacích.
- Spravované aplikace je možné nasadit prostřednictvím kódu programu na základě šablony.
- K zřízení spravované aplikace jsou potřeba vlastní přiřazení rolí pro spravovanou identitu.
- Spravovaná aplikace nepotřebuje tok vytváření webu Azure Portal a Marketplace.
Šablona SystemAssigned
Základní šablona Azure Resource Manageru, která nasazuje spravovanou aplikaci s spravovanou 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 Přiřazená uživatelem
Základní šablona Azure Resource Manageru, která nasadí spravovanou aplikaci s spravovanou identitou přiřazenou uživatelem.
"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
Jakmile je spravovaná aplikace udělena identita, můžete jí udělit přístup k existujícím prostředkům Azure vytvořením přiřazení role.
Uděláte to tak, že vyhledáte a vyberete název spravované aplikace nebo spravované identity přiřazené uživatelem a pak vyberete Řízení přístupu (IAM). Podrobný postup najdete v tématu Přiřazování rolí Azure s využitím webu Azure Portal.
Propojení existujících prostředků Azure
Poznámka:
Před nasazením spravované aplikace musí být nakonfigurovaná spravovaná identita přiřazená uživatelem. Kromě toho se nasazení propojených prostředků spravovaných aplikací podporuje jenom pro druh Marketplace .
Spravovanou identitu lze použít také k nasazení spravované aplikace, která během nasazování vyžaduje přístup k existujícím prostředkům. Když zákazník zřídí spravovanou aplikaci, je možné přidat spravované identity přiřazené uživatelem, aby poskytovaly další autorizace pro nasazení mainTemplate .
Vytvoření definice createUiDefinition s propojeným prostředkem
Když propočítáte nasazení spravované aplikace s existujícími prostředky, musí se poskytnout stávající prostředek Azure i spravovaná identita přiřazená uživatelem s příslušným přiřazením role k danému prostředku.
Ukázka createUiDefinition.json , která vyžaduje dva vstupy: ID prostředku síťového rozhraní a ID prostředku spravované identity přiřazené uživatelem.
{
"$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": "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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testRG/providers/Microsoft.Network/networkInterfaces/existingnetworkinterface",
"toolTip": "Must represent the identity as an Azure Resource Manager resource identifier format ex. /subscriptions/sub1/resourcegroups/myGroup/providers/Microsoft.Network/networkInterfaces/networkinterface1",
"visible": true
},
{
"name": "userAssignedId",
"type": "Microsoft.Common.TextBox",
"label": "User-assigned managed identity resource ID",
"defaultValue": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testRG/providers/Microsoft.ManagedIdentity/userassignedidentites/myuserassignedidentity",
"toolTip": "Must represent the identity as an Azure Resource Manager resource identifier 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.json vygeneruje prostředí pro vytvoření uživatele se dvěma poli. První pole umožňuje uživateli zadat ID prostředku Azure, které je propojené s nasazením spravované aplikace. Druhým je zadání ID prostředku Azure přiřazené uživatelem přiřazené uživatelem, který má přístup k propojenému prostředku Azure. Vygenerované prostředí by vypadalo takto:
Vytvoření mainTemplate s propojeným prostředkem
Kromě aktualizace createUiDefinition je také potřeba aktualizovat hlavní šablonu tak, aby přijímala předané ID propojeného prostředku. Hlavní šablonu je možné aktualizovat tak, aby přijímala nový výstup přidáním nového parametru. managedIdentity
Vzhledem k tomu, že výstup přepíše hodnotu vygenerované šabloně spravované aplikace, nepředá se hlavní šabloně a neměl by být zahrnut do oddílu parametrů.
Ukázková hlavní šablona, která nastaví profil sítě na existující síťové rozhraní poskytované createUiDefinition.json.
{
"$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 využívat prostřednictvím webu Azure Portal. Než ho budete moct využívat, existuje několik požadovaných kroků.
- Je potřeba vytvořit instanci požadovaného propojeného prostředku Azure.
- Spravovaná identita přiřazená uživatelem musí být vytvořena a přiřazena k propojenému prostředku.
- Existující ID propojeného prostředku a ID spravované identity přiřazené uživatelem se zadají do definice createUiDefinition.
Přístup k tokenu spravované identity
Token spravované aplikace je teď přístupný 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 požadavku:
Parametr | Požadováno | Popis |
---|---|---|
authorizationAudience |
Ne | Identifikátor URI ID aplikace cílového prostředku. Jedná se také o aud deklaraci identity vydaného tokenu (cílové skupiny). Výchozí hodnota je "https://management.azure.com/" |
userAssignedIdentities |
Ne | Seznam spravovaných identit přiřazených uživatelem pro načtení tokenu Pokud není zadaný, listTokens vrátí token spravované identity přiřazené 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ěď obsahuje pole tokenů v rámci value
vlastnosti:
Parametr | Popis |
---|---|
access_token |
Požadovaný přístupový token. |
expires_in |
Počet sekund platnosti přístupového tokenu. |
expires_on |
Časový rozsah, kdy vyprší platnost přístupového tokenu. Tato hodnota je reprezentována jako počet sekund od epochy. |
not_before |
Časový rozsah, kdy se přístupový token projeví. Tato hodnota je reprezentována jako počet sekund od epochy. |
authorizationAudience |
Přístupový aud token (cílová skupina) byl požadován. Tato hodnota je stejná jako hodnota zadaná v listTokens požadavku. |
resourceId |
ID prostředku Azure pro vystavený token. Tato hodnota je ID spravované aplikace nebo ID spravované identity přiřazené uživatelem. |
token_type |
Typ tokenu |