Android-Berechtigungen

Android-Berechtigungen bieten Steuerelemente, die das Benutzerbewusstsein erhöhen und den Zugriff einer App auf vertrauliche Daten einschränken. Das Konfigurieren von Berechtigungen unter Android 8.0 und niedriger umfasst Whitelists, ohne die privilegierte Apps deaktiviert werden, selbst wenn sie sich im priv-app Pfad befinden. Unter Android 9 und höher wird ein Gerät, das versucht, Apps zu verwenden, die nicht ordnungsgemäß auf der Whitelist stehen, nicht gestartet.

Android 10 führte das Konzept einer Rolle ein, 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) wird verbessert

  • Transparenz über potenziell schädliches App-Verhalten.
  • Benutzerkontrolle über das App-Verhalten.
  • Ermessen der App-Entwickler bei der Verwendung privater Daten, geschützt durch Berechtigungen.

Paketinstallation und Berechtigung

In Android 9 und niedriger waren die Paketinstallations- und Berechtigungssteuerungsfunktionen im PackageInstaller -Paket ( //packages/apps/PackageInstaller ) enthalten. In Android 10 und höher befindet sich die Berechtigungssteuerungsfunktion in einem separaten Paket, PermissionController ( //packages/apps/PermissionController ). Abbildung 1 veranschaulicht, wo sich die beiden Pakete in Android 10 befinden.

Trennung von Paketinstallations- und Berechtigungssteuerungsfunktionen für System-Apps und wie sie von benutzerinstallierten Apps verwendet werden
Abbildung 1. Paketinstallations- und Berechtigungssteuerungsfunktionen in Android 10

Whitelists 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.

Für Android 8.0 mussten Sie privilegierte Apps in den XML-Dateien der Systemkonfiguration im Verzeichnis /etc/permissions explizit auf die Whitelist setzen. In Android 9 und höher müssen privilegierte Berechtigungen auf die Whitelist gesetzt werden oder das Gerät kann nicht booten.

Um die Sichtbarkeit der internen API einzuschränken und zu verhindern, dass Apps versehentlich auf Plattformbibliotheken zugreifen, wurden mit 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, wie z. B. das Aufnehmen eines Screenshots, sollten stattdessen die MediaProjection -Klasse verwenden.

Transparenz und Datenschutz

In Android 6.0 und höher ist eine Gerätefabrik-MAC-Adresse vor dem Zugriff durch Wi-Fi-Dienstanbieter und Paketanalysatoren geschützt. Zusätzliche Einschränkungen ab Android 10 schränken den Zugriff von Apps auf die unveränderlichen Gerätekennungen (IDs) ein , es sei denn, sie sind für privilegierte Berechtigungen auf der Whitelist aufgeführt . (Der Abschnitt Konnektivität enthält eine verwandte Diskussion über Gerätekennungen , da dies Auswirkungen auf die Netzbetreiber hat.)

Auf Android 9 und niedriger treffen Benutzer dauerhafte Entscheidungen, wenn sie Apps den Standortzugriff gewähren. Ab Android 10 bietet eine dreistufige Standortberechtigungsfunktion Benutzern drei Optionen, um App-Zugriff auf den Standort eines Geräts zu ermöglichen. Diese Berechtigungsanforderungen gelten unabhängig vom Ziel-SDK für Apps in Android 10.

Konfigurieren Sie Berechtigungen für andere Transparenz- und Datenschutzfunktionen ab Android 10

Optimierte Konfigurationen

Berechtigungskonfigurationen wurden für Android 6.0 und höher optimiert.

  • Umgebungsfunktionen für von init gestartete Dienste halten alle Aspekte der Dienstkonfiguration in einer einzigen .rc -Datei. Wenn Sie Funktionen für Dienste festlegen, die nicht von init gestartet werden, konfigurieren Sie stattdessen Dateisystemfunktionen mit fs_config.c .
  • Android 7.x und niedriger erweitern den Android IDs (AIDs)-Mechanismus, indem eine gerätespezifische android_filesystem_config.h -Datei verwendet wird, 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 Handhabung von USB-Befehlen aus gerätespezifischen init -Skripten (ein Ersatz für HAL-Schichten) und 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 gestartet wird.