Felügyelt Azure-alkalmazás felügyelt identitással

Megjegyzés:

Az Azure Managed Applications felügyelt identitástámogatása jelenleg előzetes verzióban érhető el. A felügyelt identitás használatához használja a 2018-09-01-preview API-verziót.

Megtudhatja, hogyan konfigurálhat felügyelt alkalmazásokat felügyelt identitások elhelyezésére. A felügyelt identitással lehetővé teheti az ügyfél számára, hogy hozzáférést biztosítson a felügyelt alkalmazásnak a meglévő erőforrásokhoz. Az Azure platform kezeli az identitást, és nem követeli meg, hogy titkos kulcsokat építsen ki vagy forgassa el. A Microsoft Entra ID-ban található felügyelt identitásokról további információt az Azure-erőforrások felügyelt identitásai című témakörben talál.

Az alkalmazás számára kétféle identitástípust lehet megadni:

  • A rendszer által hozzárendelt felügyelt identitás az alkalmazáshoz van kötve, és az alkalmazás törlésekor törlődik. Egy alkalmazás csak egy rendszer által hozzárendelt felügyelt identitással rendelkezhet.
  • A felhasználó által hozzárendelt felügyelt identitás egy önálló Azure-erőforrás, amely hozzárendelhető az alkalmazáshoz. Egy alkalmazás több felhasználó által hozzárendelt felügyelt identitással is rendelkezhet.

Felügyelt identitás használata

A felügyelt identitás számos forgatókönyvet tesz lehetővé a felügyelt alkalmazásokhoz. Néhány gyakori megoldási forgatókönyv:

  • Meglévő Azure-erőforrásokhoz társított felügyelt alkalmazás üzembe helyezése. Ilyen például egy Azure-beli virtuális gép (VM) üzembe helyezése a felügyelt alkalmazáson belül, amely egy meglévő hálózati adapterhez van csatolva.
  • A felügyelt alkalmazás és a közzétevő hozzáférésének biztosítása a felügyelt erőforráscsoporton kívüli Azure-erőforrásokhoz.
  • Felügyelt alkalmazások működési identitásának biztosítása a tevékenységnaplóhoz és az Azure-on belüli egyéb szolgáltatásokhoz.

Felügyelt identitás hozzáadása

Felügyelt identitással rendelkező felügyelt alkalmazás létrehozásához egy másik tulajdonságot kell beállítani az Azure-erőforráson. Az alábbi példa egy identitásminta-tulajdonságot mutat be:

{
  "identity": {
    "type": "SystemAssigned, UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.ManagedIdentity/userassignedidentites/myuserassignedidentity": {}
    }
  }
}

A felügyelt alkalmazások identitykétféleképpen hozhatók létre: createUiDefinition.json és Azure Resource Manager-sablonok. Az egyszerű egyszeri létrehozási forgatókönyvek esetében a createUiDefinition parancsot kell használni a felügyelt identitás engedélyezéséhez, mivel gazdagabb élményt nyújt. Ha azonban olyan fejlett vagy összetett rendszerekkel foglalkozik, amelyek automatizált vagy több felügyelt alkalmazástelepítést igényelnek, sablonok használhatók.

CreateUiDefinition használata

A felügyelt alkalmazások a createUiDefinition.json használatával konfigurálhatók felügyelt identitással. A kimenetek szakaszban a kulcs managedIdentity használható a felügyelt alkalmazássablon identitástulajdonságának felülbírálásához. Az alábbi minta egy rendszer által hozzárendelt felügyelt identitást tesz lehetővé a felügyelt alkalmazásban. Összetettebb identitásobjektumok hozhatók létre a createUiDefinition-elemek használatával, amelyek bemeneteket kérnek a fogyasztótól. Ezek a bemenetek a felhasználó által hozzárendelt felügyelt identitással rendelkező felügyelt alkalmazások létrehozásához használhatók.

"outputs": {
  "managedIdentity": { "Type": "SystemAssigned" }
}

Mikor érdemes a createUiDefinitiont használni a felügyelt identitáshoz?

Az alábbiakban néhány javaslatot talál arra, hogy mikor érdemes a createUiDefinitiont használni a felügyelt identitások felügyelt alkalmazásokon való engedélyezéséhez.

  • A felügyelt alkalmazás létrehozása az Azure Portalon vagy az Azure Marketplace-en keresztül történik.
  • A felügyelt identitás összetett felhasználói bemenetet igényel.
  • A felügyelt alkalmazás létrehozásához a felügyelt identitásra van szükség.

Felügyelt identitás létrehozásaUiDefinition vezérlőelem

A createUiDefinition.json támogatja a beépített felügyelt identitásvezérlőt.

{
  "$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]"
    }
  }
}

Screenshot of the application settings for system-assigned managed identity and user-assigned managed identity

Az Azure Resource Manager-sablonok használata

Megjegyzés:

A Marketplace által felügyelt alkalmazássablonok automatikusan létrejönnek az Azure Portal létrehozási felületén áthaladó ügyfelek számára. Ezekben a forgatókönyvekben a managedIdentity createUiDefinition kimeneti kulcsát kell használni az engedélyezett identitáshoz.

A felügyelt identitás Azure Resource Manager-sablonokon keresztül is engedélyezhető. Az alábbi minta egy rendszer által hozzárendelt felügyelt identitást tesz lehetővé a felügyelt alkalmazásban. Összetettebb identitásobjektumok alakíthatók ki az Azure Resource Manager-sablonparaméterek használatával bemenetek biztosításához. Ezek a bemenetek a felhasználó által hozzárendelt felügyelt identitással rendelkező felügyelt alkalmazások létrehozásához használhatók.

Mikor érdemes Azure Resource Manager-sablonokat használni felügyelt identitáshoz?

Az alábbiakban néhány javaslatot találhat arra vonatkozóan, hogy mikor érdemes Azure Resource Manager-sablonokat használni a felügyelt identitások felügyelt alkalmazásokon való engedélyezéséhez.

  • A felügyelt alkalmazások sablon alapján programozott módon telepíthetők.
  • A felügyelt alkalmazás kiépítéséhez egyéni szerepkör-hozzárendelésekre van szükség a felügyelt identitáshoz.
  • A felügyelt alkalmazásnak nincs szüksége az Azure Portal és a Marketplace létrehozási folyamatára.

SystemAssigned sablon

Egy alapszintű Azure Resource Manager-sablon, amely egy felügyelt alkalmazást helyez üzembe rendszer által hozzárendelt felügyelt identitással.

"resources": [
  {
    "type": "Microsoft.Solutions/applications",
    "name": "[parameters('applicationName')]",
    "apiVersion": "2018-09-01-preview",
    "location": "[parameters('location')]",
    "identity": {
        "type": "SystemAssigned"
    },
    "properties": {
        "ManagedResourceGroupId": "[parameters('managedByResourceGroupId')]",
        "parameters": { }
    }
  }
]

UserAssigned sablon

Egy alapszintű Azure Resource Manager-sablon, amely egy felügyelt alkalmazást helyez üzembe egy felhasználó által hozzárendelt felügyelt identitással.

"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": { }
    }
  }
]

Hozzáférés biztosítása az Azure-erőforrásokhoz

Miután egy felügyelt alkalmazás identitást kapott, egy szerepkör-hozzárendelés létrehozásával hozzáférést kaphat a meglévő Azure-erőforrásokhoz.

Ehhez keresse meg és válassza ki a felügyelt alkalmazás vagy a felhasználó által hozzárendelt felügyelt identitás nevét, majd válassza a Hozzáférés-vezérlés (IAM) lehetőséget. A részletes lépésekért tekintse meg az Azure-szerepköröknek az Azure Portalon történő hozzárendelését ismertető cikket.

Meglévő Azure-erőforrások összekapcsolása

Megjegyzés:

A felügyelt alkalmazás üzembe helyezése előtt konfigurálnia kell egy felhasználó által hozzárendelt felügyelt identitást. Emellett a felügyelt alkalmazások társított erőforrás-üzembe helyezése csak a Marketplace-típus esetében támogatott.

A felügyelt identitással olyan felügyelt alkalmazásokat is üzembe helyezhet, amelyek az üzembe helyezés során hozzáférést igényelnek a meglévő erőforrásokhoz. Amikor az ügyfél kiépíti a felügyelt alkalmazást, a felhasználó által hozzárendelt felügyelt identitások hozzáadhatók, hogy több engedélyezést biztosítsanak a mainTemplate központi telepítéséhez.

