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 die Zulassungsliste, 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 Zulassungsliste 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

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.

Für Android 8.0 mussten Sie privilegierte Apps in den XML-Dateien der Systemkonfiguration im Verzeichnis „ /etc/permissions “ ausdrücklich auf die Positivliste setzen. In Android 9 und höher müssen privilegierte Berechtigungen zugelassen werden oder das Gerät kann nicht gestartet werden.

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 beschränken Apps auf den Zugriff auf die unveränderlichen Gerätekennungen (IDs) , es sei denn, sie sind für privilegierte Berechtigungen zugelassen . (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.