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 identyfikatora Entra firmy Microsoft i kontroli dostępu opartej na rolach usługa IoT Hub wymaga, aby podmiot zabezpieczeń żądający interfejsu API miał odpowiedni poziom uprawnień do autoryzacji. Aby nadać podmiotowi zabezpieczeń uprawnienie, nadaj mu przypisanie roli.
- Jeśli podmiot zabezpieczeń jest użytkownikiem, grupą lub jednostką usługi aplikacji, postępuj zgodnie ze wskazówkami w temacie Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
- Jeśli podmiot zabezpieczeń jest tożsamością zarządzaną, postępuj zgodnie ze wskazówkami w artykule Przypisywanie dostępu tożsamości zarządzanej do zasobu.
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 |
---|---|
Uczestnik danych centrum IoT | Umożliwia pełny dostęp do operacji dla płaszczyzny danych centrum IoT. |
Czytelnik danych centrum IoT | Umożliwia pełny dostęp do odczytu parametrów płaszczyzny danych centrum IoT. |
Uczestnik rejestru centrum IoT | Umożliwia pełny dostęp do rejestru urządzeń centrum IoT. |
Uczestnik reprezentacji bliźniaczej centrum IoT | Umożliwia dostęp do odczytu i zapisu do wszystkich bliźniaczych reprezentacji urządzeń i modułów centrum IoT. |
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 tożsamość poszczególnych urządzeń, 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
- Operacja aktualizacji rejestru zbiorczego wymaga zarówno operacji , jak
Microsoft.Devices/IotHubs/devices/write
iMicrosoft.Devices/IotHubs/devices/delete
. - Operacja kwerendy bliźniaczej reprezentacji wymaga .
Microsoft.Devices/IotHubs/twins/read
- Pobierz cyfrową reprezentację bliźniaczą wymaga .
Microsoft.Devices/IotHubs/twins/read
Aktualizacja usługi Digital Twin wymaga programuMicrosoft.Devices/IotHubs/twins/write
. - Zarówno wywołaj polecenie składnika, jak i wywołaj polecenie na poziomie głównym wymaga polecenia
Microsoft.Devices/IotHubs/directMethods/invoke/action
.
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 kontynuuj, jeśli używasz usługi Device Provisioning Service.
Upewnij się, że klienci usługi i użytkownicy mają wystarczający dostęp do centrum IoT Hub. Przestrzegaj zasady najniższych uprawnień.
W witrynie Azure Portal przejdź do centrum IoT Hub.
W okienku po lewej stronie wybierz pozycję Zasady dostępu współdzielonego.
W obszarze Połącz przy użyciu zasad dostępu współdzielonego wybierz pozycję Odmów i przejrzyj ostrzeżenie.
Wybierz pozycję Zapisz.
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/action
polecenia . Jeśli masz, witryna Azure Portal używa kluczy z zasad dostępu współdzielonego w celu uzyskania dostępu do centrum IoT. 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. Role wbudowane udostępniane przez centrum IoT udzielają dostępu do zasobów, takich jak urządzenia i reprezentacje bliźniacze, ale nie udzielają dostępu do zasobu centrum IoT. 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
makey
wartość, tak jak poprzednio, interfejs wiersza polecenia automatycznie odnajduje odpowiednie zasady podczas interakcji z usługą IoT Hub.Jeśli
--auth-type
wartość malogin
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 korzystania z identyfikatora Entra firmy Microsoft w aplikacji, zobacz Integrowanie z Platforma tożsamości Microsoft.
- Aby dowiedzieć się, jak tokeny dostępu, tokeny odświeżania i tokeny identyfikatorów są używane w autoryzacji i uwierzytelnianiu, zobacz Tokeny zabezpieczające.