Es kann oftmals Sinn machen Richtlinien abhängig von Wochentagen oder gar Tageszeiten einzusetzen. In diesem How-To zeigen wir Ihnen, wie Sie Policies für Mobilgeräte mit Hilfe von Powershell und Windows Task Scheduler zeitsensitiv ausrollen können.
Ziel
In diesem How-To werden wir beispielhaft eine Richtlinie erstellen, die bei vollverwalteten iOS-Geräten mit privatem Nutzungsanteil (COPE) die Nutzung von Facebook während der Kernarbeitszeit verbietet, indem sie die App verbirgt. Auf andere Einstellungen von ggf. schon gesetzten Richtlinien müssen wir keine Rücksicht nehmen, da bei Cortado Server mehrere Richtlinien pro Benutzer/Gruppe oder Gerät zugewiesen werden können. Es gilt die Faustregel: Die striktere Einstellung gilt. Haben wir also noch keine Policy, die eine App-Blacklist bei betreuten iOS-Geräten setzt, können wir sicher eine Policy zuweisen, die alles erlaubt, aber eine Backlist setzt. Umgesetzt wird nur die Blacklist, wenn schon andere Richtlinien existieren.
Dieses How-To soll Ihnen außerdem die grundlegenden Funktionen der PowerShell-Integration des Cortado-Servers näherbringen.
Umsetzung
Bevor wir beginnen, müssen wir die Nutzerdaten des Nutzers, in dessen Kontext das Skript später ausgeführt werden soll, abspeichern, damit die Skriptausführung automatisch stattfinden kann. Das Nutzer-Konto, für den das durchgeführt werden soll, ist der Cortado-Service-Account, also dasjenige Nutzer-Konto, mit dem Cortado-Server von Ihnen installiert worden ist.
Hinweis! Wir schlagen hier vor, das Passwort des Nutzers verschlüsselt in einer .txt-Datei abzulegen. Wenn dies nicht Ihren Sicherheitsvorschriften entspricht, bitten wir Sie einen für Sie akzeptablen Weg zu wählen, um die Zugangsdaten des Cortado-Service-Accounts an das Skript zu übergeben, sobald es ausgeführt wird.
- Um das Passwort verschlüsselt in eine .txt-Datei abzuspeichern, öffnen Sie bitte Powershell ISE auf dem Cortado-Server (Applikationsserver, wenn Sie die Cortado Proxy Extension einsetzen). Fügen Sie dort folgenden Code ein:
$credential = Get-Credential
$credential.Password | ConvertFrom-SecureString | Set-Content c:execute.txt
- Es öffnet sich ein Fenster, indem Sie Nutzername und Passwort eingeben können. Ist das erfolgt, finden Sie die verschlüsselte Passwort-Datei im Root des Nutzerverzeichnis (Beispiel: C:\Users\ccssrv\execute.txt).
- Wir beginnen damit unser Powershell-Skript zu bauen. Hierfür öffnen wir einen Texteditor. Zuerst bauen wir nun unsere Nutzerdaten für den Service -Account wieder zusammen:
$username = ccsinst@ccsdemo.de
$encrypted = Get-Content c:execute.txt | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential($username, $encrypted)
- Hier konfigurieren wir die Verbindung zum Server. Bitte ersetzen Sie https://mdm.ccsdemo.de mit der Adresse/dem FQDN Ihres Applikationsservers.
Connect-CCSFarm -CCSUrl https://mdm.ccsdemo.de -PSCredential $credential
- Als nächstes setzen wir den Befehl, der unsere Policy Restrict App Usage auf ein Gruppentemplate ausrollt. Dieses Gruppentemplate heisst in unserem Beispiel Salesforce. Ersetzen Sie hier bitte den Namen mit dem Gruppentemplate, das bei Ihnen von der Policy Restrict App Usage betroffen sein soll:
Get-CCSGroupUsers –SamAccountName “Salesforce” | Get-CCSGroupTemplate -SamAccountName "Salesforce" | Get-CCSPolicy -PolicyName "PowerShell_PoC_1" | Assign-CCSPolicy
Get-CCSGroupUsers
holt die Nutzer unseres Gruppentemplates,Get-CCSGroupTemplate
holt das Gruppentemplate mit dem SamAccountName Salesforce. Danach holen wir uns überGet-CCSPolicy
, die Policy mit dem Namen Powershell_PoC_1 und rollen diese schließlich auf das Gruppentemplate mitAssign-CCSPolicy
aus.- Wir speichern unser Skript unter dem Namen Assign_Powershell_PoC_1.ps1 ab. Nun öffnen wir den Texteditor erneut und bauen ein Skript, welches die zugewiesene Richtlinie wieder entfernt. Dieses Skript ist unserem ersten sehr ähnlich und unterscheidet sich lediglich im letzten Powershell CMD:
$username = ccsinst@ccsdemo.de
$encrypted = Get-Content c:execute.txt | ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential($username, $encrypted)
Connect-CCSFarm -CCSUrl https://mdm.ccsdemo.de -PSCredential $credential
Get-CCSGroupUsers –SamAccountName “Salesforce” | Get-CCSGroupTemplate -SamAccountName "Salesforce" | Get-CCSPolicy -PolicyName "PowerShell_PoC_1" | Unassign-CCSPolicy
- Beachten Sie hier das
Unassign-CCSPolicy
mit welchem wir die zugewiesene Richtlinie wieder entfernen. Wir speichern unser Skript unter dem Namen Unassign_Powershell_PoC_1.ps1 ab. - Das Einzige, was nun noch zu tun ist, ist die Policy Restrict App Usage anzulegen und den Windows Task Scheduler so zu konfigurieren, dass er unser Skript regelmäßig ausführt. Eine Beschreibung, wie Sie eine solche Policy anlegen, finden Sie in unserem How-To So setzen Sie iOS-Standardapplikationen auf die Black- bzw. Whitelist.
- Da wir in unserem Beispiel Facebook verbieten wollen, sieht unsere Policy nun so aus:
- Wir speichern die Richtlinie ab, und begeben uns wieder auf unseren Cortado-Server. Dort starten wir den Windows Task Manager und klicken dort auf Create Task.
- Im Formular, geben wir unserem Task einen Namen und eine Beschreibung und geben den Nutzer an (Ihr Cortado-Service-Account), in dessen Kontext das Skript ausgeführt werden soll. Wir definieren, dass das Skript ausgeführt werden soll, egal ob der Nutzer angemeldet ist oder nicht. Danach wechseln wir zum Tab Triggers.
- Im neuen Fenster erstellen wir einen neuen Trigger. Wir geben an, dass das Skript täglich um 09:00 ausgeführt werden soll und klicken auf OK. Danach wechseln wir in den Tab Actions.
- Dort erstellen wir eine neue Action Start a Program. Wir geben an, dass Powershell gestartet werden soll und geben den Pfad zu unserem Skript als Argument mit. Ebenfalls fügen wir nach dem Pfad den Parameter –ExecutionPolicy Bypass an, damit wir sichergehen können, dass das Skript auch ohne Interaktion ausgeführt wird.
- Die gleichen Schritte führen wir nun mit unserem Skript Unassign_Powershell_PoC_1.ps1 durch. Wir konfigurieren hier den Trigger allerdings auf das Ende der Kernarbeitszeit (Beispiel 17:00:00) und passen ebenfalls den Pfad zum Skript unter den Actions an.
- Das Ergebnis ist, dass wir nun bei Beginn der Kernarbeitszeiten Facebook bei betreuten iOS-Geräten aus-, und nach Ende der Kernarbeitszeiten wieder einblenden.