Uprawnienia Androida zapewniają kontrolę, która zwiększa świadomość użytkowników i ogranicza dostęp aplikacji do wrażliwych danych. Konfigurowanie uprawnień w systemie Android 8.0 i starszych obejmuje umieszczanie na liście dozwolonych, bez której aplikacje uprzywilejowane są wyłączane, nawet jeśli znajdują się w ścieżce priv-app
. W systemie Android 9 i nowszym urządzenie próbujące korzystać z aplikacji, które nie znajdują się na odpowiedniej liście dozwolonych, nie uruchamia się.
W Androidzie 10 wprowadzono koncepcję roli , czyli unikalnej nazwy w systemie powiązanej z określonymi wymaganiami i przywilejami. Przypisz role do aplikacji, aby przyznać im uprawnienia do określonego celu i skonfiguruj role domyślne przy użyciu zasobów konfiguracyjnych platformy.
Zwiększona ochrona przed potencjalnie szkodliwymi aplikacjami (PHA) uległa poprawie
- Przejrzystość potencjalnie szkodliwego zachowania aplikacji.
- Kontrola użytkownika nad zachowaniem aplikacji.
- Decyzja twórców aplikacji dotycząca korzystania z prywatnych danych chronionych uprawnieniami.
Instalacja pakietu i pozwolenie
W systemie Android 9 i niższych funkcje instalacji pakietu i kontroli uprawnień były zawarte w pakiecie PackageInstaller
( //packages/apps/PackageInstaller
). W systemie Android 10 i nowszych funkcja kontroli uprawnień znajduje się w osobnym pakiecie PermissionController
( //packages/apps/PermissionController
). Rysunek 1 ilustruje lokalizację obu pakietów w systemie Android 10.
Listy dozwolonych i dostęp
W systemie Android 6.0 i nowszych aplikacjach żąda dostępu do niebezpiecznych uprawnień w czasie działania . W systemie Android 10 dodano uprawnienia wykonawcze do rozpoznawania aktywności (AR), które zachęcają użytkownika do modyfikacji lub zezwolenia na niebezpieczne uprawnienia.
Android 8.0 wymagał jawnego umieszczenia aplikacji uprzywilejowanych na liście plików XML konfiguracji systemu w katalogu /etc/permissions
. W Androidzie 9 i nowszych uprawnienia uprzywilejowane muszą znajdować się na liście dozwolonych , w przeciwnym razie urządzenie nie będzie mogło się uruchomić.
Aby ograniczyć widoczność wewnętrznego interfejsu API i uniemożliwić aplikacjom przypadkowy dostęp do bibliotek platformy, w systemie Android 7.0 wprowadzono przestrzenie nazw dla bibliotek natywnych . Oddziela to biblioteki systemowe od bibliotek aplikacji, a producenci urządzeń mogą dodawać własne biblioteki natywne.
Począwszy od Androida 10, aplikacje muszą mieć zarówno uprawnienia do podpisu, jak i zgodę użytkownika, aby uzyskać dostęp do zawartości ekranu urządzenia . Uprzywilejowane aplikacje korzystające z funkcji cichego przechwytywania, na przykład robienia zrzutów ekranu, powinny zamiast tego używać klasy MediaProjection .
Przejrzystość i prywatność
W systemie Android 6.0 i nowszych fabryczny adres MAC urządzenia jest chroniony przed dostępem dostawców usług Wi-Fi i analizatorów pakietów. Dodatkowe ograniczenia począwszy od Androida 10 ograniczają aplikacjom dostęp do niezmiennych identyfikatorów urządzeń (ID), chyba że znajdują się one na liście dozwolonych z uprawnieniami uprzywilejowanymi . (Sekcja Łączność zawiera powiązaną dyskusję na temat identyfikatorów urządzeń , ponieważ ma to wpływ na operatorów).
Na Androidzie 9 i starszych użytkownicy stale decydują się na przyznanie aplikacjom dostępu do lokalizacji. Począwszy od Androida 10, trójstanowa funkcja uprawnień do lokalizacji zapewnia użytkownikom trzy opcje zezwalania aplikacji na dostęp do lokalizacji urządzenia. Te wymagania dotyczące uprawnień mają zastosowanie do aplikacji w systemie Android 10 niezależnie od docelowego zestawu SDK.
Skonfiguruj uprawnienia dla innych funkcji przejrzystości i prywatności, począwszy od Androida 10
- Przypomnienie o lokalizacji dostępu w tle pokazuje użytkownikom, kiedy aplikacja uzyskuje dostęp do lokalizacji ich urządzenia przy użyciu uprawnienia
ACCESS_FINE_LOCATION
w tle. - Dostęp do danych związanych z koligacjami kontaktów, którymi zarządza komponent Dostawca kontaktów, odbywa się w różny sposób: aplikacje nie mogą zapisywać ani odczytywać danych o koligacjach kontaktów w bazie danych. Ma to wpływ na interfejsy API związane z wywołującym .
Usprawnione konfiguracje
Udoskonalono konfiguracje uprawnień dla systemu Android 6.0 i nowszych wersji.
- Możliwości otoczenia dla usług uruchamianych przez
init
przechowują wszystkie aspekty konfiguracji usług w jednym pliku.rc
. Ustawiając możliwości usług, które nie są uruchamiane przezinit
, skonfiguruj możliwości systemu plików, używając zamiast tegofs_config.c
. - Android 7.x i starsze wersje rozszerzają mechanizm identyfikatorów Androida (AID), używając specyficznego dla urządzenia pliku
android_filesystem_config.h
do określenia możliwości systemu plików i/lub niestandardowych identyfikatorów AID producenta urządzenia. Android 8.0 i nowsze obsługują nową metodę rozszerzania możliwości systemu plików . - W systemie Android 8.0 obsługa poleceń USB została przeniesiona ze skryptów
init
specyficznych dla urządzenia (zastąpienie warstw HAL) do natywnego demona USB. Interfejs USB HAL musi być zaimplementowany na każdym urządzeniu z systemem Android 8.0 i nowszym.