Uprawnienia Androida zapewniają ustawienia, które zwiększają świadomość
użytkowników i ograniczają dostęp aplikacji do danych wrażliwych. Konfigurowanie uprawnień w Androidzie 8.0 i starszych obejmuje listę dozwolonych, bez której aplikacje z uprawnieniami są wyłączone, nawet jeśli znajdują się na ścieżce priv-app
. W Androidzie 9 i nowszych wersjach urządzenie, które próbuje użyć aplikacji, które nie są prawidłowo dodane do listy dozwolonych, nie będzie się uruchamiać.
Android 10 wprowadził pojęcie roli, czyli unikalnego w systemie nazwy powiązanej z określonymi wymaganiami i uprawnieniami. Przypisz aplikacjom role, aby przyznać im uprawnienia do określonych celów, i skonfiguruj domyślne role za pomocą zasobów konfiguracji platformy.
Zwiększona ochrona przed potencjalnie szkodliwymi aplikacjami poprawia:
- przejrzystość dotycząca potencjalnie szkodliwego działania aplikacji;
- kontrola użytkownika nad działaniem aplikacji.
- deweloperzy aplikacji mogą używać danych prywatnych chronionych przez uprawnienia według własnego uznania;
Instalowanie pakietów i uprawnienia
W Androidzie 9 i starszych funkcje instalowania pakietów i zarządzania uprawnieniami były zawarte w pakiecie PackageInstaller
(//packages/apps/PackageInstaller
). W Androidzie 10 i nowszych funkcja zarządzania uprawnieniami znajduje się w oddzielnym pakiecie PermissionController
(//packages/apps/PermissionController
). Rysunek 1 pokazuje, gdzie znajdują się te 2 pakiety w Androidzie 10.
Rysunek 1. Funkcje instalowania pakietów i zarządzania uprawnieniami w Androidzie 10
Listy dozwolonych i dostęp
W Androidzie 6.0 i nowszych aplikacje proszą o dostęp do niebezpiecznych uprawnień w czasie działania. Android 10 dodaje uprawnienia do rozpoznawania aktywności (AR) w czasie działania, które wymagają od użytkownika zmodyfikowania lub zezwolenia na niebezpieczne uprawnienia.
Android 8.0 wymagał dodania aplikacji z uprawnieniami do listy dozwolonych w plikach XML konfiguracji systemu w katalogu /etc/permissions
.
W Androidzie 9 i nowszych uprawnienia te muszą być na liście dozwolonych. W przeciwnym razie urządzenie nie będzie się mogło uruchomić.
Aby ograniczyć wewnętrzną widoczność interfejsów API i zapobiegać przypadkowemu dostępowi aplikacji do bibliotek platformy, w Androidzie 7.0 wprowadziliśmy przestrzenie nazw dla bibliotek natywnych. Oddziela to biblioteki systemowe od bibliotek aplikacji, a producenci urządzeń mogą dodawać własne biblioteki natywne.
Od Androida 10 aplikacje muszą mieć zarówno uprawnienia do podpisu, jak i zgodę użytkownika na dostęp do treści na ekranie urządzenia. Aplikacje z uprawnieniami, które korzystają z funkcji cichego przechwytywania, np. robienia zrzutów ekranu, powinny zamiast tego używać klasy MediaProjection.
W Androidzie 15 musisz w plikach XML konfiguracji systemu w katalogu /etc/permissions
wyraźnie dodawać do listy dozwolonych uprawnienia do podpisywania platformy, których zażądały aplikacje niesystemowe lub które zostały dodane przez aktualizacje aplikacji systemowych.
Przejrzystość i prywatność
W Androidzie 6.0 i nowszych adres MAC fabryczny urządzenia jest chroniony przed dostępem przez dostawców usług Wi-Fi i analizatory pakietów. Dodatkowe ograniczenia w Androidzie 10 uniemożliwiają aplikacjom dostęp do niezmiennych identyfikatorów urządzenia, chyba że są dodane do listy zezwalających uprawnień. W sekcji Połączenia znajdziesz powiązane artykuły na temat identyfikatorów urządzeń, które mają wpływ na operatorów.
W Androidzie 9 i starszych wersjach użytkownicy podejmują trwałe wybory podczas przyznawania aplikacjom dostępu do lokalizacji. Od Androida 10 użytkownicy mają 3 opcje zezwolenia aplikacji na dostęp do lokalizacji urządzenia. Te wymagania dotyczące uprawnień są stosowane do aplikacji na Androida 10 niezależnie od docelowego pakietu SDK.
Konfigurowanie uprawnień do innych funkcji przejrzystości i prywatności od Androida 10
- Przypomnienie o
dostępie do lokalizacji w tle pokazuje użytkownikom, gdy aplikacja uzyskuje dostęp do lokalizacji urządzenia przy użyciu uprawnień
ACCESS_FINE_LOCATION
w tle. - Dane związane z powiązaniami kontaktów, zarządzane przez komponent Usługa kontaktów, są dostępne w inny sposób: aplikacje nie mogą zapisywać ani odczytywać danych powiązań kontaktów w bazie danych. Ma to wpływ na interfejsy API związane z wywołującym.
Uproszczone konfiguracje
Konfiguracje uprawnień zostały uproszczone w przypadku Androida 6.0 lub nowszego.
- Funkcje tła dla usług uruchamianych przez
init
przechowują wszystkie aspekty konfiguracji usługi w pojedynczym pliku.rc
. Podczas konfigurowania uprawnień usług nieuruchamianych przezinit
użyj uprawnień systemu plików zamiastfs_config.c
. - Android 7.x i starsze wersje rozszerzają mechanizm identyfikatorów Androida (AID) za pomocą pliku
android_filesystem_config.h
, który służy do określania możliwości systemu plików lub niestandardowych identyfikatorów 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
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.