Felügyelt identitások támogatása az IoT Hubban

A felügyelt identitások biztonságos módon biztosítják az Azure-szolgáltatásokat egy automatikusan felügyelt identitással a Microsoft Entra-azonosítóban. Így a fejlesztőknek nem kell identitás megadásával kezelniük a hitelesítő adatokat. A felügyelt identitásoknak két típusa létezik: rendszer által hozzárendelt és felhasználó által hozzárendelt. Az IoT Hub mindkettőt támogatja.

Az IoT Hubban felügyelt identitások használhatók az IoT Hubról más Azure-szolgáltatásokba irányuló kimenő kapcsolatokhoz, például üzenet-útválasztáshoz, fájlfeltöltéshez és tömeges eszközimportáláshoz/-exportáláshoz. Ebből a cikkből megtudhatja, hogyan használhatja a rendszer által hozzárendelt és felhasználó által hozzárendelt felügyelt identitásokat az IoT Hubon a különböző funkciókhoz.

Előfeltételek

Rendszer által hozzárendelt felügyelt identitás

Rendszer által hozzárendelt felügyelt identitás engedélyezése vagy letiltása az Azure Portalon

  1. Jelentkezzen be az Azure Portalra, és lépjen az IoT Hubra.

  2. Válassza az Identitás lehetőséget a navigációs menü Biztonsági beállítások szakaszában.

  3. Válassza a Rendszer által hozzárendelt lapot.

  4. Állítsa be vagy ki a rendszer által hozzárendelt felügyelt identitás állapotát, majd válassza a Mentés lehetőséget.

    Megjegyzés:

    Használat közben nem kapcsolhatja ki a rendszer által hozzárendelt felügyelt identitást. A funkció letiltása előtt győződjön meg arról, hogy egyetlen egyéni végpont sem használ rendszer által hozzárendelt felügyelt identitáshitelesítést.

    Screenshot showing where to turn on system-assigned managed identity for an IoT hub.

Rendszer által hozzárendelt felügyelt identitás engedélyezése a központi létrehozáskor ARM-sablon használatával

Ha erőforrás-kiépítéskor szeretné engedélyezni a rendszer által hozzárendelt felügyelt identitást az IoT Hubon, használja az alábbi Azure Resource Manager-sablont.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": 
    {
      "iotHubName": {
        "type": "string",
        "metadata": {
          "description": "Name of iothub resource"
        }
      },
      "skuName": {
        "type": "string",
        "defaultValue": "S1",
        "metadata": {
          "description": "SKU name of iothub resource, by default is Standard S1"
        }
      },
      "skuTier": {
        "type": "string",
        "defaultValue": "Standard",
        "metadata": {
          "description": "SKU tier of iothub resource, by default is Standard"
        }
      },
      "location": {
        "type": "string",
        "defaultValue": "[resourceGroup().location]",
        "metadata": {
          "description": "Location of iothub resource. Please provide any of supported-regions of iothub"
        }
      }
    },
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2020-10-01",
      "name": "createIotHub",
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "resources": [
            {
              "type": "Microsoft.Devices/IotHubs",
              "apiVersion": "2021-03-31",
              "name": "[parameters('iotHubName')]",
              "location": "[parameters('location')]",
              "identity": {
                "type": "SystemAssigned"
              },
              "sku": {
              "name": "[parameters('skuName')]",
              "tier": "[parameters('skuTier')]",
              "capacity": 1
              }
            }
          ] 
        }
      }
    }
  ]
}

Az erőforrás namelocationSKU.nameSKU.tierértékeinek helyettesítése után az Azure CLI használatával üzembe helyezheti az erőforrást egy meglévő erőforráscsoportban a következőkkel:

az deployment group create --name <deployment-name> --resource-group <resource-group-name> --template-file <template-file.json> --parameters iotHubName=<valid-iothub-name> skuName=<sku-name> skuTier=<sku-tier> location=<any-of-supported-regions>

Az erőforrás létrehozása után az Azure CLI használatával lekérheti a központhoz rendelt rendszer hozzárendelését:

az resource show --resource-type Microsoft.Devices/IotHubs --name <iot-hub-resource-name> --resource-group <resource-group-name>

Felhasználó által hozzárendelt felügyelt identitás

Ebben a szakaszban megtudhatja, hogyan vehet fel és távolíthat el egy felhasználó által hozzárendelt felügyelt identitást egy IoT Hubról az Azure Portal használatával.

  1. Először létre kell hoznia egy felhasználó által hozzárendelt felügyelt identitást önálló erőforrásként. Ehhez kövesse a felhasználó által hozzárendelt felügyelt identitás létrehozása című témakör utasításait.

  2. Lépjen az IoT Hubra, és keresse meg az identitást az IoT Hub portálon.

  3. A Felhasználó által hozzárendelt lapon kattintson a Felhasználó által hozzárendelt felügyelt identitás társítása elemre. Válassza ki a felhasználó által hozzárendelt felügyelt identitást, amelyet hozzá szeretne adni a központhoz, majd kattintson a Kiválasztás gombra.

  4. Eltávolíthat egy felhasználó által hozzárendelt identitást egy IoT Hubról. Válassza ki az eltávolítani kívánt felhasználó által hozzárendelt identitást, majd kattintson az Eltávolítás gombra. Vegye figyelembe, hogy csak az IoT Hubról távolítja el, és ez az eltávolítás nem törli a felhasználó által hozzárendelt identitást erőforrásként. A felhasználó által hozzárendelt identitás erőforrásként való törléséhez kövesse a Felhasználó által hozzárendelt felügyelt identitás törlése című témakör utasításait.

    Screenshot showing how to add user-assigned managed identity for an I O T hub.

Felhasználó által hozzárendelt felügyelt identitás engedélyezése a központ létrehozásakor ARM-sablon használatával

Az alábbi példasablonnal létrehozhat egy, a felhasználó által hozzárendelt felügyelt identitással rendelkező központot. Ez a sablon létrehoz egy felhasználó által hozzárendelt identitást [iothub-name-provided]-identity néven, és hozzárendeli a létrehozott IoT Hubhoz. Módosíthatja a sablont úgy, hogy szükség szerint több felhasználó által hozzárendelt identitást adjon hozzá.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "iotHubName": {
      "type": "string",
      "metadata": {
        "description": "Name of iothub resource"
      }
    },
  "skuName": {
    "type": "string",
    "defaultValue": "S1",
    "metadata": {
      "description": "SKU name of iothub resource, by default is Standard S1"
    }
  },
  "skuTier": {
    "type": "string",
    "defaultValue": "Standard",
    "metadata": {
      "description": "SKU tier of iothub resource, by default is Standard"
    }
  },
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]",
    "metadata": {
      "description": "Location of iothub resource. Please provide any of supported-regions of iothub"
    }
  }
},
  "variables": {
    "identityName": "[concat(parameters('iotHubName'), '-identity')]"
  },
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2020-10-01",
      "name": "createIotHub",
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "resources": [
            {
              "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
              "name": "[variables('identityName')]",
              "apiVersion": "2018-11-30",
              "location": "[resourceGroup().location]"
            },
            {
              "type": "Microsoft.Devices/IotHubs",
              "apiVersion": "2021-03-31",
              "name": "[parameters('iotHubName')]",
              "location": "[parameters('location')]",
              "identity": {
                "type": "UserAssigned",
                "userAssignedIdentities": {
                  "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('identityName'))]": {}
                }
              },
              "sku": {
                "name": "[parameters('skuName')]",
                "tier": "[parameters('skuTier')]",
                "capacity": 1
              },
              "dependsOn": [
                "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',variables('identityName'))]"
              ]
            }
          ]
        }
      }
    }
  ]
}
az deployment group create --name <deployment-name> --resource-group <resource-group-name> --template-file <template-file.json> --parameters iotHubName=<valid-iothub-name> skuName=<sku-name> skuTier=<sku-tier> location=<any-of-supported-regions>

Az erőforrás létrehozása után lekérheti a felhasználó által hozzárendelt felügyelt identitást a központban az Azure CLI használatával:

az resource show --resource-type Microsoft.Devices/IotHubs --name <iot-hub-resource-name> --resource-group <resource-group-name>

Kimenő kapcsolat az IoT Hubról más Azure-erőforrásokhoz

A felügyelt identitások az IoT Hubról más Azure-szolgáltatásokba irányuló kimenő kapcsolatokhoz használhatók üzenet-útválasztáshoz, fájlfeltöltéshez és tömeges eszközimportáláshoz/-exportáláshoz. Kiválaszthatja, hogy melyik felügyelt identitást használja az egyes IoT Hub-kimenő kapcsolatokhoz az ügyfél tulajdonában lévő végpontokhoz, beleértve a tárfiókokat, az eseményközpontokat és a service bus-végpontokat.

Megjegyzés:

Csak a rendszer által hozzárendelt felügyelt identitás ad hozzáférést az IoT Hubnak a privát erőforrásokhoz. Ha felhasználó által hozzárendelt felügyelt identitást szeretne használni, akkor a kapcsolat engedélyezéséhez engedélyezni kell a nyilvános hozzáférést ezeken a privát erőforrásokon.

Üzenet-útválasztás konfigurálása felügyelt identitásokkal

Ebben a szakaszban az üzenet-útválasztást egy Event Hubs-egyéni végpontra használjuk példaként. A példa más egyéni útválasztási végpontokra is vonatkozik.

  1. Lépjen az eseményközpontba az Azure Portalon, és rendelje hozzá a megfelelő hozzáférést a felügyelt identitáshoz.

  2. Select Access control (IAM).

  3. Válassza a Szerepkör-hozzárendelés hozzáadása > lehetőséget.

    Screenshot showing Access control (IAM) page with Add role assignment menu open.

  4. A Szerepkör lapon válassza az Azure Event Hubs-adatküldő lehetőséget.

    Megjegyzés:

    Tárfiók esetén válassza a Storage Blob Data Közreműködő (nem Közreműködő vagy Tárfiók közreműködője) lehetőséget szerepkörként. Service Bus esetén válassza az Azure Service Bus adatküldőt.

    Screenshot showing Add role assignment page with Role tab selected.

  5. A Tagok lapon válassza a Felügyelt identitás, majd a Tagok kijelölése lehetőséget.

  6. Felhasználó által hozzárendelt felügyelt identitások esetén válassza ki az előfizetést, válassza ki a felhasználó által hozzárendelt felügyelt identitást, majd válassza ki a felhasználó által hozzárendelt felügyelt identitást.

  7. Rendszer által hozzárendelt felügyelt identitások esetén válassza ki az előfizetést, válassza az Összes rendszer által hozzárendelt felügyelt identitás lehetőséget, majd válassza ki az IoT Hub erőforrásnevét.

  8. A szerepkör hozzárendeléséhez a Felülvizsgálat + hozzárendelés lapon válassza a Felülvizsgálat + hozzárendelés lehetőséget.

    További információ a szerepkör-hozzárendelésekről: Azure-szerepkörök hozzárendelése az Azure Portal használatával

  9. Ha virtuális hálózaton keresztül kell korlátoznia az egyéni végponthoz való kapcsolatot, be kell kapcsolnia a microsoftos első féltől származó megbízható kivételt, hogy hozzáférést biztosítson az IoT Hubnak az adott végponthoz. Ha például egyéni eseményközpont-végpontot ad hozzá, lépjen az eseményközpont Tűzfalak és virtuális hálózatok lapjára, és engedélyezze a hozzáférés engedélyezése a kiválasztott hálózatokból lehetőséget. A Kivételek listában jelölje be a Megbízható Microsoft-szolgáltatások engedélyezése az eseményközpontokhoz való hozzáféréshez jelölőnégyzetet. Kattintson a Mentés gombra. Ez a tárfiókra és a service busra is vonatkozik. További információ a virtuális hálózatok IoT Hub-támogatásáról.

    Megjegyzés:

    A fenti lépéseket el kell végeznie ahhoz, hogy a felügyelt identitás a megfelelő hozzáféréshez legyen rendelve, mielőtt az eseményközpontot egyéni végpontként hozzáadja az IoT Hubhoz. Várjon néhány percet a szerepkör-hozzárendelés propagálására.

  10. Ezután lépjen az IoT Hubra. A központban lépjen az Üzenet-útválasztás elemre, majd válassza a Hozzáadás lehetőséget.

  11. A Végpont lapon hozzon létre egy végpontot az eseményközponthoz az alábbi információk megadásával:

    Paraméter Érték
    Végpont típusa Válassza az Event Hubs lehetőséget.
    Végpont neve Adjon egyedi nevet egy új végpontnak, vagy válassza a Meglévő kiválasztása lehetőséget egy meglévő Event Hubs-végpont kiválasztásához.
    Event Hubs-névtér A legördülő menüben válasszon ki egy meglévő Event Hubs-névteret az előfizetésében.
    Event Hub-példány A legördülő menüvel válasszon ki egy meglévő eseményközpontot a névtérben.
    Hitelesítés típusa Válassza a Felhasználó által hozzárendelt lehetőséget, majd a legördülő menüben válassza ki az eseményközpontban létrehozott felhasználó által hozzárendelt identitást .

    Screenshot that shows event hub endpoint with user assigned authentication.

  12. Válassza a Létrehozás + tovább lehetőséget. Folytathatja a varázslót, hogy létrehozhasson egy útvonalat, amely erre a végpontra mutat, vagy bezárhatja a varázslót.

Módosíthatja egy meglévő egyéni végpont hitelesítési típusát. A végpontok módosításához kövesse az alábbi lépéseket:

  1. Az IoT Hubon válassza az Üzenet útválasztása lehetőséget a bal oldali navigációs panelen, majd az Egyéni végpontok lehetőséget.

  2. Jelölje be a módosítani kívánt egyéni végpont jelölőnégyzetét, majd válassza a Hitelesítés típusának módosítása lehetőséget.

  3. Válassza ki a végpont új hitelesítési típusát, majd válassza a Mentés lehetőséget.

Fájlfeltöltés konfigurálása felügyelt identitásokkal

Az IoT Hub fájlfeltöltési funkciója lehetővé teszi, hogy az eszközök fájlokat töltsenek fel egy ügyfél által birtokolt tárfiókba. Ahhoz, hogy a fájlfeltöltés működjön, az IoT Hubnak csatlakoznia kell a tárfiókhoz. Az üzenet-útválasztáshoz hasonlóan kiválaszthatja az IoT Hub által az Azure Storage-fiókhoz való kimenő IoT Hub-kapcsolathoz előnyben részesített hitelesítési típust és felügyelt identitást.

  1. Az Azure Portalon lépjen a tárfiókra.

  2. Select Access control (IAM).

  3. Válassza a Szerepkör-hozzárendelés hozzáadása > lehetőséget.

    Screenshot showing Access control (IAM) page with Add role assignment menu open.

  4. A Szerepkör lapon válassza a Storage Blob Data Közreműködő lehetőséget. (Ne válassza a Közreműködő vagy tárfiók közreműködője.)

  5. A Tagok lapon válassza a Felügyelt identitás, majd a Tagok kijelölése lehetőséget.

  6. Felhasználó által hozzárendelt felügyelt identitások esetén válassza ki az előfizetést, válassza ki a felhasználó által hozzárendelt felügyelt identitást, majd válassza ki a felhasználó által hozzárendelt felügyelt identitást.

  7. Rendszer által hozzárendelt felügyelt identitások esetén válassza ki az előfizetést, válassza az Összes rendszer által hozzárendelt felügyelt identitás lehetőséget, majd válassza ki az IoT Hub erőforrásnevét.

  8. A szerepkör hozzárendeléséhez a Felülvizsgálat + hozzárendelés lapon válassza a Felülvizsgálat + hozzárendelés lehetőséget.

    További információ a szerepkör-hozzárendelésekről: Azure-szerepkörök hozzárendelése az Azure Portal használatával

    Ha vNeten keresztül kell korlátoznia a tárfiókhoz való kapcsolatot, be kell kapcsolnia a microsoftos első féltől származó megbízható kivételt, hogy hozzáférést biztosítson az IoT Hubnak a tárfiókhoz. A tárfiók erőforráslapján lépjen a Tűzfalak és a virtuális hálózatok lapra, és engedélyezze a hozzáférés engedélyezése a kiválasztott hálózatokból lehetőséget. A Kivételek listában jelölje be a Megbízható Microsoft-szolgáltatások engedélyezése a tárfiók eléréséhez jelölőnégyzetet. Kattintson a Mentés gombra. További információ a virtuális hálózatok IoT Hub-támogatásáról.

    Megjegyzés:

    A fenti lépéseket el kell végeznie ahhoz, hogy a felügyelt identitást a megfelelő hozzáféréshez rendelje, mielőtt a tárfiókot az IoT Hubban menti a felügyelt identitással való fájlfeltöltéshez. Várjon néhány percet a szerepkör-hozzárendelés propagálására.

  9. Az IoT Hub erőforráslapján lépjen a Fájlfeltöltés lapra.

  10. A megjelenő lapon válassza ki a blobtárolóban használni kívánt tárolót, konfigurálja a fájlértesítési beállításokat, az SAS TTL-t, az alapértelmezett TTL-t és a maximális kézbesítési számot igény szerint. Válassza ki az előnyben részesített hitelesítési típust, és kattintson a Mentés gombra. Ha ebben a lépésben hibaüzenet jelenik meg, ideiglenesen állítsa be a tárfiókot úgy, hogy engedélyezze a hozzáférést a Minden hálózatból, majd próbálkozzon újra. A fájlfeltöltési konfiguráció befejeződése után konfigurálhatja a tűzfalat a tárfiókon.

    Screen shot that shows file upload with msi.

    Megjegyzés:

    A fájlfeltöltési forgatókönyvben a hubnak és az eszköznek is csatlakoznia kell a tárfiókhoz. A fenti lépések az IoT Hub és a tárfiók kívánt hitelesítési típussal való csatlakoztatására használhatók. Továbbra is csatlakoztatnia kell az eszközt a tárolóhoz az SAS URI használatával. Ma az SAS URI kapcsolati sztring használatával jön létre. Hamarosan támogatást adunk a felügyelt identitással rendelkező SAS URI létrehozásához. Kövesse a fájlfeltöltés lépéseit.

Tömeges eszközimportálás/-exportálás konfigurálása felügyelt identitásokkal

Az IoT Hub támogatja az eszközök adatainak tömeges importálását/exportálását az ügyfél által biztosított tárolóblobból vagy azokba. Ehhez a funkcióhoz az IoT Hub és a tárfiók közötti kapcsolat szükséges.

  1. Az Azure Portalon lépjen a tárfiókra.

  2. Select Access control (IAM).

  3. Válassza a Szerepkör-hozzárendelés hozzáadása > lehetőséget.

    Screenshot showing Access control (IAM) page with Add role assignment menu open.

  4. A Szerepkör lapon válassza a Storage Blob Data Közreműködő lehetőséget. (Ne válassza a Közreműködő vagy tárfiók közreműködője.)

  5. A Tagok lapon válassza a Felügyelt identitás, majd a Tagok kijelölése lehetőséget.

  6. Felhasználó által hozzárendelt felügyelt identitások esetén válassza ki az előfizetést, válassza ki a felhasználó által hozzárendelt felügyelt identitást, majd válassza ki a felhasználó által hozzárendelt felügyelt identitást.

  7. Rendszer által hozzárendelt felügyelt identitások esetén válassza ki az előfizetést, válassza az Összes rendszer által hozzárendelt felügyelt identitás lehetőséget, majd válassza ki az IoT Hub erőforrásnevét.

  8. A szerepkör hozzárendeléséhez a Felülvizsgálat + hozzárendelés lapon válassza a Felülvizsgálat + hozzárendelés lehetőséget.

    További információ a szerepkör-hozzárendelésekről: Azure-szerepkörök hozzárendelése az Azure Portal használatával