A createUiDefinition létrehozása csatolt erőforrással

Ha a felügyelt alkalmazás üzembe helyezését meglévő erőforrásokhoz kapcsolja, a meglévő Azure-erőforrást és a felhasználó által hozzárendelt felügyelt identitást is meg kell adni az adott erőforrásra vonatkozó szerepkör-hozzárendeléssel.

Minta createUiDefinition.json , amely két bemenetet igényel: egy hálózati adapter erőforrás-azonosítóját és egy felhasználó által hozzárendelt felügyelt identitás erőforrás-azonosítóját.

{
  "$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/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 managed 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),':{}}}'))]"
    }
  }
}

Ez a createUiDefinition.json létrehoz egy létrehozási felhasználói felületet, amely két mezőt tartalmaz. Az első mező lehetővé teszi, hogy a felhasználó beírja a felügyelt alkalmazás üzembe helyezéséhez csatolt erőforrás Azure-erőforrás-azonosítóját. A második az, hogy a fogyasztó megadja a felhasználó által hozzárendelt felügyelt identitás Azure-erőforrás-azonosítóját, amely hozzáfér a társított Azure-erőforráshoz. A létrehozott felület a következőképpen nézne ki:

Screenshot of a sample createUiDefinition.json with two inputs: a network interface resource ID and a user-assigned managed identity resource ID.

A mainTemplate létrehozása csatolt erőforrással

A createUiDefinition frissítése mellett a fő sablont is frissíteni kell az átadott csatolt erőforrás-azonosító elfogadásához. A fő sablon egy új paraméter hozzáadásával frissíthető az új kimenet elfogadásához. Mivel a managedIdentity kimenet felülírja a létrehozott felügyelt alkalmazássablon értékét, a rendszer nem továbbítja a fő sablonnak, és nem kell szerepelnie a paraméterek szakaszában.

Minta fősablon, amely a hálózati profilt a createUiDefinition.json által biztosított meglévő hálózati adapterre állítja.

{
  "$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')]"
            }
          ]
        }
      }
    }
  ]
}

A felügyelt alkalmazás felhasználása csatolt erőforrással

A felügyelt alkalmazáscsomag létrehozása után a felügyelt alkalmazás az Azure Portalon keresztül használható. A használat előtt több előfeltételt is meg kell tenni.

A felügyelt identitás jogkivonatának elérése

A felügyelt alkalmazás jogkivonata mostantól elérhető az listTokens API-on keresztül a közzétevő bérlőjén. Egy példakérés a következőképpen nézhet ki:

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}"
  ]
}

Kérelem törzsparaméterei:

Parameter Kötelező Leírás
authorizationAudience nem A célerőforrás alkalmazásazonosítójának URI-ja. Ez a aud kibocsátott jogkivonat (célközönség) jogcíme is. Az alapértelmezett érték a "https://management.azure.com/"
userAssignedIdentities nem A felhasználó által hozzárendelt felügyelt identitások listája a jogkivonat lekéréséhez. Ha nincs megadva, listTokens a rendszer által hozzárendelt felügyelt identitás jogkivonatát adja vissza.

A mintaválasz a következőképpen nézhet ki:

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"
    }
  ]
}

A válasz egy tokentömböt tartalmaz a value tulajdonság alatt:

Parameter Leírás
access_token A kért hozzáférési jogkivonat.
expires_in A hozzáférési jogkivonat érvényessége másodpercben.
expires_on A hozzáférési jogkivonat lejárati ideje. Ez az érték a korszaktól számítva másodpercek számaként jelenik meg.
not_before A hozzáférési jogkivonat érvénybe lépésének időideje. Ez az érték a korszaktól számítva másodpercek számaként jelenik meg.
authorizationAudience A aud hozzáférési jogkivonat (célközönség) kérése. Ez az érték megegyezik a kérésben listTokens megadott értékkel.
resourceId A kibocsátott jogkivonat Azure-erőforrás-azonosítója. Ez az érték vagy a felügyelt alkalmazás azonosítója, vagy a felhasználó által hozzárendelt felügyelt identitásazonosító.
token_type A jogkivonat típusa.

Következő lépések