Android-Berechtigungen bieten Kontrollen, die das Bewusstsein der Benutzer erhöhen und den Zugriff einer App auf vertrauliche Daten einschränken. Das Konfigurieren von Berechtigungen auf Android 8.0 und niedriger umfasst die Zulassungsliste, ohne die privilegierte Apps deaktiviert werden, selbst wenn sie sich im priv-app
Pfad befinden. Unter Android 9 und höher startet ein Gerät, das versucht, Apps zu verwenden, die nicht ordnungsgemäß auf der Zulassungsliste stehen, nicht.
Mit Android 10 wurde das Konzept einer Rolle eingeführt, einem eindeutigen Namen innerhalb des Systems, der mit bestimmten Anforderungen und Privilegien verbunden ist. Weisen Sie Apps Rollen zu, um ihnen Berechtigungen für einen bestimmten Zweck zu erteilen, und konfigurieren Sie Standardrollen mithilfe von Plattformkonfigurationsressourcen.
Der erhöhte Schutz vor potenziell schädlichen Apps (PHAs) verbessert sich
- Transparenz über potenziell schädliches App-Verhalten.
- Benutzerkontrolle über das App-Verhalten.
- Der Ermessensspielraum der App-Entwickler bei der Verwendung privater Daten, geschützt durch Berechtigungen.
Paketinstallation und -berechtigung
In Android 9 und niedriger waren die Paketinstallations- und Berechtigungskontrollfunktionen im PackageInstaller
Paket ( //packages/apps/PackageInstaller
) enthalten. In Android 10 und höher befindet sich die Berechtigungskontrollfunktion in einem separaten Paket, PermissionController
( //packages/apps/PermissionController
). Abbildung 1 zeigt, wo sich die beiden Pakete in Android 10 befinden.
![Trennung der Paketinstallations- und Berechtigungskontrollfunktionen für System-Apps und für die Verwendung durch vom Benutzer installierte Apps](https://source.android.com/static/docs/core/permissions/images/package-install.png?authuser=6&hl=de)
Zulassungslisten und Zugriff
In Android 6.0 und höher fordern Apps zur Laufzeit Zugriff auf gefährliche Berechtigungen an. Android 10 fügt Laufzeitberechtigungen für die Aktivitätserkennung (AR) hinzu, die den Benutzer auffordern, gefährliche Berechtigungen zu ändern oder zuzulassen.
Android 8.0 erforderte, dass Sie privilegierte Apps in den XML-Systemkonfigurationsdateien im Verzeichnis /etc/permissions
explizit auf die Zulassungsliste setzen. In Android 9 und höher müssen privilegierte Berechtigungen auf die Zulassungsliste gesetzt werden, sonst kann das Gerät nicht booten.
Um die interne API-Sichtbarkeit einzuschränken und zu verhindern, dass Apps versehentlich auf Plattformbibliotheken zugreifen, wurden in Android 7.0 Namespaces für native Bibliotheken eingeführt. Dadurch werden Systembibliotheken von Anwendungsbibliotheken getrennt, und Gerätehersteller können ihre eigenen nativen Bibliotheken hinzufügen.
Ab Android 10 müssen Apps sowohl über Signaturberechtigungen als auch über die Zustimmung des Benutzers verfügen, um auf den Bildschirminhalt eines Geräts zugreifen zu können . Privilegierte Apps, die auf die stille Aufnahmefunktion angewiesen sind, z. B. das Erstellen eines Screenshots, sollten stattdessen die MediaProjection- Klasse verwenden.
Transparenz und Privatsphäre
In Android 6.0 und höher ist die werkseitige MAC-Adresse eines Geräts vor dem Zugriff durch WLAN-Dienstanbieter und Paketanalysatoren geschützt. Zusätzliche Einschränkungen ab Android 10 beschränken den Zugriff von Apps auf die unveränderlichen Gerätekennungen (IDs), es sei denn, sie stehen auf der Zulassungsliste für privilegierte Berechtigungen . (Der Abschnitt „Konnektivität“ bietet eine entsprechende Diskussion über Gerätekennungen , da diese Auswirkungen auf Netzbetreiber haben.)
Unter Android 9 und niedriger treffen Benutzer dauerhafte Entscheidungen, wenn sie Apps Standortzugriff gewähren. Ab Android 10 bietet eine Tristate-Standortberechtigungsfunktion Benutzern drei Optionen, um der App Zugriff auf den Standort eines Geräts zu gewähren. Diese Berechtigungsanforderungen gelten für Apps in Android 10, unabhängig vom Ziel-SDK.
Konfigurieren Sie Berechtigungen für andere Transparenz- und Datenschutzfunktionen ab Android 10
- Die Hintergrundzugriffsstandorterinnerung zeigt Benutzern an, wenn eine App mit der Berechtigung
ACCESS_FINE_LOCATION
im Hintergrund auf den Standort ihres Geräts zugreift. - Auf kontaktaffinitätsbezogene Daten, die von der Kontaktanbieterkomponente verwaltet werden, wird anders zugegriffen: Apps können nicht in die Kontaktaffinitätsdaten in der Datenbank schreiben oder daraus lesen. Dies wirkt sich auf aufruferbezogene APIs aus.
Optimierte Konfigurationen
Die Berechtigungskonfigurationen wurden für Android 6.0 und höher optimiert.
- Ambient-Funktionen für von
init
gestartete Dienste halten alle Aspekte der Dienstkonfiguration in einer einzigen.rc
Datei fest. Wenn Sie Funktionen für Dienste festlegen, die nicht voninit
gestartet werden, konfigurieren Sie die Dateisystemfunktionen stattdessen mitfs_config.c
. - Android 7.x und niedriger erweitern den Android-IDs-Mechanismus (AIDs), indem sie eine gerätespezifische Datei
android_filesystem_config.h
verwenden, um Dateisystemfunktionen und/oder benutzerdefinierte Gerätehersteller-AIDs anzugeben. Android 8.0 und höher unterstützt eine neue Methode zur Erweiterung der Dateisystemfunktionen . - In Android 8.0 wurde die Verarbeitung von USB-Befehlen von gerätespezifischen
init
Skripten (ein Ersatz für HAL-Ebenen) in einen nativen USB-Daemon verschoben. Die USB-HAL- Schnittstelle muss auf jedem Gerät implementiert werden, das mit Android 8.0 und höher startet.