Android™ im Unternehmenseinsatz

Artikel als PDF herunterladen:
Download Android™ im Unternehmenseinsatz

Im Privaten ist die Nutzung eines mobilen Gerätes mittlerweile alltäglich geworden. Langsam zeichnet sich der Trend auch im Unternehmensumfeld ab, wobei jedoch auch hier größtenteils private Geräte verwendet werden, um z.B. Firmen E-Mails oder Kundenkontakte zu lesen. In einigen Fällen empfiehlt es sich, Mitarbeiter mit firmeneigenen Geräten auszustatten. Dafür ist es erforderlich diese auch entsprechend zu administrieren.

Im Unternehmensumfeld werden mobile Geräte immer interessanter. Sei es für Außendienstler, Kundenberater oder zum Steuern interner Prozesse: Der Einsatz eines Tablets erleichtert den Umgang im Arbeitsalltag, da die Geräte vor allem kleiner und leichter als die übliche Laptopvariante sind.

Wenn nun also für eine große Zahl an Mitarbeitern Geräte bereitgestellt werden, müssen diese entsprechend konfiguriert werden. Das kann bedeuten, dass Apps vorinstalliert werden, dass das Firmennetzwerk eingerichtet wird oder dass bestimmte Sicherheitseinstellungen vorzunehmen sind.

Zum Einrichten von Geräten sind folgende Fragestellungen interessant:

  • Müssen Apps auf das Gerät installiert werden?
  • Müssen Einstellungen vorgenommen werden?
  • Sollen in Zukunft Apps nachinstalliert oder geupdatet werden?
  • Soll das Gerät gewisse Statistiken an einen Server liefern?
  • Soll das Gerät bestimmten Restriktionen unterliegen?
  • Ist das Gerät Benutzergebunden oder werden mehrere Mitarbeiter dasselbe Gerät benutzen?

Android stellt für einige dieser Punkte Möglichkeiten bereit, viele müssen selbst implementiert werden. Es empfiehlt sich eine Administrator App zu schreiben, die alle gewünschten Funktionalitäten abdeckt und eine Schnittstelle zu den Geräten bietet über welche beispielsweise Software nachinstalliert werden kann oder der Gerätezustand zugänglich ist.

 

Android Roboto Admin

 

Geräte einrichten

Doch betrachten wir zunächst das Einrichten von Geräten für die Mitarbeiterschaft, insbesondere die initiale Installation der Administrator App. Für einzelne Geräte kann die Anwendung per USB oder E-Mail zugänglich gemacht werden. Doch dafür muss jedes Gerät in die Hand genommen und die Datei installiert werden. Diese Variante ist also nicht sehr komfortabel. Die massentauglichste Lösung bietet die Android Debug Bridge. Dies ist ein Kommandozeilen-Tool, das den Zugriff auf Android Geräte ermöglicht und mit dem Android SDK mitgeliefert wird. Hierüber können Dateien ausgetauscht aber auch Anwendungen installiert werden. Sind mehrere Geräte angeschlossen, kann über die jeweilige Seriennummer ein spezielles Gerät angesprochen werden. Ein Shell Script kann nun alle angeschlossenen Geräte durchlaufen und die Anwendungen installieren. Hierfür stehen 15 Ports zur Verfügung, an denen gleichzeitig Geräte per USB angeschlossen sein können.

Das Gerät konfigurieren

Ist die Administrator App auf den Geräten verteilt, kann man diese als Schnittstelle nutzen. Die Anwendung kann z. B. Einstellungen am Gerät vornehmen – angefangen von der Bluetooth Sichtbarkeit bis zum Einrichten des Firmennetzwerkes. Jedoch können keine Sicherheitseinstellungen vorgenommen werden.

Zur Änderung von Systemeinstellungen gibt es die Settings Klasse, mit welcher man Einstellungen auslesen und setzen kann, hier am einfachen Beispiel der Bluetooth Sichtbarkeit:

Settings.System.putInt(getContentResolver(),
	Settings.System.BLUETOOTH_DISCOVERABILITY, 0);

Dafür wird in der Manifest-Datei die Berechtigung zum Setzen von Einstellungen benötigt.

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

Für das Einrichten eines Netzwerkes benötigt man den Wifi-SystemService. Über diesen erhält man Zugriff auf die WLAN Einstellungen und kann mit

WifiManager wManager = (WifiManager)this.getApplicationContext()
	.getSystemService(Context.WIFI_SERVICE);
wManager.setWifiEnabled(booleanValue);

den Geräte-WLAN-Empfänger ein- und ausschalten.

Über diesen WifiManager kann nun auch ein spezielles Netzwerk eingerichtet werden, indem SSID und Passwort übergeben werden. Dafür wird eine WifiConfiguration benötigt.

WifiConfiguration config = new WifiConfiguration();
config.SSID = "MYSSID"
config.preSharedKey = "my-password"

Diese wird dann dem WifiManager übergeben und eine Verbindung damit hergestellt.

wManager.addNetwork(config);
int networkId = getNetworkIdBySsid("MYSSID"); //search in all networks
wifiManager.disconnect();
wifiManager.enableNetwork(networkId, true);
wifiManager.reconnect();

Firmensoftware

Neben der Konfiguration des Gerätes soll nun auch Software auf das Gerät gebracht werden. Mittels eines Intents können Apps installiert und später aktualisiert werden. Diese könnten z. B. vom firmeninternen Webserver heruntergeladen werden. Bei einer großen Menge Apps, die den Mitarbeitern zur Verfügung gestellt werden, lohnt es sich auch einen eigenen App-Store zu schreiben, der diesen Intent verwendet.

Intent installIntent = new Intent(Intent.ACTION_VIEW);
installIntent.setDataAndType(Uri.fromFile(myApkFile),
	"application/vnd.android.package-archive");
startActivity(installIntent);

Der Nutzer muss jede Installation bestätigen. Ein Update im Hintergrund ohne Nutzerinteraktion ist nicht möglich. Geräte, die gerade nicht im Einsatz sind, erhalten somit keine Updates.

Zum Installieren über diesen Intent muss die Einstellung „Unbekannte Herkunft“ aktiviert sein. Dies ist eine Sicherheitseinstellung, die, sollte sie deaktiviert sein, verhindert, dass Apps aus einer anderen Quelle als dem Play Store installiert werden können. In diesem Fall, wird der Nutzer darauf hingewiesen und über einen Systemdialog direkt in die Einstellungen geleitet.

Kontrolle im Einsatz

Sind die Geräte im Einsatz, sollten Sicherheitsrichtlinien eingeführt werden, um die Geräte entsprechend zu schützen. Es gibt die Möglichkeit gewisse Sicherheitseinstellungen zu erzwingen, z.B. das Setzen eines Gerätepasswortes. Dafür stellt Android die DeviceAdminAPI zur Verfügung. Hiermit können sogenannte policies festgelegt werden, z. B. ein starkes Passwort, auch das Deaktivieren der Gerätekamera ist möglich. Um diese policies geltend zu machen, benötigt die Administrator App einen DeviceAdminReceiver. Diese Klasse ist Teil der API und ermöglicht das Reagieren auf spezielle Nutzerinteraktionen, wie die Eingabe des Passwortes. Dieser Receiver muss, wie jede andere Anwendungskomponente auch, in der Manifest Datei eingetragen werden.

<receiver android:name=".MyAdminReceiver"
	android:permission="android.permission.BIND_DEVICE_ADMIN">
	<meta-data  android:name="android.app.device_admin"
		android:resource="@xml/device_admin_sample" />
	<intent-filter>
		<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
	</intent-filter>
</receiver>

Die Permission BIND_DEVICE_ADMIN stellt sicher, dass ausschließlich das System mit dem Receiver interagieren kann, denn einer Anwendung kann diese Erlaubnis nicht vergeben werden.
Die Ressouce-Datei device_admin_sample listet alle Policies auf, die der Device Administrator verwendet.

<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
	<uses-policies>
		<limit-password />
		<reset-password />
		<expire-password />
		<disable-camera />
	</uses-policies>
</device-admin>

Zur Bestückung des Receivers mit policies wird ein DevicePolicyManager benötigt, mit diesem kann dann z.B. die minimale Länge eines Passwortes festgelegt werden.

DevicePolicyManager = policyManager;
policyManager.setPasswordMinimunLength(mySampleComponent, length);

 

Geräte-Manager

Screenshot des Geräteadministrators

Für alle Apps, die einen DeviceAdminReceiver besitzen, findet man in den Einstellungen einen entsprechenden Geräteadministrator. Dieser muss vom Nutzer aktiviert werden, damit die policies geltend gemacht werden können.

Beim ersten Starten der Anwendung sollte also der entsprechende Dialog angezeigt werden, da es sich um eine Sicherheitseinstellung handelt und nicht mittels Code gesetzt werden kann.

Solange der Geräteadministrator aktiviert ist, wird auch die entsprechende App vor dem Deinstallieren geschützt.

Um z.B. das Aktivieren und Deaktivieren des Receivers durch den Nutzer abzufangen, werden die Methoden onEnabled und onDisabled benötigt.

public class DeviceAdminSample extends DeviceAdminReceiver {

	@Override
	public void onEnabled(Context context, Intent intent) {
		//deviceAdmin is enabled
	}

	@Override
	public void onDisabled(Context context, Intent intent) {
		//deviceAdmin is disabled
	}

}

Mittels dieser Callbacks informiert das System den Geräteadministrator darüber, ob dieser vom Nutzer deaktiviert wurde und somit die policies nicht mehr eingehalten werden müssen. Apps, die je nach Zustand des Geräteadministrators arbeiten, können dessen Zustand erfragen und entsprechend ihre Funktionalität einschränken.

Damit keine Sicherheitslücke entsteht, kann innerhalb des DeviceAdminReceivers auch geprüft werden, ob das Geräte-Passwort korrekt eingegeben wurde und gegebenenfalls bei mehrfach falscher Eingabe mit einer vordefinierten Aktion reagiert werden.

Die Device Administration API bietet noch einige Möglichkeiten den Nutzer des Gerätes zu erhöhter Sicherheit anzuhalten. Er kann z.B. dazu gezwungen werden in regelmäßigen Abständen sein Gerätepasswort zu ändern. Dabei kann auch festgelegt werden, dass eine bestimmte Anzahl vergangener Passwörter nicht wieder verwendet werden dürfen. Somit hat das versehentliche Eingeben der Pin vor den Augen des Kunden etwas weniger schwerwiegende Konsequenzen.

Monitoring

Als Unternehmen wünscht man sich außerdem eine gewisse Kontrolle über die im Einsatz befindlichen Geräte. Sie sollen vor möglichen Sicherheitslücken geschützt werden und Informationen über ihren Zustand bereitstellen. Dafür kann man einen Hintergrundservice schreiben, der notwendige Informationen sammelt und gegebenenfalls an einen Server schickt. Es könnte z. B. geprüft werden, ob Geräte, die firmenintern genutzt werden sollen, das firmeninterne Netzwerk verlassen oder sich innerhalb bestimmter GPS Koordinaten befinden. Dazu reicht eine gewöhnliche Service Komponente, die entweder in regelmäßigen Zeitabständen oder bei gewissen Events den Zustand des Gerätes prüft. Hiermit können z. B. auch alle laufenden Prozesse zu einem bestimmten Zeitpunkt ausgegeben werden. Dafür bietet die ActivityManager Klasse Zugriff auf verschiedene Prozessinformationen.

List<ActivityManager.RunningServiceInfo> serviceList =
	ActivityManager.getRunningServices();

Mehrbenutzerbetrieb

Seit Android 4.2 gibt es den sogenannten Mehrbenutzerbetrieb. So können verschiedene Mitarbeiter verschiedene Apps auf einem Gerät besitzen und verschiedene Einstellungen vornehmen. Sie besitzen auch einen eigenen Speicherbereich, eine von mehreren Nutzern installierte App benötigt jedoch nur einmal Speicher, so dass lediglich Nutzerdaten und Einstellungen weiteren Speicher belegen. Der Mehrbenutzerbetrieb funktioniert jedoch ausschließlich auf Tablets, da eingehende Telefonanrufe noch nicht vom System gehandhabt werden können. Dabei hat der Hauptnutzer alle Rechte; Mitbenutzer können bei den Sicherheitseinstellungen eingeschränkt werden. Eine weitere Variante ist das Erstellen von Profilen. Ein Profil ist eine eingeschränkte Sicht auf den Hauptnutzer des Gerätes. Dabei kann von diesem bestimmt werden, welche Apps genutzt werden können. So können z. B. der Browser oder der Google Play Store gesperrt werden bzw. generell nur die firmenrelevanten Apps zugelassen werden. Dadurch verhindert man, dass Nutzer über diese Kanäle unbeabsichtigt Schadsoftware auf das Gerät bringen.

Ist Android für den Unternehmenseinsatz bereit?

Alles in allem ist der Einsatz von Android im Unternehmensumfeld durchaus zu realisieren. Wer allerdings ein „iPhone Configuration Utility“ für Android erwartet, wird enttäuscht sein. Google bietet bisher keinen Ansatz an, um mittels einer einzelnen Konfigurationsdatei die wesentlichen Systemeinstellungen zu definieren. Der Artikel hat jedoch gezeigt, wie ein solches Werkzeug selbst erstellt werden kann.

Viel schwerer als das fehlende Konfigurationswerkzeug wiegt die Tatsache, dass das App-Provisioning noch keine Unternehmenstauglichkeit erreicht hat. Zwar bietet Android schon seit Anbeginn die Möglichkeit, APKs direkt zu installieren. Dazu muss jedoch die Sicherheitseinstellung „Installation von Apps von anderen Quellen als Play Store erlauben“ aktiviert werden. Weiterhin muss der Nutzer jede Installation und jedes Update bestätigen. Ein App-Store, der Apps ohne Nutzerinteraktion installieren und aktualisieren kann, ist nicht möglich – hierfür gibt es weder eine vordefinierte Berechtigung noch ein API. Somit bleibt nur der Weg, die Systemsicherheit herunterzusetzen, um eine Provisionierung ohne Google Play Store zu realisieren.

Wer mit dieser Einschränkung leben kann, findet ein vergleichsweise weitreichend kontrollierbares System vor. Die Anwendungsentwicklung in Java, die Unabhängigkeit von Herstellern sowie die Verfügbarkeit von Geräten in allen Leistungs- und Preisklassen lassen Android insgesamt für unternehmensindividuelle Software sehr attraktiv erscheinen.

 


Die Google Welt

Als Betriebssystem von Google, bieten Android Geräte auch einige Dienste, sobald man es mit einem Google Konto verknüpft.

Zum einen können Apps aus dem Play Store geladen werden. Die Verteilung von Firmen-Apps über den Google Play Store ist sicher nicht sehr attraktiv, jedoch bietet die Plattform seit etwa einem Jahr einen sogenannten private channel darüber können Anwendung verteilt werden, die nur für zugelassene Nutzer sichtbar sind.

Weiterhin kann mit einem Google Account jederzeit über eine Web-App auf das Gerät zugegriffen werden. Diese ist unter www.google.com/android/devicemanager zu erreichen und ermöglicht das Sperren, Lokalisieren und Remote Löschen von Geräten. In der Web-App findet man alle Geräte, die an einen Account gebunden sind. Hier erweist es sich als praktisch, auf allen Geräten ein gemeinsames Administrator Konto zu besitzen, welches z.B. als Hauptkonto beim Mehrbenutzerbetrieb eingesetzt werden kann. Auf diese Weise wird nur ein Google Konto benötigt.

Über die Web-App ist auch das Zurücksetzen auf den Werkszustand möglich, hierbei werden alle Nutzerdaten auf dem Gerät gelöscht. Dies funktioniert allerdings nur bei bestehender Internetverbindung des Geräts. Nach der Löschung ist das Gerät auch nicht mehr über die Web-App zugänglich, da das Nutzerkonto vom Gerät entfernt wurde, und somit auch nicht mehr lokalisierbar. Dies sollte also nur durchgeführt werden, wenn sensible Daten auf dem Gerät gespeichert sind auf die per USB zugegriffen werden könnte.

Kommentare sind abgeschaltet.