ADMIN

2023

02

2023-01-31T12:00:00

Endpoint Security

PRAXIS

032

IoT

Azure

Azure Sphere für IoT-Anwendungen

Alles vernetzen

von Dr. Christian Knermann

Veröffentlicht in Ausgabe 02/2023 - PRAXIS

Mit Azure Sphere hat Microsoft eine Plattform geschaffen, um Mikrocontroller ins Internet of Things zu integrieren. Dabei liegt der Fokus auf der Sicherheit und umfasst nicht nur die Referenzarchitektur für die Mikrocontroller selbst, sondern auch deren Betriebssysteme sowie einen Cloudservice, der sich um Updates kümmert. IT-Administrator hilft bei ersten Gehversuchen mit Azure Sphere.

Der große Trend der Digitalisierung bestimmt zunehmend das Geschäftsleben. Oftmals hängt der wirtschaftliche Erfolg an den Fähigkeiten eines Unternehmens, Prozesse in Produktion und Logistik digital abzubilden und zu optimieren. In diesen Kontext passen das Internet of Things (IoT) und dessen professioneller Ableger, das Industrial IoT (IIoT), als Untermengen des Obergriffs Digitalisierung. Das IoT stellt die Verbindung zwischen Informationstechnik und realer Welt her, schafft also die Grundlage dafür, dass Software und künstliche Intelligenz (KI) zur Anwendung kommen können.
Damit eine KI die physische Welt erfassen, messen, daraus Schlüsse ziehen und auf die reale Ebene zurückwirken kann, braucht es in Software realisierte digitale Zwillinge von physischen Anlagen. Und umgekehrt benötigen die Maschinen in der echten Welt Sensoren, die Daten erheben, sowie Aktoren, mittels derer Software ins Geschehen eingreifen kann.
Elemente des IoT
Dies stellt IT-Administratoren vor neue Herausforderungen, denn es drängen Geräte ins Netzwerk, die nach anderen Spielregeln als das klassische Client-Server-Betriebsmodell verlangen. Sahen sich Admins bislang schon mit einer Vielzahl an Clients und Servern konfrontiert, kommen bei einer vollständigen Digitalisierung von Maschinen und Anlagen schnell sehr viele neue Endpunkte hinzu.
Der große Trend der Digitalisierung bestimmt zunehmend das Geschäftsleben. Oftmals hängt der wirtschaftliche Erfolg an den Fähigkeiten eines Unternehmens, Prozesse in Produktion und Logistik digital abzubilden und zu optimieren. In diesen Kontext passen das Internet of Things (IoT) und dessen professioneller Ableger, das Industrial IoT (IIoT), als Untermengen des Obergriffs Digitalisierung. Das IoT stellt die Verbindung zwischen Informationstechnik und realer Welt her, schafft also die Grundlage dafür, dass Software und künstliche Intelligenz (KI) zur Anwendung kommen können.
Damit eine KI die physische Welt erfassen, messen, daraus Schlüsse ziehen und auf die reale Ebene zurückwirken kann, braucht es in Software realisierte digitale Zwillinge von physischen Anlagen. Und umgekehrt benötigen die Maschinen in der echten Welt Sensoren, die Daten erheben, sowie Aktoren, mittels derer Software ins Geschehen eingreifen kann.
Elemente des IoT
Dies stellt IT-Administratoren vor neue Herausforderungen, denn es drängen Geräte ins Netzwerk, die nach anderen Spielregeln als das klassische Client-Server-Betriebsmodell verlangen. Sahen sich Admins bislang schon mit einer Vielzahl an Clients und Servern konfrontiert, kommen bei einer vollständigen Digitalisierung von Maschinen und Anlagen schnell sehr viele neue Endpunkte hinzu.
Typischerweise handelt es sich dabei um Mikrocontroller (Micro Control Unit, MCU). Die kleinsten Vertreter dieser Gattung sind etwa die Geräte der Produktfamilien espressif ESP8266 sowie ESP32, die wir im Rahmen eines früheren Workshops für erste Gehversuche im IoT nutzten [1]. Ebenfalls beliebt sind die Systeme der Arduino-Familie. Es handelt sich dabei um eine quelloffene MCU-Plattform, die sich mittels einer Entwicklungsumgebung (der ebenfalls quelloffenen Arduino-IDE) in C++ programmieren lässt. Sowohl Hard- als auch Software stehen unter einer Open-Source-Lizenz.
Dabei ist der eigentliche Controller meist auf einem Entwicklungsboard verbaut, das direkt per USB-Anschluss an ein System mit installierter IDE findet. Ein solches Board vereint Prozessor, Speicher- und Timer-Bausteine, Digital-Analog-Wandler sowie Konnektivität per WLAN oder Bluetooth. Zum weiteren Ausbau der Funktionalität kommen als Hat oder Shield bezeichnete Erweiterungsplatinen zum Einsatz, die auf das Board aufgesteckt etwa Sensoren, Aktoren oder kleine Displays ergänzen. Alternativ sind sogenannte Grove Shields erhältlich. Ein solches Shield führt die Anschlüsse des MCU auf einfache Steckplätze heraus, sodass sich alle weiteren Komponenten ganz ohne Löten mittels standardisierter Steckkabel verbinden lassen.
MCU suchen örtlich begrenzt per WLAN oder auf größere Distanzen per LoRaWAN Anschluss ans Netz. Auf der Ebene der logischen Datenübertragung sei der Klassiker HTTP erwähnt, auf dessen Basis der Representational State Transfer (REST) mittels gängiger HTTP-Methoden wie GET und POST die Kommunikation von und mit IoT-Gerätschaften ermöglicht. Sehr verbreitet im IoT sind weiterhin Protokolle wie etwa das Advanced Message Queuing Protocol (AMQP) und Message Queuing Telemetry Transport (MQTT). Letzteres kommt mit minimalem Overhead aus und ist darauf optimiert, Geräten mit wenig Ressourcen eine zuverlässige Datenübertragung auch über eher unzuverlässige Netze zu erlauben.
MQTT folgt dem Publisher-Subscriber-Funktionsprinzip. Clients können dabei Nachrichten mit einem bestimmten Betreff (Topic) versenden, während andere Clients diese abonnieren, so wie etwa von sozialen Netzwerken her bekannt. Im Zentrum der Kommunikation steht ein MQTT-Broker, der die Daten entgegennimmt und sich um das Verteilen von Nachrichten im Push-Verfahren kümmert.
Azure Sphere für IoT im Unternehmen
Aufgrund des einfachen Einstiegs sind Arduinos und vergleichbare MCU auch im Consumer-Bereich beliebt, doch bringt das Entwickeln auf dieser Plattform Herausforderungen mit sich, sobald ein Projekt auf Produktionsmaßstäbe skalieren soll. Was ist zu beachten, wenn nicht mehr wenige Prototypen, sondern hunderte oder gar tausende an Endpunkten Ihr Netzwerk bevölkern und geschäftskritische Prozesse nicht nur messen, sondern auch beeinflussen können?
In diesem Fall ist die flächendeckende Verteilung von Firmware- und Anwendungsupdates an die Endpunkte ebenso sicherzustellen wie eine Absicherung der Kommunikation sowie Authentifizierung und Autorisierung. Diese zeitraubende Tätigkeit bringt in der Regel die Beschäftigung mit Sicherheitskonzepten wie zertifikatsbasierter Verschlüsselung mit sich und wird auf dem schnellen Weg vom Entwicklungsstadium zum produktiven Einsatz leider nur zu oft nicht oder nur unzureichend berücksichtigt. An dieser Stelle setzt Microsoft mit Azure Sphere an [2].
Mit Azure Sphere hat Microsoft eine eigene Plattform für das IoT geschaffen, die weit mehr als die Hardware der MCU umfasst. Azure Sphere verknüpft die drei Elemente Hardware, Software und Clouddienst. Dabei ist die Sicherheit keine optionale Ergänzung, die später mühsam nachgerüstet werden muss, sondern von Anfang an integraler Bestandteil der Plattform.
Zertifizierte Hardware erforderlich
Der erste wichtige Baustein ist ein für Azure Sphere zertifizierter MCU. Microsoft betätigt sich allerdings nicht selbst als Hardwarehersteller, sondern arbeitet mit Drittanbietern zusammen, die Geräte nach Spezifikation fertigen. So finden sich am Markt bereits einige kompatible Geräte verschiedener Hersteller [3]. Herzstück aller Geräte bildet der Prozessor MT3620 des Herstellers MediaTek mit der Prozessorarchitektur ARM32 und insgesamt fünf Kernen (Bild 1).
Bild 1: Der MediaTek-MT3620-Mikrocontroller verfügt über fünf Prozessorkerne nebst SRAM.
Einer dieser Kerne ist Microsofts Sicherheitschip Pluton, der grundsätzlich vergleichbar ist mit einem Trusted Platform Module (TPM) und doch deutlich über dessen Funktionen hinausgeht. Pluton fungiert als Hardware-Vertrauensanker (Root-of-Trust) sowie als Zufallszahlengenerator, sichert den MCU mittels Secure-Boot ab und implementiert Verschlüsselungsfunktionen. Der Chip sorgt dafür, dass ein Gerät keinen nicht signierten Code ausführt und dass mittels Remote-Attestation in Zusammenarbeit mit dem Azure-Sphere-Cloud-Service die Integrität eines jeden Geräts gewährleistet bleibt. Jeder MCU ist dazu weltweit eindeutig identifizierbar.
Der MCU verfügt weiterhin über einen ARM-Cortex-A-Kern, der auf besonders niedrigen Stromverbrauch ausgelegt ist, sowie zwei ARM-Cortex-M Kerne. Letztere sind für Funktionen der Echtzeitsteuerung optimiert. Der MCU kann sämtliche Anschlüsse für Peripherie (siehe Kasten "Schnittstellen") jeweils exklusiv einem dieser Kerne zuordnen und sicherstellen, dass von diesem Kern ausgeführter Code nicht auf die anderen Kerne zugreifen kann. Zu guter Letzt implementiert ein separater Kern das WLAN-Subsystem. Der MCU funkt darüber im Dual-Band nach den Standards 802.11a/b/g/n. Der MT3620 isoliert alle Sicherheitsfunktionen und das WLAN von jeglichem Code der Endanwender.
Schnittstellen
Mikrocontroller verfügen über eine Vielzahl an Schnittstellen und Bausteinen, um mit Sensoren, Aktoren und anderer Peripherie zu interagieren:- GPIO (General Purpose Input / Output): Nicht zweckgebundene Schnittstelle zur bidirektionalen Übertragung digitaler Signale, Funktion vollständig in Software definierbar. Jeweils ein Pin bildet dabei die Werte 0 und 1 ab – im einfachsten Fall etwa, um eine LED aufleuchten zu lassen (Output) oder die Stellung eines Schalters abzufragen (Input).- PWM (Pulse Width Modulation): Generiert variable analoge Signale, geeignet etwa zur Steuerung von Motoren oder der Helligkeit von Leuchtdioden.- TDM (Time-Division Multiplexing): Digitale Schnittstelle zur Übertragung multipler Datenströme in einem einzelnen Signal.- I2S (Inter-integrated Sound): Digitaler serieller Bus zur Übertragung von Audiosignalen.- UART (Universal Asynchronous Receiver/Transmitter): Bidirektionale serielle Schnittstelle zur Kommunikation mit angeschlossenen Geräten, etwa zur klassischen Terminalverbindung mit einem per USB angeschlossenen PC zu Debugging-Zwecken. Zudem gibt es auch Sensoren, die per UART kommunizieren.- I2C (Inter-integrated Circuit): Bidirektionale serielle Kommunikation ähnlich UART, typischerweise genutzt für Module und Sensoren.- SPI (Serial Peripheral Interface): Ebenfalls genutzt zur bidirektionalen seriellen Kommunikation, schneller als UART und I2C.- ADC (Analog-to-Digital Converter): Dieser Baustein wandelt analoge Signale in digitale um, kommt etwa für Sensoren zur Messung von Temperatur, Luftfeuchte oder elektrischer Spannung zum Einsatz.
Linux-Betriebssystem und lokale Apps
Zertifizierte MCU bringen ab Werk das Azure Sphere OS mit. Es handelt sich dabei um ein von Microsoft angepasstes und quelloffenes Linux-System mit einem gehärteten Kernel, speziell optimiert für IoT-Anwendungen. Das Betriebssystem ist entsprechend auf die notwendigsten Funktionen reduziert und verfügt weder über eine Shell noch über einen Paketmanager.
Anwendungscode in Form eines kompilierten Images befördern Sie entweder lokal per USB auf ein Gerät oder liefern Ihre Images über den Azure Sphere Security Service in der Cloud aus (Firmware-Over-the-Air, FOTA). Letzteres ist bei einer größeren Anzahl an Geräten der Weg der Wahl, zumal die Endpunkte im produktiven Einsatz oftmals geografisch verteilt, in Anlagen fest verbaut und physisch gar nicht mehr zugänglich sind. Die direkte Übertragung von Images per USB wird auch als Side-Loading bezeichnet, doch auch dies funktioniert nur, wenn das jeweilige Gerät beim Cloudservice registriert ist.
Microsoft unterscheidet zwischen High-Level-Apps, die auf dem A-Kern der MCU laufen, und Low-Level-Apps, die die M-Kerne nutzen [5]. Eine High-Level-App läuft im Benutzerkontext und darf nur definierte Bibliotheken und API-Funktionen verwenden. Sie vermittelt zertifikatsbasierte authentifizierte Verbindungen zwischen Geräten und der Cloud, interagiert mit den Schnittstellen, wie GPIO oder UART, und kommuniziert mit Low-Level-Apps. Letztere greifen direkt oder über ein zusätzliches Echtzeit-Betriebssystem (Real-Time Operating System, RTOS) auf die Hardware zu. Jede Low-Level-App läuft vollständig isoliert und kann nicht direkt, sondern nur über eine High-Level-App mit der Außenwelt interagieren.
Updates via Clouddienst
Der Azure Sphere Security Service kümmert sich um die Remote-Attestation, stellt also sicher, dass es sich um einen echten und unverfälschten MCU mit integrem und aktuellem Betriebssystem handelt. Der Cloudservice sichert mittels Authentifizierung auf Basis von Clientzertifikaten die Kommunikation von Gerät zu Gerät sowie vom Gerät zur Cloud. Den Kontakt zum Clouddienst benötigen Geräte nur für Updates von Betriebssystem und Anwendungsabbildern. Abseits davon funktionieren die Geräte auch im Offlinebetrieb.
Betriebssystem und Cloudservice sind im Kaufpreis des MCU enthalten. Mit jedem Controller erhalten Sie zehn Jahre lang Unterstützung und Updates für das Betriebssystem und ebenso lang das Recht zur Nutzung des Clouddiensts. Darüber hinaus entstehen Ihnen keine weiteren Kosten – sofern Sie in Verbindung mit Azure-Sphere-Geräten nicht Microsofts hauseigene Azure-IoT-Dienste nutzen, für die Microsoft separate Gebühren berechnet. Doch Azure IoT Central und der Azure IoT Hub sind optional. Der Azure Sphere Security Service läuft zwar innerhalb der Azure Cloud, Sie können jedoch Ihre Azure-Sphere-Geräte zur Steuerung und weiteren Verarbeitung von Daten mit jedem beliebigen Dienst in einer öffentlichen oder privaten Cloud integrieren und etwa Daten per MQTT an einen Broker in Ihrem lokalen Netz schicken.
Loslegen mit einem Entwicklungsboard
Die meisten Code-Beispiele für Einsteiger beziehen sich auf das Azure Sphere MT 3620 Development Kit des Herstellers Seeed Technology [6]. Dieses Entwicklungsboard bringt zwei integrierte WLAN-Antennen sowie zwei Anschlüsse für externe Antennen mit. Es verfügt außerdem über zwei Funktionstasten, eine Reset-Taste, mehrere Status-LED und einen Micro-USB-Anschluss, der die Stromversorgung und eine Schnittstelle für Programmierung und Debugging bereitstellt (Bild 2).
Bild 2: Das Grove Starter Kit erweitert das Azure Sphere MT3620 Development Kit ganz ohne Löten.
Die Anschlüsse für Peripheriegeräte sind über zwei Reihen doppelter Pins, Header genannt, zugänglich. Zusammen mit dem Grove Starter Kit desselben Herstellers bildet das Entwicklungsboard eine solide Basis für erste Schritte [7]. Allerdings ist es aufgrund seines Layouts leider nicht kompatibel zu existierenden Shields für Arduino-Systeme.
Microsoft führt mit einfach nachvollziehbaren Anleitungen [8] durch die Inbetriebnahme. Dabei haben Sie die Wahl, ob Sie die Images für das Gerät mithilfe des ausgewachsenen IDE Visual Studio oder des vielseitigen Editors Visual Studio Code entwickeln möchten. Im Falle von Visual Studio eignet sich auch die Community-Edition, die Microsoft allerdings nur für Schüler und Studenten, reine Open-Source-Projekte sowie einzelne Entwickler kostenfrei anbietet. Der Editor Visual Studio Code, den wir auch im Rahmen unserer Tests eingesetzt haben, ist demgegenüber auch für kommerzielle Projekte und Unternehmen jeder Größenordnung kostenlos verfügbar.
Unabhängig davon, welche Entwicklungsumgebung Sie bevorzugen, installieren Sie im ersten Schritt das Azure Sphere Software Development Kit (SDK), das den Befehl "azsphere" mitbringt, der sowohl auf der klassischen Kommandozeile als auch in PowerShell-Sitzungen funktioniert [9]. Installieren Sie außerdem entsprechend Microsofts Dokumentation Visual Studio Code, gefolgt von den zu- sätzlichen Paketen CMake und Ninja. Anschließend starten Sie Visual Studio Code und binden die Erweiterungen für Azure Sphere ein.
Verbinden Sie Ihr Entwicklungsboard per USB mit dem Computer. Sie können daraufhin per azsphere-Kommando mit dem Gerät kommunizieren, das Sie mittels der integrierten Lizenz berechtigt, ein neues Kundenkonto, den sogenannten Tenant, im Azure Sphere Security Service anzulegen und das Gerät zu registrieren. Im Falle unseres Entwicklungsboards mussten wir allerdings zunächst das Betriebssystem neu installieren ("recover"), da die mitgelieferte Version schlicht zu alt war:
azsphere register-user --new-user <Ihre Mail-Adresse>
 
azsphere device recover
 
azsphere tenant create --name <Ihr Name>
 
azsphere tenant select --tenant <uid>
 
azsphere device claim
Den Namen Ihres Tenants dürfen Sie frei wählen, doch Obacht: Das folgende Anfordern des Geräts (claim) verbindet das Gerät irreversibel mit Ihrem Tenant. Hier hat die Sicherheit oberste Priorität. Der MCU nimmt bei einer Cloudbereitstellung keine Images außerhalb Ihres Tenants an. Eine feindliche Übernahme durch einen anderen Tenant ist somit ausgeschlossen.
Erste Signale aus der Cloud
Zunächst aktivieren Sie das Gerät aber für die lokale Ausführung von Code. Microsofts Lernpfad führt Sie daraufhin zum denkbar einfachsten Beispiel. Während angehende Programmierer in nahezu jeder Sprache zuerst lernen, den String "Hello World" auszugeben, gilt es im Bereich der Mikrocontroller, eine LED des Geräts blinken zu lassen. So stellt auch Microsoft den passenden Beispiel-Code hierzu bereit, den Sie mittels Visual Studio Code kompilieren, per USB auf den MCU übertragen und ausführen [10].
Deutlich spannender ist jedoch eine Cloudbereitstellung, denn in diesem Fall kann der Azure-Sphere-Clouddienst seine Stärken ausspielen. So erstellen Sie in der Cloud ein "Produkt" als Verwaltungseinheit für eine bestimmte Anwendung [11]. Diesem Produkt ordnen Sie dann ein oder mehrere MCU zu, die, eine korrekte WLAN-Konfiguration vorausgesetzt, fortan Images Ihrer Anwendungen als FOTA aus der Cloud beziehen. Der Azure-Sphere-Service legt dazu für jedes Produkt automatisch Gerätegruppen, darunter Entwicklung, Feldtest und Produktion, an und unterstützt so optimal den Entwicklungsprozess.
Fazit
Während bei herkömmlichen Ansätzen der Entwicklung für das IoT die Sicherheit leider oft auf der Strecke bleibt oder aber erst mühsam nachträglich ihren Weg ins fertige Produkt findet, hat Microsoft mit Azure Sphere den Schutz der gesamten Plattform von Anfang an mitgedacht. Microsofts Ansatz, die Security fix in der Hardware der MCUs zu verankern und mit einem Cloudservice zu verknüpfen, adressiert eher professionelle Anwendungsfälle und sorgt dafür, dass Sie sich ganz auf Ihre Anwendungslogik konzentrieren können. Um die Rahmenbedingungen kümmert sich Azure Sphere und stellt auch gleich die nötige Infrastruktur für einen abgestuften Prozess von der Entwicklung über Tests bis zum produktiven Einsatz bereit.
Sie finden bereits zu Azure Sphere kompatible Hardware am Markt und auch zahlreiche Codebeispiele auf GitHub. Der einzige Wermutstropfen ist die fehlende Kompatibilität zum Arduino-Ökosystem. Diese Plattform bietet ein größeres Angebot an Hardware und Anwendungsbeispielen, macht den Einstieg entsprechend einfach, ist aber abseits der Maker- Szene im professionellen Umfeld weniger verbreitet.
(jp)
Link-Codes
[1] Workshop zum Aufbau eines IoT in IT-Administrator August 2019: https://www.it-administrator.de/magazin/heftarchiv/artikel/306804.html
[3] Für Azure Sphere zertifizierte Hardware: https://devicecatalog.azure.com/devices?searchTerm=azure%20sphere
[7] Grove Starter Kit für Azure Sphere MT3620 Development Kit: https://wiki.seeedstudio.com/Grove_Starter_Kit_for_Azure_Sphere_MT3620_Development_Kit/
[9] Schnellstarts zum Einrichten Ihres Azure-Sphere-Geräts: http://aka.ms/AzureSphereSDK/