REST API vagy SDK használata importálási és exportálási feladatokhoz

Most már használhatja az Azure IoT REST API-kat importálási és exportálási feladatok létrehozásához. A kérelem törzsében a következő tulajdonságokat kell megadnia:

  • storageAuthenticationType: Állítsa az értéket identityBased értékre.
  • inputBlobContainerUri: Ezt a tulajdonságot csak az importálási feladatban állíthatja be.
  • outputBlobContainerUri: Állítsa be ezt a tulajdonságot az importálási és exportálási feladatokhoz is.
  • identitás: Állítsa be az értéket a használni kívánt felügyelt identitásra.

Az Azure IoT Hub SDK-k is támogatják ezt a funkciót a szolgáltatásügyfél beállításjegyzék-kezelőjében. Az alábbi kódrészlet bemutatja, hogyan kezdeményezhet importálási vagy exportálási feladatot a C# SDK használatával.

C# kódrészlet

    // Create an export job
 
    using RegistryManager srcRegistryManager = RegistryManager.CreateFromConnectionString(hubConnectionString);
 
    JobProperties jobProperties = JobProperties.CreateForExportJob(
        outputBlobContainerUri: blobContainerUri,
        excludeKeysInExport: false,
        storageAuthenticationType: StorageAuthenticationType.IdentityBased,
        identity: new ManagedIdentity
        {
            userAssignedIdentity = userDefinedManagedIdentityResourceId
        });
    // Create an import job
    
    using RegistryManager destRegistryManager = RegistryManager.CreateFromConnectionString(hubConnectionString);
 
    JobProperties jobProperties = JobProperties.CreateForImportJob(
        inputBlobContainerUri: blobContainerUri,
        outputBlobContainerUri: blobContainerUri,
        storageAuthenticationType: StorageAuthenticationType.IdentityBased,
        identity: new ManagedIdentity
        {
            userAssignedIdentity = userDefinedManagedIdentityResourceId
        });

Python-kódrészlet

# see note below
iothub_job_manager = IoTHubJobManager("<IoT Hub connection string>")

# Create an import job
result = iothub_job_manager.create_import_export_job(JobProperties(
    type="import",
    input_blob_container_uri="<input container URI>",
    output_blob_container_uri="<output container URI>",
    storage_authentication_type="identityBased",
    identity=ManagedIdentity(
        user_assigned_identity="<resource ID of user assigned managed identity>"
    )
))

# Create an export job
result = iothub_job_manager.create_import_export_job(JobProperties(
    type="export",
    output_blob_container_uri="<output container URI>",
    storage_authentication_type="identityBased",
    exclude_keys_in_export=True,
    identity=ManagedIdentity(
        user_assigned_identity="<resource ID of user assigned managed identity>"
    ) 
))

Megjegyzés:

  • Ha a StorageAuthenticationType identityBased értékre van állítva, és a userAssignedIdentity tulajdonság nem null értékű, a feladatok a megadott felhasználó által hozzárendelt felügyelt identitást fogják használni.
  • Ha az IoT Hub nincs konfigurálva a userAssignedIdentity szolgáltatásban megadott felhasználó által hozzárendelt felügyelt identitással, a feladat sikertelen lesz.
  • Ha a storageAuthenticationTypeidentityBased a userAssignedIdentity tulajdonság null értékű, a feladatok rendszer által hozzárendelt identitást használnak.
  • Ha az IoT Hub nem a felhasználó által hozzárendelt felügyelt identitással van konfigurálva, a feladat meghiúsul.
  • Ha a StorageAuthenticationType identityBased értékre van állítva, és sem a felhasználó által hozzárendelt, sem a rendszer által hozzárendelt felügyelt identitások nincsenek konfigurálva a központban, a feladat sikertelen lesz.

SDK-minták

Következő lépések

Az IoT Hub funkcióiról az alábbi hivatkozásokra kattintva tudhat meg többet: