Eigene Konformitätsrichtlinien für Intune verwenden

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:

Eigene Konformitätsrichtlinien für Intune
Microsoft Endpoint Manager Admin Center

Danach stellen wir das von uns erstelle PowerShell Skript bereit. Das geschieht unter dem Punkt Skripts.

Eigene Konformitätsrichtlinien für Intune
Neues Skript hinzufügen

Wir geben dem Skript einen Namen und ggf. noch eine kurze Beschreibung, was es genau tut.

Eigene Konformitätsrichtlinien für Intune
Benutzerdefiniertes Skript erstellen

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.

Eigene Konformitätsrichtlinien für Intune
Das eigentliche Erkennungsskript hochladen

Danach erhalten wir noch eine kurze Übersicht über die vorgenommenen Konfigurationen und können das Skript erstellen.

Eigene Konformitätsrichtlinien für Intune
Skript erstellen

Wenn die Erstellung geklappt hat, sehen wir unser Skript nun in der Übersicht.

Eigene Konformitätsrichtlinien für Intune
Übersicht über die vorhandenen Skripts

Und nun können wir eine Konformitätsrichtlinie erstellen, die unser Erkennungsskript nutzt.

Eigene Konformitätsrichtlinien für Intune
Neue Richtlinie erstellen

Der Richtlinie geben wir wieder einen entsprechenden Namen und eine optionale Beschreibung, was die Richtlinie genau tut.

Eigene Konformitätsrichtlinien für Intune
Neue Konformitätsrichtlinie erstellen

Im nächsten Schritt wählen wir dann den Punkt Benutzerdefinierte Konformität und wählen das gerade hochgeladene Skript aus.

Eigene Konformitätsrichtlinien für Intune
Ermittlungsskript auswählen

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.

JSON-Datei auswählen und validieren lassen

Danach können wir die bekannten Einstellungen vornehmen, was passieren soll, wenn da Gerät nicht mehr konform ist.

Aktionen bei Inkompatibilität definieren

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.

Zuweisung für die Richtlinie definieren

Nun erscheint wieder eine kurze Zusammenfassung der vorgenommenen Konfigurationen und wir können die Richtlinie erstellen. Danach erscheint die Konformitätsrichtlinie in der Übersicht.

Eigene Konformitätsrichtlinien für Intune
Übersicht über alle Konformitätsrichtlinien

Wenn wir nun die Kompatibilität unseres Gerätes über die Unternehmensportal-App ansehen, werden wir Folgendes feststellen:

Unternehmensportal-App Gerätestatus

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.

Übersicht über die Gerätekompatibilität

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.

Ein Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert