Sdílet prostřednictvím


Podpora spravovaných identit ve službě IoT Hub

Spravované identity zabezpečeným způsobem poskytují službám Azure automaticky spravovanou identitu v Microsoft Entra ID. Díky identitám vývojáři nemusí spravovat přihlašovací údaje. Existují dva typy spravovaných identit: přiřazené systémem a přiřazené uživatelem. IoT Hub podporuje oba.

Ve službě IoT Hub je možné spravované identity použít k odchozímu připojení ze služby IoT Hub k jiným službám Azure pro funkce, jako je směrování zpráv, nahrávání souborů a hromadný import/export zařízení. V tomto článku se dozvíte, jak používat spravované identity přiřazené systémem a uživatelem ve službě IoT Hub pro různé funkce.

Požadavky

Spravovaná identita přiřazená systémem

Povolení nebo zakázání spravované identity přiřazené systémem na webu Azure Portal

  1. Přihlaste se k webu Azure Portal a přejděte do centra IoT.

  2. V části Nastavení zabezpečení v navigační nabídce vyberte Možnost Identita.

  3. Vyberte kartu Přiřazená systémem.

  4. Nastavte stav spravované identity přiřazené systémem na Zapnuto nebo Vypnuto a pak vyberte Uložit.

    Poznámka:

    Spravovanou identitu přiřazenou systémem nemůžete vypnout, když se používá. Před zakázáním funkce se ujistěte, že žádné vlastní koncové body nepoužívají ověřování spravované identity přiřazené systémem.

    Snímek obrazovky znázorňující, kde zapnout spravovanou identitu přiřazenou systémem pro centrum IoT

Povolení spravované identity přiřazené systémem při vytváření centra pomocí šablony ARM

Pokud chcete povolit spravovanou identitu přiřazenou systémem ve službě IoT Hub v době zřizování prostředků, použijte níže šablonu Azure Resource Manageru (ARM).

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

Po nahrazení hodnot pro prostředek namelocationSKU.name a SKU.tierpomocí Azure CLI můžete prostředek nasadit do existující skupiny prostředků pomocí:

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>

Po vytvoření prostředku můžete pomocí Azure CLI načíst systém přiřazený k vašemu centru:

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

Spravovaná identita přiřazená uživatelem

V této části se dozvíte, jak přidat a odebrat spravovanou identitu přiřazenou uživatelem z centra IoT pomocí webu Azure Portal.

  1. Nejprve musíte vytvořit spravovanou identitu přiřazenou uživatelem jako samostatný prostředek. Uděláte to podle pokynů v tématu Vytvoření spravované identity přiřazené uživatelem.

  2. Přejděte do centra IoT a na portálu IoT Hub přejděte na Identitu .

  3. V části Karta Přiřazení uživatele klikněte na Možnost Přidružit spravovanou identitu přiřazenou uživatelem. Zvolte spravovanou identitu přiřazenou uživatelem, kterou chcete přidat do centra, a potom klikněte na vybrat.

  4. Identitu přiřazenou uživatelem můžete odebrat z centra IoT. Zvolte identitu přiřazenou uživatelem, kterou chcete odebrat, a klikněte na tlačítko Odebrat . Všimněte si, že ho odebíráte jenom ze služby IoT Hub a toto odebrání neodstraní identitu přiřazenou uživatelem jako prostředek. Pokud chcete odstranit identitu přiřazenou uživatelem jako prostředek, postupujte podle pokynů v tématu Odstranění spravované identity přiřazené uživatelem.

    Snímek obrazovky znázorňující, jak přidat spravovanou identitu přiřazenou uživatelem pro centrum I O T

Povolení spravované identity přiřazené uživatelem při vytváření centra pomocí šablony ARM

Následující příklad šablony lze použít k vytvoření centra se spravovanou identitou přiřazenou uživatelem. Tato šablona vytvoří jednu identitu přiřazenou uživatelem s názvem [iothub-name-provided]-identity a přiřazenou k vytvořenému centru IoT. Šablonu můžete podle potřeby změnit tak, aby se přidalo více identit přiřazených uživatelem.

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

Po vytvoření prostředku můžete načíst spravovanou identitu přiřazenou uživatelem v centru pomocí Azure CLI:

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

Výchozí připojení ze služby IoT Hub k jiným prostředkům Azure

Spravované identity je možné použít k odchozímu připojení ze služby IoT Hub do jiných služeb Azure pro směrování zpráv, nahrávání souborů a hromadný import a export zařízení. Můžete zvolit, kterou spravovanou identitu použít pro každé výchozí připojení služby IoT Hub ke koncovým bodům vlastněným zákazníkem, včetně účtů úložiště, center událostí a koncových bodů služby Service Bus.

Poznámka:

Přístup k privátním prostředkům službě IoT Hub poskytuje pouze spravovaná identita přiřazená systémem. Pokud chcete použít spravovanou identitu přiřazenou uživatelem, je potřeba povolit veřejný přístup k těmto privátním prostředkům, aby bylo možné připojení povolit.

Konfigurace směrování zpráv se spravovanými identitami

V této části jako příklad používáme směrování zpráv do vlastního koncového bodu služby Event Hubs. Příklad platí i pro další vlastní koncové body směrování.

  1. Přejděte do centra událostí na webu Azure Portal a přiřaďte spravované identitě správný přístup.

  2. Vyberte Řízení přístupu (IAM) .

  3. Vyberte Přidat > přiřazení role.

    Snímek obrazovky zobrazující stránku Řízení přístupu (IAM) s otevřenou nabídkou Přidat přiřazení role

  4. Na kartě Role vyberte odesílatele dat služby Azure Event Hubs.

    Poznámka:

    Jako roli účtu úložiště vyberte Přispěvatel dat objektů blob služby Storage (ne Přispěvatel nebo Přispěvatel účtu úložiště). Pro sběrnici service bus vyberte odesílatele dat služby Azure Service Bus.

    Snímek obrazovky zobrazující stránku Přidat přiřazení role s vybranou kartou Role

  5. Na kartě Členové vyberte Spravovaná identita a pak vyberte Vybrat členy.

  6. U spravovaných identit přiřazených uživatelem vyberte vaše předplatné, vyberte spravovanou identitu přiřazenou uživatelem a pak vyberte spravovanou identitu přiřazenou uživatelem.

  7. U spravovaných identit přiřazených systémem vyberte své předplatné, vyberte Všechny spravované identity přiřazené systémem a pak vyberte název prostředku služby IoT Hub.

  8. Na kartě Zkontrolovat a přiřadit vyberte možnost Zkontrolovat a přiřadit a přiřaďte roli.

    Další informace o přiřazeních rolí najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal.

  9. Pokud potřebujete omezit připojení k vlastnímu koncovému bodu prostřednictvím virtuální sítě, musíte zapnout důvěryhodnou výjimku od Microsoftu první strany, aby služba IoT Hub získala přístup ke konkrétnímu koncovému bodu. Pokud například přidáváte vlastní koncový bod centra událostí, přejděte na kartu Brány firewall a virtuální sítě v centru událostí a povolte možnost Povolit přístup z vybraných sítí . V seznamu Výjimky zaškrtněte políčko Povolit důvěryhodným služby Microsoft pro přístup k centrem událostí. Klikněte na tlačítko Uložit. To platí také pro účet úložiště a službu Service Bus. Přečtěte si další informace o podpoře služby IoT Hub pro virtuální sítě.

    Poznámka:

    Před přidáním centra událostí jako vlastního koncového bodu ve službě IoT Hub je potřeba provést výše uvedené kroky, abyste přiřadili spravovanou identitu správným přístupem. Počkejte několik minut, než se přiřazení role rozšíří.

  10. Pak přejděte do centra IoT. V centru přejděte na Směrování zpráv a pak vyberte Přidat.

  11. Na kartě Koncový bod vytvořte koncový bod pro centrum událostí zadáním následujících informací:

    Parametr Hodnota
    Typ koncového bodu Vyberte Event Hubs.
    Název koncového bodu Zadejte jedinečný název nového koncového bodu nebo vyberte Vybrat existující a zvolte existující koncový bod služby Event Hubs.
    Obor názvů služby Event Hubs V rozevírací nabídce vyberte existující obor názvů služby Event Hubs ve vašem předplatném.
    Instance centra událostí Pomocí rozevírací nabídky vyberte existující centrum událostí ve vašem oboru názvů.
    Typ ověřování Vyberte Uživatelem přiřazenou a pak pomocí rozevírací nabídky vyberte identitu přiřazenou uživatelem, kterou jste vytvořili v centru událostí.

    Snímek obrazovky znázorňující koncový bod centra událostí s ověřováním přiřazeným uživatelem

  12. Vyberte Vytvořit + další. Můžete pokračovat v průvodci a vytvořit trasu, která odkazuje na tento koncový bod, nebo můžete průvodce zavřít.

Typ ověřování existujícího vlastního koncového bodu můžete změnit. Ke změně koncového bodu použijte následující postup:

  1. V centru IoT vyberte směrování zpráv v levém navigačním podokně a pak vlastní koncové body.

  2. Zaškrtněte políčko pro vlastní koncový bod, který chcete upravit, a pak vyberte Změnit typ ověřování.

  3. Zvolte nový typ ověřování pro tento koncový bod a pak vyberte Uložit.

Konfigurace nahrávání souborů pomocí spravovaných identit

Funkce nahrávání souborů služby IoT Hub umožňuje zařízením nahrávat soubory do účtu úložiště vlastněného zákazníkem. Aby bylo možné nahrát soubor do funkce, musí mít IoT Hub připojení k účtu úložiště. Podobně jako u směrování zpráv můžete vybrat upřednostňovaný typ ověřování a spravovanou identitu pro výchozí připojení služby IoT Hub k vašemu účtu Azure Storage.

  1. Na webu Azure Portal přejděte ke svému účtu úložiště.

  2. Vyberte Řízení přístupu (IAM) .

  3. Vyberte Přidat > přiřazení role.

    Snímek obrazovky zobrazující stránku Řízení přístupu (IAM) s otevřenou nabídkou Přidat přiřazení role

  4. Na kartě Role vyberte Přispěvatel dat objektů blob služby Storage. (Nevybírejte Přispěvatel nebo Přispěvatel účtu úložiště.)

  5. Na kartě Členové vyberte Spravovaná identita a pak vyberte Vybrat členy.

  6. U spravovaných identit přiřazených uživatelem vyberte vaše předplatné, vyberte spravovanou identitu přiřazenou uživatelem a pak vyberte spravovanou identitu přiřazenou uživatelem.

  7. U spravovaných identit přiřazených systémem vyberte své předplatné, vyberte Všechny spravované identity přiřazené systémem a pak vyberte název prostředku služby IoT Hub.

  8. Na kartě Zkontrolovat a přiřadit vyberte možnost Zkontrolovat a přiřadit a přiřaďte roli.

    Další informace o přiřazeních rolí najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal.

    Pokud potřebujete omezit připojení k vašemu účtu úložiště prostřednictvím virtuální sítě, musíte zapnout důvěryhodnou výjimku od Microsoftu první strany, aby služba IoT Hub získala přístup k účtu úložiště. Na stránce prostředku účtu úložiště přejděte na kartu Brány firewall a virtuální sítě a povolte možnost Povolit přístup z vybraných sítí . V seznamu Výjimky zaškrtněte políčko Povolit důvěryhodným služby Microsoft přístup k tomuto účtu úložiště. Klikněte na tlačítko Uložit. Přečtěte si další informace o podpoře služby IoT Hub pro virtuální sítě.

    Poznámka:

    Před uložením účtu úložiště ve službě IoT Hub pro nahrání souborů pomocí spravované identity musíte provést výše uvedené kroky, abyste přiřadili spravovanou identitu správným přístupem. Počkejte několik minut, než se přiřazení role rozšíří.

  9. Na stránce prostředku centra IoT přejděte na kartu Nahrání souboru.

  10. Na stránce, která se zobrazí, vyberte kontejner, který chcete použít v úložišti objektů blob, nakonfigurujte nastavení oznámení o souboru, hodnotu TTL SAS, výchozí hodnotu TTL a maximální počet doručení podle potřeby. Zvolte upřednostňovaný typ ověřování a klikněte na Uložit. Pokud se v tomto kroku zobrazí chyba, dočasně nastavte účet úložiště tak, aby povolovala přístup ze všech sítí, a zkuste to znovu. Po dokončení konfigurace nahrávání souborů můžete nakonfigurovat bránu firewall pro účet úložiště.

    Snímek obrazovky znázorňující nahrání souboru pomocí msi

    Poznámka:

    Ve scénáři nahrávání souborů se centrum i vaše zařízení musí připojit pomocí účtu úložiště. Výše uvedený postup slouží k připojení centra IoT k účtu úložiště s požadovaným typem ověřování. Stále potřebujete připojit zařízení k úložišti pomocí identifikátoru URI SAS. Dnes se identifikátor URI SAS generuje pomocí připojovací řetězec. Brzy přidáme podporu pro generování identifikátoru URI SAS se spravovanou identitou. Postupujte podle kroků v nahrání souboru.

Konfigurace hromadného importu a exportu zařízení se spravovanými identitami

IoT Hub podporuje funkce hromadného importu a exportu informací o zařízeních z a do objektu blob úložiště poskytovaného zákazníkem. Tato funkce vyžaduje připojení ze služby IoT Hub k účtu úložiště.

  1. Na webu Azure Portal přejděte ke svému účtu úložiště.

  2. Vyberte Řízení přístupu (IAM) .

  3. Vyberte Přidat > přiřazení role.

    Snímek obrazovky zobrazující stránku Řízení přístupu (IAM) s otevřenou nabídkou Přidat přiřazení role

  4. Na kartě Role vyberte Přispěvatel dat objektů blob služby Storage. (Nevybírejte Přispěvatel nebo Přispěvatel účtu úložiště.)

  5. Na kartě Členové vyberte Spravovaná identita a pak vyberte Vybrat členy.

  6. U spravovaných identit přiřazených uživatelem vyberte vaše předplatné, vyberte spravovanou identitu přiřazenou uživatelem a pak vyberte spravovanou identitu přiřazenou uživatelem.

  7. U spravovaných identit přiřazených systémem vyberte své předplatné, vyberte Všechny spravované identity přiřazené systémem a pak vyberte název prostředku služby IoT Hub.

  8. Na kartě Zkontrolovat a přiřadit vyberte možnost Zkontrolovat a přiřadit a přiřaďte roli.

    Další informace o přiřazeních rolí najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal.

Použití rozhraní REST API nebo sady SDK pro úlohy importu a exportu

K vytváření úloh importu a exportu teď můžete použít rozhraní AZURE IoT REST API. V textu požadavku budete muset zadat následující vlastnosti:

  • storageAuthenticationType: Nastavte hodnotu na identityBased.
  • inputBlobContainerUri: Nastavte tuto vlastnost pouze v úloze importu.
  • outputBlobContainerUri: Nastavte tuto vlastnost pro úlohy importu i exportu.
  • identita: Nastavte hodnotu na spravovanou identitu, kterou chcete použít.

Sady SDK služby Azure IoT Hub podporují tuto funkci také ve správci registru klienta služby. Následující fragment kódu ukazuje, jak pomocí sady C# SDK zahájit úlohu importu nebo exportu.

Fragment kódu jazyka C#

    // 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
        });

Fragment kódu Pythonu

# 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>"
    ) 
))

Poznámka:

  • Pokud je vlastnost storageAuthenticationType nastavená na identityBased a vlastnost userAssignedIdentity není null, budou úlohy používat zadanou spravovanou identitu přiřazenou uživatelem.
  • Pokud není centrum IoT nakonfigurované se spravovanou identitou přiřazenou uživatelem zadanou v userAssignedIdentity, úloha selže.
  • Pokud storageAuthenticationType je nastavena na identityBased userAssignedIdentity vlastnost null, úlohy budou používat identitu přiřazenou systémem.
  • Pokud ve službě IoT Hub není nakonfigurovaná spravovaná identita přiřazená uživatelem, úloha selže.
  • Pokud je vlastnost storageAuthenticationType nastavená na identityBased a spravovaná identita přiřazená uživatelem ani spravované identity přiřazené systémem se v centru nenakonfigurují, úloha selže.

Ukázky SDK

Další kroky

Další informace o funkcích služby IoT Hub najdete na následujících odkazech: