Uprawnienia Androida zapewniają kontrolę, która zwiększa świadomość użytkowników i ogranicza dostęp aplikacji do danych wrażliwych. Konfigurowanie uprawnień na urządzeniach z Androidem 8.0 i starszym obejmuje dodawanie aplikacji do listy dozwolonych. Bez tego uprzywilejowane aplikacje są wyłączone, nawet jeśli znajdują się w ścieżce priv-app
. Na urządzeniach z Androidem 9 lub nowszym, które próbują używać aplikacji, które nie są prawidłowo dodane do listy dozwolonych, nie można uruchomić systemu.
W Androidzie 10 wprowadzono pojęcie roli, czyli unikalnej nazwy w systemie powiązanej z określonymi wymaganiami i uprawnieniami. Przypisuj aplikacjom role, aby przyznawać im uprawnienia do określonych celów, i konfiguruj role domyślne za pomocą zasobów konfiguracji platformy.
Większa ochrona przed potencjalnie szkodliwymi aplikacjami (PHA) zapewnia:
- Przejrzystość w zakresie działania potencjalnie szkodliwych aplikacji.
- Użytkownik ma kontrolę nad działaniem aplikacji.
- Deweloperzy aplikacji mogą korzystać z danych prywatnych chronionych przez uprawnienia.
Instalowanie pakietów i uprawnienia
W Androidzie 9 i starszych wersjach funkcje instalowania pakietów i zarządzania uprawnieniami były zawarte w pakiecie PackageInstaller
(//packages/apps/PackageInstaller
). W Androidzie 10 i nowszych wersjach funkcja zarządzania uprawnieniami znajduje się w osobnym pakiecie PermissionController
(//packages/apps/PermissionController
). Ilustracja 1 pokazuje, gdzie w Androidzie 10 znajdują się te 2 pakiety.

Rysunek 1. Funkcje instalowania pakietów i zarządzania uprawnieniami w Androidzie 10
Listy dozwolonych i dostęp
W Androidzie 6.0 i nowszym aplikacje proszą o dostęp do uprawnień niebezpiecznych w czasie działania. Android 10 dodaje uprawnienia środowiska wykonawczego rozpoznawania aktywności, które wyświetlają użytkownikowi prośbę o zmodyfikowanie lub zezwolenie na niebezpieczne uprawnienia.
W Androidzie 8.0 aplikacje z uprawnieniami musiały być wyraźnie dodawane do listy dozwolonych w plikach XML konfiguracji systemu w katalogu /etc/permissions
.
W Androidzie 9 i nowszych wersjach uprawnienia uprzywilejowane muszą być dodane do listy dozwolonych, w przeciwnym razie urządzenie nie uruchomi się.
Aby ograniczyć widoczność wewnętrznych interfejsów API i zapobiec przypadkowemu uzyskiwaniu przez aplikacje dostępu do bibliotek platformy, w Androidzie 7.0 wprowadzono przestrzenie nazw bibliotek natywnych. Dzięki temu biblioteki systemowe są oddzielone od bibliotek aplikacji, a producenci urządzeń mogą dodawać własne biblioteki natywne.
Od Androida 10 aplikacje muszą mieć zarówno uprawnienia sygnatury, jak i zgodę użytkownika, aby uzyskać dostęp do treści na ekranie urządzenia. Aplikacje uprzywilejowane, które korzystają z funkcji cichego przechwytywania, np. robienia zrzutów ekranu, powinny zamiast tego używać klasy MediaProjection.
Android 15 wymaga, aby w plikach XML konfiguracji systemu w katalogu /etc/permissions
wyraźnie dodać do listy dozwolonych
uprawnienia związane z podpisem platformy, o które proszą aplikacje inne niż systemowe lub które są nowo wymagane przez aktualizacje aplikacji systemowych.
Przejrzystość i prywatność
W Androidzie 6.0 i nowszym fabryczny adres MAC urządzenia jest chroniony przed dostępem dostawców usług Wi-Fi i analizatorów pakietów. Dodatkowe ograniczenia wprowadzone w Androidzie 10 uniemożliwiają aplikacjom dostęp do niezmiennych identyfikatorów urządzenia, chyba że znajdują się one na liście dozwolonych uprawnień. (W sekcji Łączność znajdziesz powiązane informacje o identyfikatorach urządzeń, ponieważ ma to wpływ na operatorów).
W starszych wersjach Androida (do wersji 9 włącznie) użytkownicy podejmują trwałe decyzje, gdy przyznają aplikacjom dostęp do lokalizacji. W Androidzie 10 i nowszych trójstanowe uprawnienia do lokalizacji dają użytkownikom 3 opcje zezwalania aplikacjom na dostęp do lokalizacji urządzenia. Te wymagania dotyczące uprawnień są stosowane w przypadku aplikacji na Androidzie 10 niezależnie od docelowego pakietu SDK.
Konfigurowanie uprawnień do innych funkcji związanych z przejrzystością i prywatnością od Androida 10
- Przypomnienie o
dostępie do lokalizacji w tle informuje użytkowników, kiedy aplikacja uzyskuje dostęp do lokalizacji urządzenia za pomocą uprawnienia
ACCESS_FINE_LOCATION
w tle. - Dane dotyczące powiązań z kontaktami, którymi zarządza komponent dostawcy kontaktów, są dostępne w inny sposób: aplikacje nie mogą zapisywać ani odczytywać danych powiązań z kontaktami w bazie danych. Dotyczy to interfejsów API związanych z wywołującym.
Uproszczone konfiguracje
Konfiguracje uprawnień zostały uproszczone w przypadku Androida 6.0 i nowszych wersji.
- Funkcje otoczenia w przypadku usług uruchamianych przez
init
przechowują wszystkie aspekty konfiguracji usługi w jednym.rc
pliku. Podczas ustawiania uprawnień usług, które nie są uruchamiane przezinit
, skonfiguruj uprawnienia systemu plików za pomocąfs_config.c
. - Android w wersji 7.x i starszych rozszerza mechanizm identyfikatorów Androida (AID), używając pliku
android_filesystem_config.h
specyficznego dla urządzenia, aby określić możliwości systemu plików lub niestandardowe identyfikatory AID producenta urządzenia. Android 8.0 i nowsze wersje obsługują nową metodę rozszerzania możliwości systemu plików. - W Androidzie 8.0 obsługa poleceń USB została przeniesiona ze skryptów specyficznych dla urządzenia
init
(zastępujących warstwy HAL) do natywnego demona USB. Interfejs USB HAL musi być zaimplementowany na każdym urządzeniu z Androidem 8.0 lub nowszym.