Obsługa tożsamości zarządzanych w usłudze IoT Hub
Zarządzane tożsamości zapewniają usługom Azure automatycznie zarządzaną tożsamość w Microsoft Entra ID w bezpieczny sposób. Dzięki temu programiści nie muszą zarządzać poświadczeniami i udostępniać tożsamości. Istnieją dwa typy tożsamości zarządzanych: przypisana przez system i przypisana przez użytkownika. Usługa IoT Hub obsługuje oba te typy.
W usłudze IoT Hub tożsamości zarządzane mogą służyć do łączenia usługi IoT Hub z innymi usługami platformy Azure na potrzeby funkcji takich jak routing komunikatów, przekazywanie plików i zbiorcze importowanie/eksportowanie urządzeń. Z tego artykułu dowiesz się, jak używać tożsamości zarządzanych przypisanych przez system i przypisanych przez użytkownika w centrum IoT Dla różnych funkcji.
Wymagania wstępne
Poznaj różnice między tożsamością zarządzaną przypisaną przez system i przypisaną przez użytkownika w temacie Co to są tożsamości zarządzane dla zasobów platformy Azure?
Centrum IoT w ramach subskrypcji platformy Azure. Jeśli nie masz jeszcze centrum, możesz wykonać kroki opisane w temacie Tworzenie centrum IoT Hub.
Tożsamość zarządzana przypisana przez system
Tożsamość zarządzaną przypisaną przez system można włączyć lub wyłączyć w witrynie Azure Portal
Zaloguj się do witryny Azure Portal i przejdź do centrum IoT Hub.
Wybierz pozycję Tożsamość w sekcji Ustawienia zabezpieczeń menu nawigacji.
Wybierz kartę Przypisane przez system.
Ustaw pozycję Stan tożsamości zarządzanej przypisanej przez system na wartość Włączone lub Wyłączone, a następnie wybierz pozycję Zapisz.
Uwaga
Nie można wyłączyć przypisanej przez system tożsamości zarządzanej, gdy jest ona używana. Przed wyłączeniem tej funkcji upewnij się, że żadne niestandardowe punkty końcowe nie korzystają z uwierzytelniania tożsamości zarządzanej przypisanej przez system.
Tożsamość zarządzana przypisana przez użytkownika
W tej sekcji dowiesz się, jak dodać i usunąć tożsamość zarządzaną przypisaną przez użytkownika z centrum IoT Hub przy użyciu witryny Azure Portal.
Najpierw należy utworzyć tożsamość zarządzaną przypisaną przez użytkownika jako zasób autonomiczny. W tym celu możesz postępować zgodnie z instrukcjami w temacie Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika.
Przejdź do centrum IoT Hub, przejdź do pozycji Tożsamość w portalu usługi IoT Hub.
Na karcie Przypisane przez użytkownika kliknij pozycję Skojarz tożsamość zarządzaną przypisaną przez użytkownika. Wybierz tożsamość zarządzaną przypisaną przez użytkownika, którą chcesz dodać do centrum, a następnie kliknij pozycję Wybierz.
Tożsamość przypisaną przez użytkownika można usunąć z centrum IoT Hub. Wybierz tożsamość przypisaną przez użytkownika, którą chcesz usunąć, a następnie kliknij przycisk Usuń . Pamiętaj, że usuwasz go tylko z centrum IoT, a to usunięcie nie powoduje usunięcia tożsamości przypisanej przez użytkownika jako zasobu. Aby usunąć tożsamość przypisaną przez użytkownika jako zasób, postępuj zgodnie z instrukcjami w temacie Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika.
Łączność wychodząca z usługi IoT Hub do innych zasobów platformy Azure
Tożsamości zarządzane mogą służyć do łączności wychodzącej z usługi IoT Hub do innych usług platformy Azure. Możesz wybrać tożsamość zarządzaną używaną dla każdej łączności wychodzącej usługi IoT Hub z punktami końcowymi należącymi do klienta, w tym kontami magazynu, centrami zdarzeń i punktami końcowymi usługi Service Bus.
Uwaga
Tylko tożsamość zarządzana przypisana przez system zapewnia usłudze IoT Hub dostęp do zasobów prywatnych. Jeśli chcesz użyć tożsamości zarządzanej przypisanej przez użytkownika, należy włączyć publiczny dostęp do tych zasobów prywatnych, aby umożliwić łączność.
Konfigurowanie routingu komunikatów przy użyciu tożsamości zarządzanych
W tej sekcji jako przykład użyjemy routingu komunikatów do niestandardowego punktu końcowego usługi Event Hubs. Przykład dotyczy również innych niestandardowych punktów końcowych routingu.
Przejdź do centrum zdarzeń w witrynie Azure Portal, aby przypisać tożsamość zarządzaną do odpowiedniego dostępu.
Wybierz pozycję Kontrola dostępu (IAM).
Wybierz pozycję Dodaj > przypisanie roli.
Na karcie Rola wybierz pozycję Nadawca danych usługi Azure Event Hubs.
Uwaga
W przypadku konta magazynu wybierz pozycję Współautor danych obiektu blob usługi Storage (nie współautor lub współautor konta magazynu) jako rolę. W przypadku magistrali usług wybierz pozycję Nadawca danych usługi Azure Service Bus.
Na karcie Członkowie wybierz pozycję Tożsamość zarządzana, a następnie wybierz pozycję Wybierz członków.
W przypadku tożsamości zarządzanych przypisanych przez użytkownika wybierz subskrypcję, wybierz pozycję Tożsamość zarządzana przypisana przez użytkownika, a następnie wybierz tożsamość zarządzaną przypisaną przez użytkownika.
W przypadku tożsamości zarządzanych przypisanych przez system wybierz subskrypcję, wybierz pozycję Wszystkie tożsamości zarządzane przypisane przez system, a następnie wybierz nazwę zasobu usługi IoT Hub.
Na karcie Przeglądanie i przypisywanie wybierz pozycję Przejrzyj i przypisz, aby przypisać rolę.
Aby uzyskać więcej informacji na temat przypisań ról, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
Jeśli musisz ograniczyć łączność z niestandardowym punktem końcowym za pośrednictwem sieci wirtualnej, musisz włączyć zaufany wyjątek firmy Microsoft od pierwszej firmy, aby zapewnić usłudze IoT Hub dostęp do określonego punktu końcowego. Jeśli na przykład dodajesz niestandardowy punkt końcowy centrum zdarzeń, przejdź do karty Zapory i sieci wirtualne w centrum zdarzeń i włącz opcję Zezwalaj na dostęp z wybranych sieci . Na liście Wyjątki zaznacz pole wyboru Zezwalaj na dostęp do centrów zdarzeń za pomocą zaufanych usługi firmy Microsoft. Kliknij przycisk Zapisz. Dotyczy to również konta magazynu i usługi Service Bus. Dowiedz się więcej o obsłudze usługi IoT Hub dla sieci wirtualnych.
Uwaga
Przed dodaniem centrum zdarzeń jako niestandardowego punktu końcowego w usłudze IoT Hub należy wykonać powyższe kroki, aby przypisać tożsamość zarządzaną. Zaczekaj kilka minut na propagację przypisania roli.
Następnie przejdź do centrum IoT Hub. W centrum przejdź do pozycji Routing komunikatów, a następnie wybierz pozycję Dodaj.
Na karcie Punkt końcowy utwórz punkt końcowy dla centrum zdarzeń, podając następujące informacje:
Parametr Wartość Typ punktu końcowego Wybierz pozycję Event Hubs. Nazwa punktu końcowego Podaj unikatową nazwę nowego punktu końcowego lub wybierz pozycję Wybierz istniejący , aby wybrać istniejący punkt końcowy usługi Event Hubs. Przestrzeń nazw usługi Event Hubs Użyj menu rozwijanego, aby wybrać istniejącą przestrzeń nazw usługi Event Hubs w ramach subskrypcji. Wystąpienie centrum zdarzeń Użyj menu rozwijanego, aby wybrać istniejące centrum zdarzeń w przestrzeni nazw. Authentication type (Typ uwierzytelniania) Wybierz pozycję Przypisane przez użytkownika, a następnie użyj menu rozwijanego, aby wybrać tożsamość przypisaną przez użytkownika utworzoną w centrum zdarzeń. Wybierz pozycję Utwórz i dalej. Możesz kontynuować pracę kreatora, aby utworzyć trasę wskazującą ten punkt końcowy lub zamknąć kreatora.
Możesz zmienić typ uwierzytelniania istniejącego niestandardowego punktu końcowego. Aby zmodyfikować punkt końcowy, wykonaj następujące czynności:
W centrum IoT wybierz pozycję Routing komunikatów w okienku nawigacji po lewej stronie, a następnie pozycję Niestandardowe punkty końcowe.
Zaznacz pole wyboru niestandardowego punktu końcowego, który chcesz zmodyfikować, a następnie wybierz pozycję Zmień typ uwierzytelniania.
Wybierz nowy typ uwierzytelniania dla tego punktu końcowego, a następnie wybierz pozycję Zapisz.
Konfigurowanie przekazywania plików przy użyciu tożsamości zarządzanych
Funkcja przekazywania plików usługi IoT Hub umożliwia urządzeniom przekazywanie plików na konto magazynu należącego do klienta. Aby umożliwić przekazywanie pliku do funkcji, usługa IoT Hub musi mieć łączność z kontem magazynu. Podobnie jak w przypadku routingu komunikatów, możesz wybrać preferowany typ uwierzytelniania i tożsamość zarządzaną dla łączności wychodzącej usługi IoT Hub z kontem usługi Azure Storage.
W witrynie Azure Portal przejdź do swojego konta magazynu.
Wybierz pozycję Kontrola dostępu (IAM).
Wybierz pozycję Dodaj > przypisanie roli.
Na karcie Rola wybierz pozycję Współautor danych obiektu blob usługi Storage. (Nie wybieraj Współautor lub Współautor konta magazynu).
Na karcie Członkowie wybierz pozycję Tożsamość zarządzana, a następnie wybierz pozycję Wybierz członków.
W przypadku tożsamości zarządzanych przypisanych przez użytkownika wybierz subskrypcję, wybierz pozycję Tożsamość zarządzana przypisana przez użytkownika, a następnie wybierz tożsamość zarządzaną przypisaną przez użytkownika.
W przypadku tożsamości zarządzanych przypisanych przez system wybierz subskrypcję, wybierz pozycję Wszystkie tożsamości zarządzane przypisane przez system, a następnie wybierz nazwę zasobu usługi IoT Hub.
Na karcie Przeglądanie i przypisywanie wybierz pozycję Przejrzyj i przypisz, aby przypisać rolę.
Aby uzyskać więcej informacji na temat przypisań ról, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
Jeśli musisz ograniczyć łączność z kontem magazynu za pośrednictwem sieci wirtualnej, musisz włączyć wyjątek zaufanej firmy Microsoft, aby zapewnić usłudze IoT Hub dostęp do konta magazynu. Na stronie zasobu konta magazynu przejdź do karty Zapory i sieci wirtualne i włącz opcję Zezwalaj na dostęp z wybranych sieci . Na liście Wyjątki zaznacz pole wyboru Zezwalaj na dostęp do tego konta magazynu za pomocą zaufanego usługi firmy Microsoft. Kliknij przycisk Zapisz. Dowiedz się więcej o obsłudze usługi IoT Hub dla sieci wirtualnych.
Uwaga
Przed zapisaniem konta magazynu w usłudze IoT Hub w celu przekazania plików przy użyciu tożsamości zarządzanej należy wykonać powyższe kroki. Zaczekaj kilka minut na propagację przypisania roli.
Na stronie zasobu centrum IoT hub przejdź do karty Przekazywanie plików.
Na wyświetlonej stronie wybierz kontener, który ma być używany w magazynie obiektów blob, skonfiguruj ustawienia powiadomień dotyczących plików, czas wygaśnięcia sygnatury dostępu współdzielonego, domyślny czas wygaśnięcia i maksymalną liczbę dostarczania zgodnie z potrzebami. Wybierz preferowany typ uwierzytelniania, a następnie kliknij przycisk Zapisz. Jeśli w tym kroku wystąpi błąd, tymczasowo ustaw konto magazynu, aby zezwolić na dostęp ze wszystkich sieci, a następnie spróbuj ponownie. Zaporę można skonfigurować na koncie magazynu po zakończeniu konfiguracji przekazywania plików.
Uwaga
W scenariuszu przekazywania plików zarówno centrum, jak i urządzenie muszą nawiązać połączenie z kontem magazynu. Powyższe kroki dotyczą łączenia centrum IoT Hub z kontem magazynu z żądanym typem uwierzytelniania. Nadal musisz połączyć urządzenie z magazynem przy użyciu identyfikatora URI sygnatury dostępu współdzielonego. Obecnie identyfikator URI sygnatury dostępu współdzielonego jest generowany przy użyciu parametry połączenia. Wkrótce dodamy obsługę generowania identyfikatora URI sygnatury dostępu współdzielonego z tożsamością zarządzaną. Wykonaj kroki opisane w artykule Przekazywanie pliku.
Konfigurowanie zbiorczego importowania/eksportowania urządzeń przy użyciu tożsamości zarządzanych
Usługa IoT Hub obsługuje funkcje importowania/eksportowania informacji o urządzeniu zbiorczo z lub do udostępnionego przez klienta obiektu blob magazynu. Ta funkcja wymaga łączności z usługi IoT Hub do konta magazynu.
W witrynie Azure Portal przejdź do swojego konta magazynu.
Wybierz pozycję Kontrola dostępu (IAM).
Wybierz pozycję Dodaj > przypisanie roli.
Na karcie Rola wybierz pozycję Współautor danych obiektu blob usługi Storage. (Nie wybieraj Współautor lub Współautor konta magazynu).
Na karcie Członkowie wybierz pozycję Tożsamość zarządzana, a następnie wybierz pozycję Wybierz członków.
W przypadku tożsamości zarządzanych przypisanych przez użytkownika wybierz subskrypcję, wybierz pozycję Tożsamość zarządzana przypisana przez użytkownika, a następnie wybierz tożsamość zarządzaną przypisaną przez użytkownika.
W przypadku tożsamości zarządzanych przypisanych przez system wybierz subskrypcję, wybierz pozycję Wszystkie tożsamości zarządzane przypisane przez system, a następnie wybierz nazwę zasobu usługi IoT Hub.
Na karcie Przeglądanie i przypisywanie wybierz pozycję Przejrzyj i przypisz, aby przypisać rolę.
Aby uzyskać więcej informacji na temat przypisań ról, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal
Używanie interfejsu API REST lub zestawu SDK do importowania i eksportowania zadań
Teraz możesz używać interfejsów API REST usługi Azure IoT do tworzenia zadań importowania i eksportowania. W treści żądania należy podać następujące właściwości:
- storageAuthenticationType: ustaw wartość na identityBased.
- inputBlobContainerUri: ustaw tę właściwość tylko w zadaniu importu.
- outputBlobContainerUri: ustaw tę właściwość zarówno dla zadań importu, jak i eksportu.
- identity: ustaw wartość na tożsamość zarządzaną, która ma być używana.
Zestawy SDK usługi Azure IoT Hub obsługują również tę funkcję w menedżerze rejestru klienta usługi. Poniższy fragment kodu pokazuje, jak zainicjować zadanie importu lub zadanie eksportu przy użyciu zestawu SDK języka C#.
Fragment kodu w języku C#
// Create an export job
JobProperties jobProperties = JobProperties.CreateForExportJob(
outputBlobContainerUri: blobContainerUri,
excludeKeysInExport: false,
storageAuthenticationType: StorageAuthenticationType.IdentityBased,
identity: new ManagedIdentity
{
userAssignedIdentity = userDefinedManagedIdentityResourceId
});
// Create an import job
JobProperties jobProperties = JobProperties.CreateForImportJob(
inputBlobContainerUri: blobContainerUri,
outputBlobContainerUri: blobContainerUri,
storageAuthenticationType: StorageAuthenticationType.IdentityBased,
identity: new ManagedIdentity
{
userAssignedIdentity = userDefinedManagedIdentityResourceId
});
Fragment kodu w języku Python
# see note below
iothub_job_manager = IoTHubJobManager("<IoT Hub connection information>")
# 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>"
)
))
Uwaga
- Jeśli parametr storageAuthenticationType ma ustawioną wartość identityBased , a właściwość userAssignedIdentity nie ma wartości null, zadania będą używać określonej tożsamości zarządzanej przypisanej przez użytkownika.
- Jeśli centrum IoT nie jest skonfigurowane z tożsamością zarządzaną przypisaną przez użytkownika określoną w parametrze userAssignedIdentity, zadanie zakończy się niepowodzeniem.
- Jeśli parametr storageAuthenticationType ma ustawioną wartość identityBased właściwość userAssignedIdentity ma wartość null, zadania będą używać tożsamości przypisanej przez system.
- Jeśli centrum IoT nie jest skonfigurowane z tożsamością zarządzaną przypisaną przez użytkownika, zadanie zakończy się niepowodzeniem.
- Jeśli parametr storageAuthenticationType ma ustawioną wartość identityBased , a tożsamości zarządzane przypisane przez użytkownika ani przypisane przez system nie są skonfigurowane w centrum, zadanie zakończy się niepowodzeniem.
Przykłady dla zestawu SDK
Następne kroki
Skorzystaj z poniższych linków, aby dowiedzieć się więcej o funkcjach usługi IoT Hub: