<span class="mw-page-title-main">Berechtigungen</span>
Das Berechtigungssystem ist eine zentrale Sicherheitsfunktion in Android. Es schafft Transparenz für den Benutzer und erschwert es schädlichen Apps, Zugriff auf Geräte-Funktionen zu nehmen, die vom Benutzer nicht erlaubt wurden.
Da Android in der Basis auf den Linux-Kernel aufsetzt, kann man auch im Berechtigungssystem Ähnlichkeiten zwischen Android und anderen Linux-Distributionen erkennen. So besitzt auch Android Gruppen und Benutzer, die allerdings in einem anderen Zusammenhang als üblich verwendet werden.
Berechtigungen
Die Berechtigungen auf einzelne Systemressourcen (wie bspw. die Kamera, dem externen Speicher o.Ä.) werden vom Kernel anhand der Gruppen- und Benutzerzugehörigkeit eines Prozesses ermittelt. Fordert ein Prozess den Zugriff auf eine bestimmte Ressource an, wird geprüft, ob der Benutzer - oder die dem Benutzer zugeteilten Gruppen - die Berechtigung besitzt, auf diese Ressource zuzugreifen. In Android werden i.d.R. alle Rechte über die Gruppen eingestellt.
Die Zugehörigkeit zu Gruppen bestimmt der Entwickler einer App über spezielle Berechtigungen, die er bei der Erstellung der App in die Konfigurationsdatei AndroidManifest.xml eintragen muss. Unter den Berechtigungen (eine Liste ist hier zu finden) sind wiederum verschiedene Gruppen zusammengefasst, wodurch festgelegt wird, welcher Zugriff durch welche Berechtigung gewährt wird. Diese Zuordnung der Gruppen zu den einzelnen Berechtigungen wird in einer XML-Datei auf der /system-Partition festgehalten (/system/etc/permissions/platform.xml).
Zuweisung von Rechten
Die Zuweisung von bestimmten Rechten für eine App wird grundsätzlich bei der Installation vorgenommen. Hierfür bekommt jede App einen eigenen, neuen Benutzer mit einer neuen und eindeutigen Benutzer-ID angelegt und permanent zugewiesen. Anhand der angeforderten Berechtigungen des Entwicklers kann diesem Benutzer eine Reihe von Gruppen zugewiesen werden, die unter der jeweils angeforderten Berechtigung zusammengefasst wurden. Somit bekommt der Benutzer, unter welcher ID die App später ausgeführt wird, ausschließlich den bei der Installation zugewiesenen Zugriff.
Klassifizierung/Gruppierung von Berechtigungen
In Android werden grundsätzlich zwei Gruppen von Berechtigungen unterscheiden, normale und gefährliche Berechtigungen.[1]
Normale Berechtigungen sind Berechtigungen zu Bereichen und/oder Ressourcen des Systems außerhalb der Sandbox, in welcher die App ausgeführt wird. Es besteht generell ein geringes Risiko für die persönlichen Daten des Benutzers, sowie die Funktionalität des Systems. Ein Beispiel für eine solche Berechtigung ist das Setzen der Zeitzone. Wenn eine App deklariert, dass es eine solche Berechtigung benötigt, wird diese grundsätzlich automatisch vom System gebilligt. Eine Liste von Berechtigungen, die als normal eingestuft sind, ist auf der Android Developer-Seite zu finden.
Bei einer gefährlichen Berechtigung besteht im Gegensatz die Möglichkeit, auf Daten oder Ressourcen zuzugreifen, die die persönlichen und/oder gespeicherten Daten des Nutzers betreffen, bspw. der Zugriff auf die im System gespeicherten Kontakte. Wenn eine App eine solche Berechtigung erfordert, muss dies grundsätzlich durch den Benutzer in einem Dialogfenster bestätigt werden.
Zudem sind die Berechtigungen, die als gefährlich eingestuft wurden, in Gruppen von Berechtigungen zusammengefasst. So ist zum Beispiel die Berechtigung zum Lesen von Kontakten (READ_CONTACTS
) mit den Berechtigungen Erstellen/Ändern/Löschen von Kontakten (WRITE_CONTACTS
) und Zugriff auf die Konten (Google, Mail, ...), GET_ACCOUNTS
, zu der Berechtigungsgruppe CONTACTS
zusammengefasst. Erfordert eine App Zugriff auf eine spezielle Berechtigung, die in einer Berechtigungsgruppe organisiert ist, wird der Nutzer im Berechtigungsdialog allgemein gefragt, ob er der App Zugriff auf diese Berechtigungsruppe geben möchte, oder nicht. Hat der Nutzer diese Nachfrage bestätigt und erfragt die App eine andere Berechtigung der selben, bereits gewährten, Berechtigungsgruppe, wird dieser vom System automatisch stattgegeben.
Beispiel:
Die App Beispiel erfordert die Berechtigung GET_ACCOUNTS
beim Start. Hierbei wird der Nutzer gefragt, ob er der App Zugriff auf die Kontakte geben möchte oder nicht, welche der Nutzer zustimmt. Bei einer weiteren Aktion in der App erfragt die App den Zugriff, die Kontakte lesen zu dürfen (READ_CONTACTS
). Anstelle den Nutzer erneut nach der Berechtigung zu fragen, stimmt das System dieser Anfrage automatisch zu, obwohl diese explizite Berechtigungsanforderung noch nicht durch den Benutzer zugestimmt wurde; die Zustimmung zu der Gruppe reicht aus, um der App alle darin befindlichen Berechtigungen zu gewähren.
Berechtigungen ab Android 6.0 Marshmallow
Im Android M Release (
Berechtigung einschränken
Ab Android
Einzelnachweise
- ↑ Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2017-03-21 (deutsch).Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.
- ↑ Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. In: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127. Abgerufen am 2016-02-03.Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 127.