Kontrolowanie dostępu do usługi IoT Hub przy użyciu identyfikatora Entra firmy Microsoft

Identyfikator entra firmy Microsoft umożliwia uwierzytelnianie żądań w interfejsach API usługi Azure IoT Hub, takich jak tworzenie tożsamości urządzenia i wywoływanie metody bezpośredniej. Możesz również użyć kontroli dostępu opartej na rolach (RBAC) platformy Azure, aby autoryzować te same interfejsy API usług. Korzystając ze sobą z tych technologii, można udzielić uprawnień dostępu do interfejsów API usługi IoT Hub do podmiotu zabezpieczeń firmy Microsoft Entra. Ten podmiot zabezpieczeń może być użytkownikiem, grupą lub jednostką usługi aplikacji.

Uwierzytelnianie dostępu przy użyciu identyfikatora Entra firmy Microsoft i kontrolowania uprawnień przy użyciu kontroli dostępu opartej na rolach platformy Azure zapewnia lepsze zabezpieczenia i łatwość korzystania z tokenów zabezpieczających. Aby zminimalizować potencjalne problemy z zabezpieczeniami związane z tokenami zabezpieczającymi, zalecamy wymuszanie uwierzytelniania firmy Microsoft w miarę możliwości.

Uwaga

Uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft nie jest obsługiwane w przypadku interfejsów API urządzeń usługi IoT Hub (takich jak komunikaty z urządzenia do chmury i aktualizowanie zgłoszonych właściwości). Użyj kluczy symetrycznych lub X.509 do uwierzytelniania urządzeń w usłudze IoT Hub.

Uwierzytelnianie i autoryzacja

Uwierzytelnianie to proces potwierdzania, że jesteś tym, kim jesteś. Uwierzytelnianie weryfikuje tożsamość użytkownika lub urządzenia w usłudze IoT Hub. Czasami jest skracany do AuthN. Autoryzacja to proces potwierdzania uprawnień dla uwierzytelnionego użytkownika lub urządzenia w usłudze IoT Hub. Określa ona zasoby i polecenia, do których masz dostęp, oraz czynności, które można wykonać za pomocą tych zasobów i poleceń. Autoryzacja jest czasami skracana do AuthZ.

Gdy podmiot zabezpieczeń firmy Microsoft Entra żąda dostępu do interfejsu API usługi IoT Hub, tożsamość jednostki jest najpierw uwierzytelniana. W przypadku uwierzytelniania żądanie musi zawierać token dostępu OAuth 2.0 w czasie wykonywania. Nazwa zasobu żądania tokenu to https://iothubs.azure.net. Jeśli aplikacja działa w zasobie platformy Azure, na przykład maszynie wirtualnej platformy Azure, aplikacji usługi Azure Functions lub aplikacji usługi aplikacja systemu Azure Service, może być reprezentowana jako tożsamość zarządzana.

Po uwierzytelnieniu podmiotu zabezpieczeń firmy Microsoft następnym krokiem jest autoryzacja. W tym kroku usługa IoT Hub używa usługi przypisania roli Entra firmy Microsoft, aby określić, jakie uprawnienia ma podmiot zabezpieczeń. Jeśli uprawnienia podmiotu zabezpieczeń są zgodne z żądanym zasobem lub interfejsem API, usługa IoT Hub autoryzuje żądanie. Dlatego ten krok wymaga przypisania co najmniej jednej roli platformy Azure do podmiotu zabezpieczeń. Usługa IoT Hub udostępnia wbudowane role, które mają wspólne grupy uprawnień.

Zarządzanie dostępem do usługi IoT Hub przy użyciu przypisania roli RBAC platformy Azure

W przypadku usługi Microsoft Entra ID i kontroli dostępu opartej na rolach usługa IoT Hub wymaga od podmiotu zabezpieczeń żądającego interfejsu API odpowiedniego poziomu uprawnień do autoryzacji. Aby nadać podmiotowi zabezpieczeń uprawnienie, nadaj mu przypisanie roli.

Aby zapewnić najmniejsze uprawnienia, zawsze przypisz odpowiednią rolę w najniższym możliwym zakresie zasobów, co prawdopodobnie jest zakresem usługi IoT Hub.

Usługa IoT Hub udostępnia następujące wbudowane role platformy Azure umożliwiające autoryzowanie dostępu do interfejsów API usługi IoT Hub przy użyciu identyfikatora Entra firmy Microsoft i kontroli dostępu opartej na rolach:

Rola opis
Współautor danych usługi IoT Hub Umożliwia pełny dostęp do operacji płaszczyzny danych usługi IoT Hub.
Czytelnik danych usługi IoT Hub Umożliwia pełny dostęp do odczytu do właściwości płaszczyzny danych usługi IoT Hub.
Współautor rejestru usługi IoT Hub Umożliwia pełny dostęp do rejestru urządzeń usługi IoT Hub.
Współautor bliźniaczej reprezentacji usługi IoT Hub Umożliwia dostęp do odczytu i zapisu do wszystkich bliźniaczych reprezentacji urządzeń i modułów usługi IoT Hub.

Możesz również zdefiniować role niestandardowe do użycia z usługą IoT Hub, łącząc potrzebne uprawnienia . Aby uzyskać więcej informacji, zobacz Tworzenie ról niestandardowych dla kontroli dostępu opartej na rolach platformy Azure.

Zakres zasobu

Przed przypisaniem roli RBAC platformy Azure do podmiotu zabezpieczeń określ zakres dostępu, który powinien mieć podmiot zabezpieczeń. Zawsze najlepiej przyznać tylko najwęższy możliwy zakres. Role RBAC platformy Azure zdefiniowane w szerszym zakresie są dziedziczone przez pod nimi zasoby.

Ta lista zawiera opis poziomów, na których można określić zakres dostępu do usługi IoT Hub, począwszy od najwęższego zakresu:

  • Centrum IoT. W tym zakresie przypisanie roli ma zastosowanie do centrum IoT Hub. Nie ma zakresu mniejszego niż pojedyncze centrum IoT. Przypisanie roli w mniejszych zakresach, takich jak indywidualna tożsamość urządzenia lub sekcja bliźniaczej reprezentacji, nie jest obsługiwane.
  • grupa zasobów. W tym zakresie przypisanie roli ma zastosowanie do wszystkich centrów IoT w grupie zasobów.
  • Subskrypcja. W tym zakresie przypisanie roli ma zastosowanie do wszystkich centrów IoT we wszystkich grupach zasobów w subskrypcji.
  • Grupa zarządzania. W tym zakresie przypisanie roli ma zastosowanie do wszystkich centrów IoT we wszystkich grupach zasobów we wszystkich subskrypcjach w grupie zarządzania.

Uprawnienia dla interfejsów API usługi IoT Hub

W poniższej tabeli opisano uprawnienia dostępne dla operacji interfejsu API usługi IoT Hub. Aby umożliwić klientowi wywołanie określonej operacji, upewnij się, że przypisana rola RBAC klienta oferuje wystarczające uprawnienia dla operacji.

Akcja RBAC opis
Microsoft.Devices/IotHubs/devices/read Odczytywanie tożsamości dowolnego urządzenia lub modułu.
Microsoft.Devices/IotHubs/devices/write Utwórz lub zaktualizuj dowolną tożsamość urządzenia lub modułu.
Microsoft.Devices/IotHubs/devices/delete Usuń dowolną tożsamość urządzenia lub modułu.
Microsoft.Devices/IotHubs/twins/read Odczytywanie dowolnego urządzenia lub bliźniaczej reprezentacji modułu.
Microsoft.Devices/IotHubs/twins/write Napisz dowolne urządzenie lub bliźniacze reprezentacje modułu.
Microsoft.Devices/IotHubs/jobs/read Zwróć listę zadań.
Microsoft.Devices/IotHubs/jobs/write Utwórz lub zaktualizuj dowolne zadanie.
Microsoft.Devices/IotHubs/jobs/delete Usuń dowolne zadanie.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/send/action Wysyłanie komunikatu z chmury do urządzenia do dowolnego urządzenia.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/feedback/action Otrzymywanie, uzupełnianie lub porzucanie powiadomienia o wiadomościach z chmury do urządzenia.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/queue/purge/action Usuń wszystkie oczekujące polecenia dla urządzenia.
Microsoft.Devices/IotHubs/directMethods/invoke/action Wywołaj metodę bezpośrednią na dowolnym urządzeniu lub module.
Microsoft.Devices/IotHubs/fileUpload/notifications/action Otrzymywanie, uzupełnianie lub porzucanie powiadomień o przekazaniu plików.
Microsoft.Devices/IotHubs/statistics/read Odczytywanie statystyk dotyczących urządzeń i usług.
Microsoft.Devices/IotHubs/configurations/read Odczytywanie konfiguracji zarządzania urządzeniami.
Microsoft.Devices/IotHubs/configurations/write Tworzenie lub aktualizowanie konfiguracji zarządzania urządzeniami.
Microsoft.Devices/IotHubs/configurations/delete Usuń dowolną konfigurację zarządzania urządzeniami.
Microsoft.Devices/IotHubs/configurations/applyToEdgeDevice/action Zastosuj zawartość konfiguracji do urządzenia brzegowego.
Microsoft.Devices/IotHubs/configurations/testQueries/action Zweryfikuj warunek docelowy i zapytania dotyczące metryk niestandardowych dla konfiguracji.

Napiwek

Uwaga

Aby pobrać dane z usługi IoT Hub przy użyciu identyfikatora Entra firmy Microsoft, skonfiguruj routing do niestandardowego punktu końcowego usługi Event Hubs. Aby uzyskać dostęp do wbudowanego punktu końcowego zgodnego z usługą Event Hubs, użyj metody parametry połączenia (klucza dostępu współdzielonego), tak jak poprzednio.

Wymuszanie uwierzytelniania w usłudze Microsoft Entra

Domyślnie usługa IoT Hub obsługuje dostęp do interfejsu API usług za pośrednictwem zarówno identyfikatora Entra firmy Microsoft, jak i zasad dostępu współdzielonego oraz tokenów zabezpieczających. Aby zminimalizować potencjalne luki w zabezpieczeniach związane z tokenami zabezpieczającymi, możesz wyłączyć dostęp za pomocą zasad dostępu współdzielonego.

Ostrzeżenie

Odmawiając połączeń przy użyciu zasad dostępu współdzielonego, wszyscy użytkownicy i usługi łączące się przy użyciu tej metody natychmiast utracą dostęp. W szczególności, ponieważ usługa Device Provisioning Service (DPS) obsługuje tylko łączenie centrów IoT przy użyciu zasad dostępu współdzielonego, wszystkie przepływy aprowizacji urządzeń kończą się niepowodzeniem z powodu błędu "nieautoryzowane". Uważnie kontynuuj i zaplanuj zastąpienie dostępu dostępem opartym na rolach firmy Microsoft. Nie należy kontynuować, jeśli używasz usługi DPS.

  1. Upewnij się, że klienci usługi i użytkownicy mają wystarczający dostęp do centrum IoT Hub. Przestrzegaj zasady najniższych uprawnień.
  2. W witrynie Azure Portal przejdź do centrum IoT Hub.
  3. W okienku po lewej stronie wybierz pozycję Zasady dostępu współdzielonego.
  4. W obszarze Połączenie przy użyciu zasad dostępu współdzielonego wybierz pozycję Odmów i przejrzyj ostrzeżenie. Screenshot that shows how to turn off IoT Hub shared access policies.

Dostęp do interfejsów API usługi IoT Hub można teraz uzyskać tylko za pośrednictwem identyfikatora Entra firmy Microsoft i kontroli dostępu opartej na rolach.

Dostęp do identyfikatora Entra firmy Microsoft z witryny Azure Portal

Dostęp do usługi IoT Hub można zapewnić w witrynie Azure Portal przy użyciu zasad dostępu współdzielonego lub uprawnień firmy Microsoft Entra.

Podczas próby uzyskania dostępu do usługi IoT Hub z witryny Azure Portal witryna Azure Portal najpierw sprawdza, czy przypisano ci rolę platformy Azure za pomocą Microsoft.Devices/iotHubs/listkeys/actionpolecenia . Jeśli masz, witryna Azure Portal używa kluczy z zasad dostępu współdzielonego w celu uzyskania dostępu do usługi IoT Hub. Jeśli nie, witryna Azure Portal próbuje uzyskać dostęp do danych przy użyciu konta Microsoft Entra.

Aby uzyskać dostęp do usługi IoT Hub z witryny Azure Portal przy użyciu konta Microsoft Entra, musisz mieć uprawnienia dostępu do zasobów danych usługi IoT Hub (takich jak urządzenia i bliźniacze reprezentacje). Potrzebujesz również uprawnień, aby przejść do zasobu usługi IoT Hub w witrynie Azure Portal. Wbudowane role udostępniane przez usługę IoT Hub udzielają dostępu do zasobów, takich jak urządzenia i bliźniacze reprezentacje, ale nie udzielają dostępu do zasobu usługi IoT Hub. Dlatego dostęp do portalu wymaga również przypisania roli usługi Azure Resource Manager, takiej jak Czytelnik. Rola czytelnika jest dobrym wyborem, ponieważ jest to najbardziej ograniczona rola umożliwiająca nawigowanie po portalu. Nie zawiera Microsoft.Devices/iotHubs/listkeys/action uprawnień (które zapewniają dostęp do wszystkich zasobów danych usługi IoT Hub za pośrednictwem zasad dostępu współdzielonego).

Aby upewnić się, że konto nie ma dostępu poza przypisanymi uprawnieniami, nie dołączaj Microsoft.Devices/iotHubs/listkeys/action uprawnień podczas tworzenia roli niestandardowej. Aby na przykład utworzyć rolę niestandardową, która może odczytywać tożsamości urządzeń, ale nie może tworzyć ani usuwać urządzeń, utwórz rolę niestandardową, która:

  • Microsoft.Devices/IotHubs/devices/read Zawiera akcję danych.
  • Nie ma Microsoft.Devices/IotHubs/devices/write akcji danych.
  • Nie ma Microsoft.Devices/IotHubs/devices/delete akcji danych.
  • Nie ma Microsoft.Devices/iotHubs/listkeys/action akcji.

Następnie upewnij się, że konto nie ma żadnych innych ról, które mają Microsoft.Devices/iotHubs/listkeys/action uprawnienia, takie jak Właściciel lub Współautor. Aby zezwolić kontu na dostęp do zasobów i nawigować po portalu, przypisz czytelnika.

Dostęp do identyfikatora Entra firmy Microsoft z poziomu interfejsu wiersza polecenia platformy Azure

Większość poleceń w usłudze IoT Hub obsługuje uwierzytelnianie firmy Microsoft Entra. Typ uwierzytelniania używanego do uruchamiania poleceń można kontrolować przy użyciu parametru --auth-type , który akceptuje key lub login wartości. Wartość key jest wartością domyślną.

  • Gdy --auth-type ma key wartość, tak jak poprzednio, interfejs wiersza polecenia automatycznie odnajduje odpowiednie zasady podczas interakcji z usługą IoT Hub.

  • Jeśli --auth-type wartość ma login wartość, token dostępu z interfejsu wiersza polecenia platformy Azure zalogowany w jednostce jest używany do operacji.

Aby uzyskać więcej informacji, zobacz stronę wydania rozszerzenia usługi Azure IoT dla interfejsu wiersza polecenia platformy Azure.

Przykłady dla zestawu SDK

Następne kroki

  • Aby uzyskać więcej informacji na temat zalet używania identyfikatora Entra firmy Microsoft w aplikacji, zobacz Integrowanie z identyfikatorem Entra firmy Microsoft.
  • Aby uzyskać więcej informacji na temat żądania tokenów dostępu z identyfikatora Entra firmy Microsoft dla użytkowników i jednostek usługi, zobacz Scenariusze uwierzytelniania dla identyfikatora Entra firmy Microsoft.

Użyj usługi Device Provisioning Service, aby aprowizować wiele urządzeń X.509 przy użyciu grup rejestracji.