In diesem Artikel zeige ich euch, wie man eigene Konformitätsrichtlinien für Intune verwenden kann.
Die Konformitätsrichtlinien sind ein wichtiger Bestandteil, wenn es darum geht, den Zugriff auf die Daten in Microsoft 365 abzusichern. Schließlich sollen möglichst nur Geräte, die unseren Anforderungen an Sicherheit entsprechen, einen Zugriff bzw. lokale Bearbeitung der Daten ermöglichen.
Die Realisierung erfolgt über bedingte Zugriffsregeln und der Kompatibilität des Gerätes. Wie man am einfachsten mit bedingten Zugriffsregeln arbeiten kann, habe ich in einem vorherigen Artikel bereits beschrieben. Durch Konformitätsrichtlinien kann die Kompatibilität des Gerätes festgelegt werden. Standardmäßig gibt es schon eine einige Konformitätsrichtlinien, die genutzt werden können. Diese definieren zum Beispiel, ob das Gerät verschlüsselt ist oder ob ein aktueller Patchstand installiert ist.
Allerdings kann ich auch eigene Konformitätsrichtlinien für Intune verwenden, um komplexere Anforderungen abzudecken. Das Ganze funktioniert per PowerShell und nur für Windows 10/11 Geräten. Durch den Einsatz von PowerShell sind uns unzählige Möglichkeiten gegeben, um eigene Konformitätsrichtlinien für Intune zu schreiben.
In diesem Beispiel sollen folgende Eigenschaften geprüft werden:
- Hersteller des Gerätes, in diesem Fall erlauben wir nur Geräte von Microsoft.
- Verfügbarer/eingebauter Arbeitsspeicher, in diesem Fall mindestens 16 GB.
- Installierte Programme, in diesem Fall darf VirtualBox nicht installiert sein. Natürlich könnte das Installieren von Programmen für Benutzer generell verhindert werden, aber oft sind die Benutzer doch mit Administrator-Rechten auf den eigenen Clients ausgestattet.
Beim PowerShell Skript gibt es nicht wirklich etwas zu beachten, außer dass ein String im JSON-Format zurückgeliefert werden muss (Zeile 29):
#Get basic information about our machine $biosinfo = Get-CimInstance -ClassName Win32_ComputerSystem $manufacturer = $biosinfo.Manufacturer $RAM = $biosinfo.TotalPhysicalMemory #Check if it's a Microsoft Device if ($manufacturer -like "*Microsoft Corporation*") { $manufacturer = "Microsoft Corporation" } else { $manufacturer = "Unknown" } #Calculate RAM $RAM = ($RAM / 1024 / 1024) $RAM = [math]::Round($RAM, 0) #Look for VirtualBox $installedSoftware = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* if ($installedSoftware -like "*VirtualBox*") { $virtualBox = "Installed" } else { $virtualBox = "Not Detected" } $hash = @{ Manufacturer = $manufacturer; RAM = $RAM; VirtualBox = $virtualBox} return $hash | ConvertTo-Json -Compress
Für eigene Konformitätsrichtlinien in Intune benötigen wir nicht nur das PowerShell Skript, dass die Informationen sammelt, sondern auch eine JSON-Datei, die die Auswertung übernimmt:
{ "Rules":[ { "SettingName":"Manufacturer", "Operator":"IsEquals", "DataType":"String", "Operand":"Microsoft Corporation", "MoreInfoUrl":"https://frankeisel.de", "RemediationStrings":[ { "Language":"de_DE", "Title":"Diese Maschine ist nicht von Microsoft!", "Description": "Wir erlauben nur die Verwendung von Maschinen von Microsoft, bitte kontaktieren Sie uns um weitere Informationen zu erhalten." }, { "Language":"en_US", "Title":"Diese Maschine ist nicht von Microsoft!", "Description": "Wir erlauben nur die Verwendung von Maschinen von Microsoft, bitte kontaktieren Sie uns um weitere Informationen zu erhalten." } ] }, { "SettingName":"RAM", "Operator":"GreaterEquals", "DataType":"int64", "Operand":16, "MoreInfoUrl":"https://frankeisel.de", "RemediationStrings":[ { "Language": "de_DE", "Title": "Nicht ausreichend Arbeitsspeicher vorhanden!", "Description": "Ihre Maschine muss getauscht werden, oder der Arbeitsspeicher muss auf mindestens 16GB erweitert werden. Bitte kontaktieren Sie uns um weitere Informationen zu erhalten." }, { "Language": "en_US", "Title": "Nicht ausreichend Arbeitsspeicher vorhanden!", "Description": "Ihre Maschine muss getauscht werden, oder der Arbeitsspeicher muss auf mindestens 16GB erweitert werden. Bitte kontaktieren Sie uns um weitere Informationen zu erhalten." } ] }, { "SettingName":"VirtualBox", "Operator":"IsEquals", "DataType":"String", "Operand":"Not Detected", "MoreInfoUrl":"https://frankeisel.de", "RemediationStrings":[ { "Language": "de_DE", "Title": "Virtual Box Anwendung wurde auf Ihrem System erkannt!", "Description": "Die Verwendung von VirtualBox ist nicht gestattet. Bitte deinstallieren Sie die Anwendung und versuchen es erneut." }, { "Language": "en_US", "Title": "Virtual Box Anwendung wurde auf Ihrem System erkannt!", "Description": "Die Verwendung von VirtualBox ist nicht gestattet. Bitte deinstallieren Sie die Anwendung und versuchen es erneut." } ] } ] }
Eigentlich sollte die JSON-Datei ganz gut verständlich sein. Wichtig ist natürlich, dass der SettingsName
in der Datei mit dem im JSON-String unseres PowerShell Skripts übereinstimmt. Mehr Informationen zu der JSON-Datei und den verfügbaren Operatoren findet man bei Microsoft. Und bei den RemediationStrings
muss zwingend die Sprache en_US
vorhanden sein, sonst wirft die Validierung später einen Fehler. In diesem Beispiel habe ich die gleichen Texte für die en_US
Sprache einfach noch einmal kopiert.
Nun haben wir alles zusammen, um die eigene Konformitätsrichtlinie mit unserem PowerShell Skript zu erstellen. Wir öffnen also das Microsoft Endpoint Manager Admin Center und navigieren zu den Konformitätsrichtlinien:
Danach stellen wir das von uns erstelle PowerShell Skript bereit. Das geschieht unter dem Punkt Skripts
.
Wir geben dem Skript einen Namen und ggf. noch eine kurze Beschreibung, was es genau tut.
Im nächsten Abschnitt fügen wir das eigentliche Skript ein und können noch ein paar Einstellungen vornehmen. In unserem Beispiel nehmen wir aber die Standardeinstellungen, die für einen Großteil der Anwendungsfälle passen sollten.
Danach erhalten wir noch eine kurze Übersicht über die vorgenommenen Konfigurationen und können das Skript erstellen.
Wenn die Erstellung geklappt hat, sehen wir unser Skript nun in der Übersicht.
Und nun können wir eine Konformitätsrichtlinie erstellen, die unser Erkennungsskript nutzt.
Der Richtlinie geben wir wieder einen entsprechenden Namen und eine optionale Beschreibung, was die Richtlinie genau tut.
Im nächsten Schritt wählen wir dann den Punkt Benutzerdefinierte Konformität
und wählen das gerade hochgeladene Skript aus.
Jetzt müssen wir noch die vorbereitete JSON-Datei hochladen und validieren lassen. Wenn keine Fehler bei der Validierung aufgetreten sind, werden unsere Einstellungen entsprechend angezeigt.
Danach können wir die bekannten Einstellungen vornehmen, was passieren soll, wenn da Gerät nicht mehr konform ist.
Als letzter Schritt müssen wir noch festlegen, auf wem die Richtlinie alles angewendet werden soll. In diesem Fall wählen zur Vereinfachung einfach Alle Benutzer
aus.
Nun erscheint wieder eine kurze Zusammenfassung der vorgenommenen Konfigurationen und wir können die Richtlinie erstellen. Danach erscheint die Konformitätsrichtlinie in der Übersicht.
Wenn wir nun die Kompatibilität unseres Gerätes über die Unternehmensportal-App ansehen, werden wir Folgendes feststellen:
Unser PowerShell Skript hat erkannt, dass wir unerlaubterweise VirtualBox auf dem Rechner installiert haben und verweigert nun den Zugriff auf die Unternehmensdaten in der Cloud. Die definierten Texte aus der JSON-Datei werden ebenfalls angezeigt und bieten in diesem Fall auch eine mögliche Fehlerbehebung an. Die anderen abgefragten Parameter (Hersteller und Arbeitsspeicher) erfüllt die Maschine aber.
Das sieht man natürlich auch im Microsoft Endpoint Manager Admin Center. Dort sieht man die definierten Einstellungen und ob diese erfüllt werden.
Mit der Möglichkeit von selbst geschriebenen PowerShell Skripten haben wir nun ein mächtiges Werkzeug an der Hand, um unsere Konformität von Geräten selbst festzulegen.
[…] Dieser Post ist auch auf Deutsch verfügbar […]