Nowości w Androidzie 10 dla firm

Na tej stronie znajdziesz przegląd nowych interfejsów API dla firm, funkcji i zmian w działaniu wprowadzonych w Androidzie 10.

Profile służbowe na urządzeniach należących do firmy

Android 10 wprowadza nowe funkcje obsługi administracyjnej i atestów na urządzeniach należących do firmy, które wymagają tylko profilu służbowego.

Ulepszone narzędzia do obsługi administracyjnej profili służbowych

Profile służbowe możesz obsługiwać na urządzeniach z Androidem 10 i nowszych zarejestrowanych przy użyciu kodu QR lub rejestracji typu zero-touch. Podczas udostępniania urządzenia należącego do firmy nowa intencja dodatkowa pozwala aplikacjom kontrolera zasad urządzeń (DPC) na inicjowanie profilu służbowego lub w pełni zarządzaną konfigurację. Po utworzeniu profilu służbowego lub stworzeniu pełnego zarządzania DPC musi uruchomić ekrany zgodności z zasadami, aby wyegzekwować wstępne zasady.

W pliku manifestu DPC zadeklaruj nowy filtr intencji dla GET_PROVISIONING_MODE w aktywności i dodaj uprawnienie BIND_DEVICE_ADMIN, aby zapobiec rozpoczynaniu tego działania przez dowolne aplikacje. Na przykład:

<activity
    android:name=".GetProvisioningModeActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action
            android:name="android.app.action.GET_PROVISIONING_MODE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

Podczas udostępniania administracyjnej system uruchamia działanie powiązane z filtrem intencji. Celem tego działania jest określenie trybu zarządzania (profil służbowy lub w pełni zarządzany).

Przed określeniem odpowiedniego trybu zarządzania dla urządzenia warto pobrać dodatki obsługi administracyjnej. Aktywność może wywołać metodę getIntent(), aby pobrać:

DPC może też utworzyć nową intencję związaną z wynikami i dodać do niej te dodatkowe elementy:

Aby ustawić tryb zarządzania na urządzeniu, wywołaj funkcję putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode), gdzie desiredProvisioningMode to:

  • Profil służbowy: PROVISIONING_MODE_MANAGED_PROFILE
  • Usługa w pełni zarządzana: PROVISIONING_MODE_FULLY_MANAGED_DEVICE

Wypełnij profil służbowy lub w pełni zarządzaną obsługę administracyjną, wysyłając szczegóły obsługi administracyjnej do konfiguracji za pomocą setResult(RESULT_OK, Intent) i zamknij wszystkie aktywne ekrany za pomocą finish().

Po zakończeniu obsługi administracyjnej DPC udostępnia nową intencję, aby uruchamiać ekrany zgodności i egzekwować wstępne ustawienia zasad. Na urządzeniach z profilem służbowym ekrany zgodności są wyświetlane w profilu służbowym. DPC musi dopilnować, aby ekrany zgodności były wyświetlane użytkownikom nawet wtedy, gdy uciekną z procesu konfiguracji.

W pliku manifestu DPC zadeklaruj nowy filtr intencji dla ADMIN_POLICY_COMPLIANCE w aktywności i dodaj uprawnienie BIND_DEVICE_ADMIN, aby zapobiec rozpoczynaniu tego działania przez dowolne aplikacje. Na przykład:

<activity
    android:name=".PolicyComplianceActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action android:name="android.app.action.ADMIN_POLICY_COMPLIANCE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

DPC musi używać tej nowej intencji, zamiast słuchać transmisji ACTION_PROFILE_PROVISIONING_COMPLETE.

Działanie powiązane z filtrem intencji może wywołać metodę getIntent() w celu pobrania EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE. Po sprawdzeniu zgodności z zasadami ADMIN_POLICY_COMPLIANCE musi zwrócić setResult(RESULT_OK, Intent) i zamknąć wszystkie aktywne ekrany za pomocą finish().

Urządzenia w pełni zarządzane wracają na ekran główny. Urządzenia z profilem służbowym proszą użytkowników o dodanie konta osobistego przed zwróceniem ich na ekran główny.

Atest identyfikatora urządzenia w profilu służbowym

DPC ustawione jako administrator profilu służbowego obsługiwanego za pomocą rejestracji typu zero-touch mogą otrzymywać identyfikatory atestowanych urządzeń zabezpieczających, takie jak IMEI czy numer seryjny producenta. Urządzenie musi być wyposażone w bezpieczny sprzęt (taki jak zaufanego środowiska wykonawczego (TEE) lub Secure Element (SE)), a także musi obsługiwać atest identyfikatora urządzenia oraz rejestrację typu zero-touch.

Komponent administratora profilu służbowego może wywołać metodę DevicePolicyManager.generateKeyPair(), przekazując co najmniej 1 z parametrów ID_TYPE_SERIAL, ID_TYPE_IMEI lub ID_TYPE_MEID dla argumentu idAttestationFlags.

Więcej informacji o wyodrębnianiu i weryfikowaniu identyfikatorów urządzeń znajdziesz w artykule Weryfikowanie sprzętowych par kluczy przy użyciu atestacji klucza.

Ulepszenia profilu służbowego

Dostępne są nowe interfejsy API do obsługi widoczności kalendarzy na różnych profilach i do blokowania instalacji aplikacji z nieznanych źródeł na całym urządzeniu.

Profil służbowy, nieznane źródła na całym urządzeniu

Aplikacje pobrane z innych źródeł niż Google Play (lub inne zaufane sklepy z aplikacjami) są nazywane aplikacjami pochodzącymi z nieznanych źródeł. Na Androidzie 10 administratorzy profili służbowych mogą uniemożliwić użytkownikom i profilom instalowanie aplikacji z nieznanych źródeł w dowolnym miejscu na urządzeniu, dodając nowe ograniczenie użytkownika DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY. Po dodaniu tego ograniczenia osoba korzystająca z urządzenia nadal będzie mogła instalować aplikacje za pomocą adb.

Aby zapobiec omyłkowemu instalowaniu aplikacji z nieznanych źródeł, zalecamy dodanie tego ograniczenia, ponieważ nie wymaga ono instalowania Usług Google Play. Jeśli chcesz obsługiwać starsze wersje Androida, możesz ustawić wartość konfiguracji zarządzanej dla Google Play.

Ogranicz dozwolone urządzenia wejściowe do profili służbowych

Gdy administratorzy profili służbowych wywołują metodę DevicePolicyManager.setPermittedInputMethods(), użytkownicy mogą korzystać tylko z dozwolonych metod wprowadzania danych w profilu służbowym, a nie całego urządzenia. Zapewnia to im pełną kontrolę nad metodami wprowadzania danych po stronie ich prywatnych.

ciche czyszczenie profili służbowych;

Dodano flagę WIPE_SILENTLY do DevicePolicyManager.wipeData(). Jeśli jest ustawiona flaga, użytkownicy nie są powiadamiani po wyczyszczeniu ich profilu służbowego za pomocą narzędzia wipeData().

Nowe funkcje na w pełni zarządzanych urządzeniach

Android 10 wprowadza nowe funkcje i interfejsy API na potrzeby w pełni zarządzanych urządzeń, w tym ręczne aktualizacje systemu, obsługę kodów QR i NFC o dane logowania do sieci Wi-Fi EAP oraz obsługę DNS przez TLS.

Instalacja ręcznej aktualizacji systemu

W Androidzie 10 administratorzy w pełni zarządzanych urządzeń mogą instalować aktualizacje systemu za pomocą pliku. Ręczne aktualizacje systemu pozwalają administratorom IT na:

  • Zanim zainstalujesz aktualizację na wielu urządzeniach, przetestuj ją na niewielkiej liczbie urządzeń.
  • Unikaj wielokrotnego pobierania plików w sieciach o ograniczonej przepustowości.
  • Rozłóż instalacje w czasie lub aktualizuj urządzenia tylko wtedy, gdy nie są używane.

Po pierwsze administrator IT ustawia zasady opóźnionych aktualizacji systemu, które w razie potrzeby opóźniają automatyczną instalację. Następnie DPC urządzenia wywołuje metodę installSystemUpdate(), podając ścieżkę do pliku aktualizacji systemu producenta urządzenia. Przekaż obiekt InstallSystemUpdateCallback, za pomocą którego system może zgłaszać błędy występujące przed ponownym uruchomieniem urządzenia. Jeśli coś pójdzie nie tak, system wywoła metodę onInstallUpdateError() z kodem błędu.

Po ponownym uruchomieniu urządzenia DPC musi potwierdzić pomyślną instalację, korzystając z interfejsu API wersji, np. Build.FINGERPRINT. Jeśli aktualizacja się nie powiedzie, zgłoś to administratorowi IT.

Obsługa administracyjna sieci Wi-Fi EAP

W Androidzie 10 kody QR i dane NFC używane do obsługi administracyjnej urządzeń mogą zawierać konfigurację EAP i dane logowania, w tym certyfikaty. Gdy użytkownik skanuje kod QR lub klika tag NFC, urządzenie automatycznie uwierzytelnia się w lokalnej sieci Wi-Fi przy użyciu protokołu EAP i rozpoczyna proces obsługi administracyjnej bez konieczności wprowadzania dodatkowych danych ręcznie.

Aby uwierzytelnić sieć Wi-Fi za pomocą EAP, dodaj atrybut EXTRA_PROVISIONING_WIFI_SECURITY_TYPE z wartością "EAP". Aby określić uwierzytelnianie EAP, możesz dodać do intencji te dodatki udostępniania:

Obsługa prywatnego DNS

Organizacje mogą używać DNS przez TLS (nazywanym prywatnym DNS na urządzeniach z Androidem), aby uniknąć wycieku zapytań DNS, w tym zapytań dotyczących wewnętrznych nazw hostów. Komponenty administratora w pełni zarządzanych urządzeń mogą kontrolować ustawienia prywatnego DNS urządzenia. Aby ustawić tryb prywatnego DNS, wywołaj:

Gdy DPC wywoła jedną z tych metod, system zwróci wartość PRIVATE_DNS_SET_NO_ERROR, jeśli wywołanie się uda. W przeciwnym razie zostanie zwrócony błąd.

Aby pobrać tryb prywatnego DNS i host ustawiony na urządzeniu, wywołaj getGlobalPrivateDnsMode() i getGlobalPrivateDnsHost(). Aby uniemożliwić użytkownikom zmienianie ustawień prywatnego DNS, dodaj ograniczenie użytkownika DISALLOW_CONFIG_PRIVATE_DNS.

Wykluczenie trybu blokady VPN

Tryb blokady VPN umożliwia kontrolerowi DPC blokowanie ruchu sieciowego, który nie korzysta z VPN. Administratorzy w pełni zarządzanych urządzeń i profili służbowych mogą wyłączyć aplikacje z trybu blokady. Wykluczone aplikacje domyślnie korzystają z VPN, ale automatycznie łączą się z innymi sieciami, gdy sieć VPN jest niedostępna. Wykluczone aplikacje, którym wyraźnie odmówiono dostępu do sieci VPN, będą korzystać tylko z innych sieci.

Aby wykluczyć aplikację z trybu blokady, wywołaj nową metodę DevicePolicyManager setAlwaysOnVpnPackage(), która akceptuje listę wykluczonych pakietów aplikacji. Wszystkie pakiety aplikacji dodawane przez DPC muszą być zainstalowane na urządzeniu w momencie wywołania tej metody. Jeśli aplikacja zostanie odinstalowana i ponownie zainstalowana, musi być ponownie wykluczona. Aby aplikacje, które zostały wcześniej wykluczone z trybu blokady, wywołaj getAlwaysOnVpnLockdownWhitelist().

Aby ułatwić administratorom w pełni zarządzanych urządzeń i profili służbowych uzyskanie stanu blokady, Android 10 dodaje metodę isAlwaysOnVpnLockdownEnabled().

Nowe zakresy przekazywania dostępu

Android 10 rozszerza listę funkcji, które DPC może przekazywać innym, bardziej specjalistycznym aplikacjom. Android grupuje metody interfejsu API potrzebne do wykonania danego zadania w zakresy. Aby przekazać zakres, wywołaj setDelegatedScopes() i przekaż co najmniej 1 z tych zakresów:

Android 10 wprowadza nową klasę DelegatedAdminReceiver do przekazywania dostępu do aplikacji. System używa tego odbiornika do wysyłania wywołań zwrotnych przypominających DPC do przekazywania aplikacji. Ta klasa powinna być implementowana w aplikacjach, w których przekazano dostęp do logowania aktywności w sieci i wyboru certyfikatów. Aby dodać ten komponent do aplikacji z przekazanym dostępem, wykonaj te czynności:

  1. Dodaj podklasę DelegatedAdminReceiver do aplikacji z przekazanym dostępem.
  2. Zadeklaruj w pliku manifestu aplikacji <receiver>, dodając do każdego wywołania zwrotnego działanie intencji-filter. np. ACTION_NETWORK_LOGS_AVAILABLE lub ACTION_CHOOSE_PRIVATE_KEY_ALIAS.
  3. Chroń odbiornik za pomocą uprawnień BIND_DEVICE_ADMIN.

Ten fragment kodu zawiera manifest aplikacji z 1 przekazanym dostępem, która obsługuje zarówno logowanie sieciowe, jak i wybór certyfikatu:

<receiver android:name=".app.DelegatedAdminReceiver"
        android:permission="android.permission.BIND_DELEGATED_ADMIN">
    <intent-filter>
        <action android:name="android.app.admin.action.NETWORK_LOGS_AVAILABLE">
        <action android:name="android.app.action.CHOOSE_PRIVATE_KEY_ALIAS">
    </intent-filter>
    </receiver>

Zapisywanie aktywności sieci

Aby pomóc organizacjom w wykrywaniu i śledzeniu złośliwego oprogramowania, kontrolery DPC mogą rejestrować połączenia TCP i wyszukiwania DNS przez system. W Androidzie 10 administratorzy w pełni zarządzanych urządzeń mogą przekazywać logowanie sieciowe do specjalnej aplikacji.

Aby pobrać logi sieciowe po udostępnieniu wsadu przez system, aplikacje z przekazanym dostępem powinny być najpierw podklasy DelegatedAdminReceiver (zostały opisane wcześniej). W podklasie zaimplementuj wywołanie zwrotne onNetworkLogsAvailable(), postępując zgodnie ze wskazówkami podanymi w artykule Pobieranie dzienników.

Aplikacje z przekazywaniem dostępu mogą wywoływać te metody DevicePolicyManager (przekazywanie parametru null dla argumentu admin):

Aby uniknąć utraty logów, DPC nie powinno włączać logowania sieciowego, jeśli planujesz przekazać dostęp do innej aplikacji. Aplikacja z przekazanym dostępem powinna włączyć i zbierać logi sieciowe. Gdy DPC przekaże logowanie sieci, nie będzie otrzymywać już żadnych wywołań zwrotnych onNetworkLogsAvailable().

Aby dowiedzieć się, jak raportować rejestrowanie aktywności w sieci z aplikacji z przekazanym dostępem, przeczytaj przewodnik dla programistów Rejestrowanie aktywności w sieci.

Wybór certyfikatu

W Androidzie 10 administratorzy w pełni zarządzanych urządzeń, profili służbowych i użytkowników pomocniczych mogą przekazywać wybór certyfikatu specjalnej aplikacji.

Aby wybrać alias certyfikatu, aplikacje z przekazanym dostępem muszą być najpierw podklasy DelegatedAdminReceiver (zostały opisane wcześniej). W podklasie zaimplementuj wywołanie zwrotne onChoosePrivateKeyAlias() i zwróć alias dla preferowanego certyfikatu lub, aby wyświetlić użytkownikowi prośbę o wybranie certyfikatu, zwrócić null.

Wycofanie zasad administrowania urządzeniem

Android 10 uniemożliwia aplikacjom i DPC stosowanie starszych zasad administratora urządzenia. Zalecamy klientom i partnerom przejście na w pełni zarządzane urządzenia lub profile służbowe. Poniższe zasady powodują wywołanie SecurityException po wywołaniu przez administratora urządzenia kierowanego na Androida 10:

Niektóre aplikacje używają funkcji administratora urządzenia do administrowania urządzeniami konsumenckimi. Dotyczy to na przykład zablokowania utraconego urządzenia i wyczyszczenia pamięci. Aby można było to włączyć, wciąż dostępne są te zasady:

Więcej informacji o tych zmianach znajdziesz w sekcji Wycofanie funkcji przez administratora urządzenia.

Nowe funkcje w aplikacjach

Aplikacje kierowane na Androida 10 mogą pytać o złożoność blokady ekranu ustawioną na urządzeniu przed wyświetleniem poufnych danych lub uruchomieniem krytycznych funkcji. Aplikacje wywołujące interfejs KeyChain API korzystają z lepszego działania aplikacji, a dla aplikacji VPN dostępne są też nowe funkcje.

Sprawdzanie jakości blokady ekranu

Począwszy od Androida 10 aplikacje z kluczowymi funkcjami, które wymagają blokady ekranu, mogą wysyłać zapytania dotyczące złożoności blokady ekranu urządzenia lub profilu służbowego. Aplikacje, które wymagają silniejszej blokady ekranu, mogą kierować użytkownika do ustawień systemowej blokady ekranu, co umożliwia im zaktualizowanie ustawień zabezpieczeń.

Aby sprawdzić jakość blokady ekranu:

Aby uruchomić ustawienia systemowej blokady ekranu, użyj opcji ACTION_SET_NEW_PASSWORD z dodatkowym EXTRA_PASSWORD_COMPLEXITY – opcje, które nie są zgodne ze złożonością określoną w dodatkowej intencji, będą wyszarzone. Użytkownicy mogą wybrać jedną z dostępnych opcji blokady ekranu lub zamknąć ekran.

Sprawdzona metoda: wyświetlaj komunikat w aplikacji przed uruchomieniem systemowej strony blokady ekranu. Po wznowieniu działania aplikacji wywołaj ponownie metodę DevicePolicyManager.getPasswordComplexity(). Jeśli silniejsza blokada ekranu jest nadal wymagana, ogranicz dostęp, zamiast ciągle prosić użytkowników o aktualizację ustawień zabezpieczeń.

Obsługa serwera proxy HTTP w aplikacjach VPN

Na Androidzie 10 aplikacje VPN mogą ustawiać serwer proxy HTTP na potrzeby połączenia VPN. Aby można było dodać serwer proxy HTTP, przed wywołaniem VpnService.Builder.setHttpProxy() aplikacja VPN musi skonfigurować instancję ProxyInfo z hostem i portem. System i wiele bibliotek sieciowych używają tego ustawienia serwera proxy, ale nie wymusza on przesyłania przez aplikacje żądań HTTP przez serwer proxy.

Przykładowy kod, który pokazuje, jak skonfigurować serwer proxy HTTP, znajdziesz w przykładowej aplikacji ToyVPN.

Tryby usługi VPN

Aplikacje VPN mogą sprawdzać, czy usługa działa dzięki stałym sieci VPN i czy tryb blokady jest aktywny. Nowe metody dodane w Androidzie 10 pomogą Ci dostosować interfejs. Możesz na przykład wyłączyć przycisk rozłączania, gdy stały VPN steruje cyklem życia usługi.

Po połączeniu z usługą i utworzeniu interfejsu lokalnego aplikacje VPN mogą wywoływać te metody VpnService:

  • isAlwaysOn(), aby sprawdzić, czy system uruchomił usługę z powodu stałego VPN
  • isLockdownEnabled(), aby sprawdzić, czy system blokuje połączenia bez użycia sieci VPN.

Stan Zawsze włączona pozostaje bez zmian, gdy usługa jest uruchomiona, ale stan trybu blokady może się zmienić.

Ulepszenia pęku kluczy

W Androidzie 10 wprowadzono kilka ulepszeń związanych z interfejsem API KeyChain.

Gdy aplikacja wywołuje KeyChain.choosePrivateKeyAlias(), urządzenia z Androidem 10 i nowszym filtrują listę certyfikatów, które może wybrać użytkownik, na podstawie wystawcy i kluczowych algorytmów określonych w połączeniu.

Jeśli na przykład serwer TLS wysyła wiadomość żądania certyfikatu w ramach uzgadniania połączenia TLS, a przeglądarka wywołuje KeyChain.choosePrivateKeyAlias(), prośba o wybór certyfikatu zawiera tylko opcje pasujące do parametru wystawców. Jeśli nie są dostępne żadne opcje dopasowania lub na urządzeniu nie są zainstalowane certyfikaty, użytkownik nie zobaczy prośby o wybór.

Poza tym KeyChain nie wymaga już, aby urządzenie miało blokadę ekranu, zanim będzie można zaimportować klucze lub certyfikaty CA.