Na tej stronie znajdziesz przegląd interfejsów API, funkcji i zmian w działaniu dla firm dostępnych w Androidzie 9.
Interfejs profilu służbowego
Android 9 (poziom interfejsu API 28) zawiera zmiany w interfejsie w domyślnym programie uruchamiającym, aby ułatwić użytkownikom oddzielenie aplikacji osobistych od służbowych. Producenci urządzeń, którzy obsługują tę funkcję, mogą wyświetlać aplikacje użytkowników na osobnych kartach służbowych i osobistych. Ułatwiliśmy też użytkownikom urządzeń włączanie i wyłączanie profilu służbowego przez umieszczenie przełącznika na karcie Praca w programie uruchamiającym.
W przypadku udostępniania profili służbowych i zarządzanych urządzeń Android 9 zawiera animowane ilustracje, które pomagają użytkownikom urządzeń zrozumieć te funkcje.
Przełączanie aplikacji między profilami
Android 9 zawiera interfejsy API, które umożliwiają uruchamianie kolejnej instancji aplikacji w innym profilu i ułatwiają użytkownikom przełączanie się między kontami. Na przykład aplikacja e-mailowa może udostępniać interfejs, który pozwala użytkownikowi przełączać się między profilem osobistym i służbowym w celu uzyskania dostępu do 2 kont e-mail. Wszystkie aplikacje mogą wywoływać te interfejsy API, aby uruchamiać główną aktywność tej samej aplikacji, która jest już zainstalowana w innym profilu. Aby dodać do aplikacji przełączanie kont na różnych profilach, wykonaj podane niżej czynności wywołujące metody klasy CrossProfileApps
:
- Wywołaj
getTargetUserProfiles()
, aby uzyskać listę profili, w których możesz uruchomić kolejną instancję aplikacji. Ta metoda sprawdza, czy aplikacja jest zainstalowana w profilach. - Wywołaj
getProfileSwitchingIconDrawable()
, aby uzyskać ikonę, której możesz używać do reprezentowania innego profilu. - Zadzwoń pod numer
getProfileSwitchingLabel()
, aby uzyskać zlokalizowany tekst zachęcający użytkownika do przełączenia profili. - Wywołaj
startMainActivity()
, aby uruchomić wystąpienie aplikacji w innym profilu.
Sprawdź, czy główne działanie, które chcesz uruchomić, jest zadeklarowane w pliku manifestu aplikacji wraz z akcją intencji ACTION_MAIN
i zawiera kategorię intencji CATEGORY_LAUNCHER
.
Automatyczne włączanie i wyłączanie profili służbowych
Domyślny program uruchamiający (lub aplikacje z uprawnieniami MANAGE_USERS
lub MODIFY_QUIET_MODE
) może włączać i wyłączać profil służbowy, wywołując UserManager.requestQuietModeEnabled()
. Możesz sprawdzić zwracaną wartość, aby dowiedzieć się, czy użytkownik musi potwierdzić swoje dane logowania przed zmianą stanu. Zmiana może nie nastąpić od razu, dlatego zwróć uwagę na transmisję ACTION_MANAGED_PROFILE_AVAILABLE
lub ACTION_MANAGED_PROFILE_UNAVAILABLE
, aby wiedzieć, kiedy należy zaktualizować interfejs.
Aplikacja może sprawdzić stan profilu służbowego, wywołując metodę UserManager.isQuietModeEnabled()
.
Blokowanie dowolnej aplikacji na urządzeniu
Począwszy od Androida 9 właściciele urządzeń i właściciele profili (użytkowników pomocniczych) mogą blokować dowolną aplikację na ekranie urządzenia, przełączając ją w tryb blokowania zadań. Wcześniej deweloperzy musieli dodać obsługę trybu blokowania zadań w swoich aplikacjach. Android 9 rozszerza też interfejsy API do zadań blokowania na właścicieli profili niepowiązanych użytkowników dodatkowych. Aby zablokować aplikację na ekranie:
- Wywołaj
DevicePolicyManager.setLockTaskPackages()
, aby dodać aplikacje do listy dozwolonych w trybie blokady. - Wywołaj
ActivityOptions.setLockTaskEnabled()
, aby włączyć tryb blokowania zadań przez aplikację z listy dozwolonych.
Aby zatrzymać aplikację w trybie blokowania zadań, usuń ją z listy dozwolonych, używając funkcji DevicePolicyManager.setLockTaskPackages()
.
Włącz funkcje interfejsu systemu
Gdy tryb zadań blokowania jest włączony, właściciele urządzeń i profile mogą włączyć na urządzeniu niektóre funkcje interfejsu systemu, wywołując metodę DevicePolicyManager.setLockTaskFeatures()
i przekazując pole bitowe tych flag funkcji:
LOCK_TASK_FEATURE_NONE
LOCK_TASK_FEATURE_SYSTEM_INFO
LOCK_TASK_FEATURE_HOME
- Kolumny
LOCK_TASK_FEATURE_NOTIFICATIONS
można używać tylko w połączeniu z właściwościąLOCK_TASK_FEATURE_HOME
. LOCK_TASK_FEATURE_KEYGUARD
- Kolumny
LOCK_TASK_FEATURE_OVERVIEW
można używać tylko w połączeniu z właściwościąLOCK_TASK_FEATURE_HOME
. LOCK_TASK_FEATURE_GLOBAL_ACTIONS
Możesz wywołać metodę DevicePolicyManager.getLockTaskFeatures()
, aby uzyskać listę funkcji dostępnych na urządzeniu po włączeniu trybu zadań blokowania. Gdy urządzenie wyjdzie z trybu zadań blokady, powróci do stanu określonego przez inne zasady dotyczące urządzeń.
Blokuj okna błędów
W niektórych środowiskach, takich jak pokazy handlowe lub wyświetlanie informacji publicznych, możesz nie chcieć wyświetlać użytkownikom okien z błędami. Kontroler zasad dotyczących urządzeń (DPC) może blokować okna błędów systemu w przypadku aplikacji, które uległy awarii lub nie odpowiadały, dodając ograniczenie użytkownika DISALLOW_SYSTEM_ERROR_DIALOGS
. Po zastosowaniu przez właściciela urządzenia to ograniczenie wpływa na wszystkie okna, ale po zastosowaniu go przez właścicieli profilu pomijane są tylko okna z błędami wyświetlane u użytkownika głównego lub dodatkowego. To ograniczenie nie dotyczy
profili służbowych.
W Androidzie 9 aplikacje działające w trybie pełnoekranowym nie wyświetlają dymka z przypomnieniem w trybie blokady. Dymek z przypomnieniem to panel wyświetlany użytkownikom (przy pierwszym uruchomieniu) z wyjaśnieniem, jak wyjść z trybu pojemnego.
Obsługa wielu użytkowników na dedykowanych urządzeniach
Android 9 wprowadza koncepcję efemerycznego użytkownika w przypadku dedykowanych urządzeń (wcześniej zwanych COSU). Użytkownicy tymczasowy to użytkownicy krótkoterminowi, którzy korzystają z tego samego urządzenia. Obejmuje to publiczne sesje użytkowników na urządzeniach, takich jak kioski biblioteczne czy kioski recepcyjne, a także trwałe sesje między stałą grupą użytkowników korzystających z urządzeń, np. pracownicy zmianowi.
Użytkowników tymczasowych należy tworzyć w tle. Takie osoby są tworzone na urządzeniu jako użytkownicy pomocnicze i usuwane (wraz z powiązanymi aplikacjami i danymi) po ich zatrzymaniu, przełączeniu lub ponownym uruchomieniu urządzenia. Aby utworzyć użytkownika tymczasowego, właściciel urządzenia może:
- Podczas wywoływania
DevicePolicyManager.createAndManageUser()
ustaw flagęMAKE_USER_EPHEMERAL
. - Wywołaj
DevicePolicyManager.startUserInBackground()
, aby uruchomić użytkownika tymczasowego w tle.
Pamiętaj, że aplikacje kierowane na Androida 9 powinny wychwytywać parametr UserManager.UserOperationException
podczas wywoływania kodu createAndManageUser()
. Wywołaj metodę getUserOperationResult()
wyjątku, aby dowiedzieć się, dlaczego użytkownik nie został utworzony.
Odbiór powiadomień o zdarzeniach
DeviceAdminReceiver
otrzymuje powiadomienia o tych zdarzeniach:
onUserStarted()
: wywoływane, gdy użytkownik uruchamia konto.onUserSwitched()
: wywoływane po zakończeniu przełączania użytkownika.onUserStopped()
: wywoływany wraz zonUserRemoved()
, gdy użytkownik zatrzymuje lub wyloguje się.
Wyświetlaj użytkownikom wiadomości o wydarzeniach
Właściciele urządzeń mogą konfigurować komunikaty, które są wyświetlane użytkownikom po rozpoczęciu i zakończeniu sesji:
- Użyj właściwości
DevicePolicyManager.setStartUserSessionMessage()
, aby ustawić komunikat wyświetlany użytkownikowi po rozpoczęciu sesji użytkownika. Aby odebrać wiadomość, wywołaj metodęDevicePolicyManager.getStartUserSessionMessage()
. - Użyj właściwości
DevicePolicyManager.setEndUserSessionMessage()
, aby ustawić komunikat, który wyświetli się użytkownikowi po zakończeniu jego sesji. Aby odebrać wiadomość, wywołaj metodęDevicePolicyManager.getEndUserSessionMessage()
.
Wyloguj się i zatrzymuj użytkowników
Właściciele urządzeń mogą określić w DevicePolicyManager.setLogoutEnabled()
, czy wylogowywanie ma być włączone dla użytkowników dodatkowych. Aby sprawdzić, czy wylogowanie jest włączone, wywołaj DevicePolicyManager.isLogoutEnabled()
.
Właściciele profili użytkowników pomocniczych mogą wywołać metodę DevicePolicyManager.logoutUser()
, aby zatrzymać użytkownika dodatkowego i przełączyć się z powrotem na użytkownika głównego.
Właściciele urządzeń mogą za pomocą DevicePolicyManager.stopUser()
zatrzymać wskazanego użytkownika dodatkowego.
Buforowanie pakietu
Aby usprawnić obsługę administracyjną użytkowników na współdzielonych urządzeniach ze stałym zestawem użytkowników, np. na urządzeniach dla pracowników zmianowych, można buforować pakiety potrzebne do obsługi sesji wielu użytkowników:
Wywołaj
DevicePolicyManager.setKeepUninstalledPackages()
, aby określić listę pakietów, które mają być przechowywane jako pliki APK. Aby pobrać listę tych pakietów, wywołaj funkcjęDevicePolicyManager.getKeepUninstalledPackages()
.Wywołaj
DevicePolicyManager.installExistingPackage()
, aby zainstalować pakiet, który został zachowany po usunięciu za pomocąsetKeepUninstalledPackages()
.
Dodatkowe metody i stałe
Android 9 zawiera też te metody i stałe, które umożliwiają dalszą obsługę sesji użytkownika na współdzielonych urządzeniach:
DevicePolicyManager.getSecondaryUsers()
pobiera listę wszystkich użytkowników pomocniczych na urządzeniu.DISALLOW_USER_SWITCH
to ograniczenie dotyczące użytkownika, które możesz włączyć, wywołując metodęDevicePolicyManager.addUserRestriction()
w celu zablokowania przełączania użytkowników.LEAVE_ALL_SYSTEM_APPS_ENABLED
to dostępna flaga dla zdarzeniaDevicePolicyManager.createAndManageUser()
. Gdy to ustawienie jest skonfigurowane, aplikacje systemowe nie są wyłączane podczas obsługi administracyjnej użytkowników.- Funkcja
UserManager.UserOperationException
jest wywoływana przezDevicePolicyManager.createAndManageUser()
, gdy nie można utworzyć użytkownika – wyjątek zawiera przyczynę niepowodzenia.
Wyczyść dane pakietu i usuń konta
Właściciele urządzeń i właściciele profili mogą wywołać metodę clearApplicationUserData()
, aby wyczyścić dane użytkownika w przypadku danego pakietu. Aby usunąć konto z AccountManager
, właściciele urządzenia i profilu mogą zadzwonić pod numer removeAccount()
.
Ograniczenia dotyczące użytkowników i większa kontrola nad ustawieniami
Android 9 wprowadza zestaw ograniczeń dotyczących użytkowników DPC oraz możliwość konfigurowania punktów APN, czasu i strefy czasowej oraz ustawień systemu na urządzeniu.
Konfiguruj punkty APN
Właściciele urządzeń mogą konfigurować punkty APN na urządzeniu, używając tych metod w klasie DevicePolicyManager
:
addOverrideApn()
updateOverrideApn()
removeOverrideApn()
getOverrideApns()
setOverrideApnEnabled()
isOverrideApnEnabled()
Skonfiguruj godzinę i strefę czasową
Właściciele urządzeń mogą ustawić godzinę i strefę czasową na urządzeniu, korzystając z tych metod w klasie DevicePolicyManager
:
Egzekwuj ograniczenia użytkowników dotyczące ważnych ustawień
Android 9 dodaje ograniczenia dotyczące użytkowników, aby wyłączyć funkcje i ustawienia systemu. Aby dodać ograniczenie, wywołaj DevicePolicyManager.addUserRestriction()
z jedną z tych stałych UserManager
:
DISALLOW_AIRPLANE_MODE
DISALLOW_AMBIENT_DISPLAY
DISALLOW_CONFIG_BRIGHTNESS
DISALLOW_CONFIG_DATE_TIME
DISALLOW_CONFIG_LOCATION
DISALLOW_CONFIG_SCREEN_TIMEOUT
DISALLOW_PRINTING
Jeśli zasady DISALLOW_CONFIG_BRIGHTNESS
i DISALLOW_CONFIG_SCREEN_TIMEOUT
są wymuszane na urządzeniu, właściciele urządzeń nadal mogą za pomocą interfejsu API konfigurować ustawienia jasności ekranu, trybu jasności ekranu i wygaszania ekranu.DevicePolicyManager.setSystemSetting()
Dane mierzone
Właściciele urządzeń i właściciele profili mogą uniemożliwić aplikacjom korzystanie z sieci danych na urządzeniu z pomiarem użycia danych. Sieć jest uznawana za sieć z pomiarem użycia danych, gdy użytkownik jest szczególnie wrażliwy na intensywny transfer danych z powodu kosztów, limitów danych, problemów z baterią i wydajnością. Aby uniemożliwić aplikacjom korzystanie z sieci z pomiarem użycia danych, wywołaj metodę DevicePolicyManager.setMeteredDataDisabledPackages()
, która będzie przekazywać listę nazw pakietów. Aby pobrać aplikacje, które są obecnie ograniczone, wywołaj metodę DevicePolicyManager.getMeteredDataDisabledPackages()
.
Aby dowiedzieć się więcej o danych z pomiarem użycia danych na Androidzie, przeczytaj artykuł Optymalizowanie wykorzystania danych w sieci.
Migruj DPC
Kontrolery zasad dotyczących urządzeń (DPC) mogą przenieść własność urządzenia lub profilu służbowego na inną platformę DPC. Możesz przenieść własność, aby przenieść niektóre funkcje do Android Management API, przenieść urządzenia ze starszego DPC lub ułatwić administratorom IT migrację do usług EMM. Ponieważ zmieniasz tylko własność DPC, nie możesz użyć tej funkcji do zmiany typu zarządzania, np. przeprowadzić migracji z urządzenia zarządzanego na profil służbowy lub odwrotnie.
Możesz użyć zasobu XML zasad administrowania urządzeniami, aby wskazać, że ta wersja DPC obsługuje migrację. Docelowa jednostka DPC wskazuje, że może ona zostać właścicielem, ponieważ zawiera element o nazwie <support-transfer-ownership>
. Poniższy przykład pokazuje, jak można to zrobić w pliku XML administratora urządzenia DPC:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<support-transfer-ownership />
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
</uses-policies>
</device-admin>
DPC, który chce przenieść własność do nowej aplikacji DPC, może sprawdzić, czy docelowa wersja DPC obsługuje migrację, wywołując metodę DeviceAdminInfo
supportsTransferOwnership()
. Przed przeniesieniem własności domeny DPC musi zweryfikować docelową domenę DPC przez porównanie podpisów aplikacji. Klasa PackageManager
zawiera metody do pracy z podpisami znaków kodu.
Android zachowuje system i zasady dotyczące użytkowników źródłowego DPC przez przeniesienie własności – serwery DPC nie muszą ich przenosić. Źródłowa jednostka DPC może przekazywać do niej dane niestandardowe, korzystając z par klucz-wartość w elemencie PersistableBundle
. Po udanym transferze docelowa DPC może pobrać te dane, wywołując metodę DevicePolicyManager.getTransferOwnershipBundle()
.
Przeniesienie własności urządzenia zarządzanego lub profilu służbowego wygląda tak samo:
- Źródłowa DPC sprawdza, czy docelowa wersja DPC obsługuje migrację i potwierdza, że podpis aplikacji docelowej DPC pasuje do oczekiwanej wartości.
- Źródłowa DPC wywołuje
transferOwnership()
, aby rozpocząć przenoszenie. - System ustawia docelową DPC jako aktywnego administratora i ustawia ją jako właściciela zarządzanego urządzenia lub profilu służbowego.
- Docelowa jednostka DPC odbiera wywołanie zwrotne
onTransferOwnershipComplete()
i może się konfigurować samodzielnie przy użyciu wartości z argumentubundle
. - Jeśli podczas przenoszenia coś pójdzie nie tak, system przywraca własność do źródłowego DPC. Jeśli źródłowa DPC musi potwierdzić, że przeniesienie własności się udało, wywołaj
isAdminActive()
, aby sprawdzić, czy źródłowa DPC nie jest już aktywnym administratorem.
Wszystkie aplikacje uruchomione w profilu służbowym otrzymują komunikat ACTION_PROFILE_OWNER_CHANGED
, gdy zmienia się właściciel profilu. Aplikacje uruchomione na urządzeniu zarządzanym otrzymują komunikat ACTION_DEVICE_OWNER_CHANGED
, gdy zmienia się właściciel urządzenia.
Profile służbowe na w pełni zarządzanych urządzeniach
Przeniesienie dwóch instancji DPC jako właściciel urządzenia i profilu odbywa się w dwóch etapach. Gdy profil osobisty i profil służbowy są powiązane, przeprowadź przenoszenie w tej kolejności:
- Najpierw przenieś własność profilu służbowego.
- Poczekaj na wywołanie zwrotne
DeviceAdminReceiver
onTransferAffiliatedProfileOwnershipComplete()
, aby potwierdzić, że profil służbowy został przeniesiony do docelowej platformy DPC. - Na koniec przenieś własność zarządzanego urządzenia na docelową DPC.
Przekładanie aktualizacji bezprzewodowych (OTA)
Właściciele urządzeń mogą opóźnić aktualizacje systemu OTA na maksymalnie 90 dni, aby zatrzymać wersję systemu operacyjnego działającą na tych urządzeniach w krytycznych okresach (np. w dni świąteczne). Po każdym ustalonym okresie blokady system wymusza stosowanie obowiązkowego 60-dniowego bufora, aby zapobiec zablokowaniu urządzenia w nieskończoność.
W okresie blokady:
- Urządzenia nie otrzymują żadnych powiadomień o oczekujących aktualizacjach OTA.
- Urządzenia nie instalują żadnych aktualizacji OTA w systemie operacyjnym.
- Użytkownicy urządzeń nie mogą ręcznie sprawdzać dostępności aktualizacji OTA w Ustawieniach.
Aby ustawić okres blokady, zadzwoń pod numer SystemUpdatePolicy.setFreezePeriods()
. Okres blokady powtarza się co roku, dlatego daty jego rozpoczęcia i zakończenia są przedstawiane za pomocą liczb całkowitych, które zliczają dni od początku roku. Dzień początkowy musi rozpoczynać się co najmniej 60 dni po zakończeniu dowolnego poprzedniego okresu blokady. Właściciele urządzeń mogą wywołać metodę SystemUpdatePolicy.getFreezePeriods()
, aby uzyskać listę okresów blokady ustawionych wcześniej w obiekcie zasad aktualizacji systemu.
Urządzenie DevicePolicyManager.getSystemUpdatePolicy()
zostało zaktualizowane, aby zwracać wszystkie okresy blokady ustawione przez właściciela urządzenia.
Ograniczanie możliwości udostępniania w profilu służbowym
Właściciele profili mogą uniemożliwić użytkownikom udostępnianie danych osobistych w profilu służbowym na urządzeniu, dodając ograniczenie dotyczące użytkownika DISALLOW_SHARE_INTO_MANAGED_PROFILE
.
To ograniczenie uniemożliwia obsługę i udostępnianie następujących intencji:
- Aplikacje profilu osobistego udostępniają dane i pliki aplikacjom profilu służbowego.
- Aplikacje profilu służbowego, które wybierają elementy z profilu osobistego, np. zdjęcia lub pliki.
Po ustawieniu tego ograniczenia DPC może nadal zezwalać na różne zamiary dotyczące aktywności, wywołując metodę addCrossProfileIntentFilter()
.
Zabezpieczone sprzętowo klucze i certyfikaty maszyn
Android 9 dodaje interfejsy API ułatwiające pracę z kluczami i certyfikatami, które można łączyć, aby bezpiecznie identyfikować urządzenia. DPC działa w trybie właściciela profilu lub urządzenia albo instalator przekazanych certyfikatów może wykonywać te czynności:
- generować klucze i certyfikaty na zabezpieczonym sprzęcie (takim jak TEE) lub Secure Element (SE) urządzenia z Androidem. Wygenerowane klucze nigdy nie opuszczają bezpiecznego sprzętu i można ich używać z łańcucha kluczy Android. Zadzwoń pod numer
DevicePolicyManager.generateKeyPair()
, aby podać algorytm (patrzKeyPairGenerator
) i wszystkie identyfikatory sprzętu, które chcesz potwierdzić, takie jak numer seryjny lub IMEI. Więcej informacji o zmianach w zabezpieczeniach sprzętowych znajdziesz w artykule Ulepszenia zabezpieczeń w Androidzie 9. - Powiąż certyfikat z istniejącym kluczem wygenerowanym przez urządzenie. Wywołaj
DevicePolicyManager.setKeyPairCertificate()
, podając alias istniejącego klucza i łańcuch certyfikatów – począwszy od certyfikatu liścia, aż po łańcuch zaufania. - Przed użyciem klucza upewnij się, że zabezpieczony sprzęt chroni klucz. Aby sprawdzić, które mechanizmy chronią klucz, wykonaj czynności opisane w sekcji Potwierdzenie klucza.
- Właściciele urządzeń i instalatorzy delegowanych certyfikatów mogą otrzymywać podpisane informacje o identyfikatorach sprzętowych urządzeń z wersjami systemu Android. Wywołanie
DevicePolicyManager.generateKeyPair()
przekazuje co najmniej 1 z parametrówID_TYPE_BASE_INFO
,ID_TYPE_SERIAL
,ID_TYPE_IMEI
lubID_TYPE_MEID
w argumencieidAttestationFlags
. Zwrócony certyfikat zawiera identyfikatory sprzętu w rekordzie atestu. Jeśli nie chcesz uwzględniać identyfikatorów sprzętu, przekaż kod0
. Właściciele profili mogą otrzymywać tylko informacje od producenta (stosując kodID_TYPE_BASE_INFO
). Aby sprawdzić, czy urządzenie może poświadczać identyfikatory, wywołaj metodęisDeviceIdAttestationSupported()
. - Zablokuj użytkownikom urządzeń możliwość niewłaściwego korzystania z kluczy firmowych (w zadaniach innych niż firmowe), uniemożliwiając wybór certyfikatów kluczy. System nie uwzględnia w panelu selektora certyfikatów, których nie można wybrać. W metodzie wywołania zwrotnego
DeviceAdminReceiver.onChoosePrivateKeyAlias()
zwróć alias do klucza przedsiębiorstwa, aby system automatycznie wybrał certyfikat w imieniu użytkownika. Aby uniemożliwić wybór klucza, wywołaj te metodyDevicePolicyManager
:setKeyPairCertificate()
i przekażfalse
dla argumentuisUserSelectable
.installKeyPair (ComponentName, PrivateKey, Certificate[], String, int)
i pomińINSTALLKEY_SET_USER_SELECTABLE
w argumencieflags
.
Dzięki połączeniu tych interfejsów API firmy mogą bezpiecznie identyfikować urządzenia i potwierdzać ich integralność przed przyznaniem dostępu:
- Urządzenie z Androidem wygeneruje w bezpiecznym sprzęcie nowy klucz prywatny. Klucz prywatny nigdy nie opuszcza bezpiecznego sprzętu, więc pozostaje tajny.
- Urządzenie używa tego klucza do utworzenia żądania podpisania certyfikatu i wysłania go do serwera. Żądanie podpisania certyfikatu zawiera rekord atestu zawierający identyfikatory urządzeń.
- Serwer weryfikuje łańcuch certyfikatów (z dostępem do roota w ramach certyfikatu Google) i wyodrębnia metadane urządzenia z rekordu atestu.
- Serwer potwierdza, że zabezpieczony sprzęt chroni klucz prywatny i że identyfikatory urządzeń są zgodne z rekordami firmy. Serwer może też sprawdzić, czy wersje systemu Android i poprawek spełniają wymagania.
- Serwer generuje certyfikat z żądania podpisania certyfikatu i wysyła go do urządzenia.
- Urządzenie paruje certyfikat z kluczem prywatnym (pozostałym w zabezpieczonym sprzęcie), umożliwiając aplikacjom łączenie się z usługami korporacyjnymi.
Więcej interfejsów API, funkcji i zmian związanych z bezpieczeństwem
Identyfikatory dzienników zabezpieczeń i dzienników sieciowych
Android 9 uwzględnia identyfikatory w dziennikach zabezpieczeń i aktywności w sieci. Liczbowy identyfikator rośnie monotonicznie dla każdego zdarzenia, co ułatwia administratorom IT dostrzeganie luk w dziennikach. Dzienniki zabezpieczeń i logi sieciowe to osobne zbiory, w których system przechowuje osobne wartości identyfikatorów.
Aby uzyskać wartość identyfikatora, wywołaj SecurityEvent.getId()
, DnsEvent.getId()
lub ConnectEvent.getId()
. System resetuje identyfikator za każdym razem, gdy DPC włączy logowanie lub gdy urządzenie uruchomi się ponownie.
Dzienniki zabezpieczeń pobrane przez wywołanie metody DevicePolicyManager.retrievePreRebootSecurityLogs()
nie zawierają tych identyfikatorów.
Logowanie zabezpieczeń
Logowanie zabezpieczeń przypisuje każdemu elementowi SecurityEvent
poziom logowania. Aby uzyskać poziom logowania, wywołaj getLogLevel()
. Ta metoda zwraca na poziomie logu jedną z tych wartości: LEVEL_INFO
, LEVEL_WARNING
lub LEVEL_ERROR
.
Android 9 rejestruje w dziennikach zabezpieczeń zdarzenia wymienione w tabeli poniżej. Aby sprawdzić tag zdarzenia, wywołaj metodę getTag()
. Aby pobrać dane zdarzenia, wywołaj metodę getData()
.
Oznacz | opisu zdarzenia, |
---|---|
TAG_CERT_AUTHORITY_INSTALLED |
Próba zainstalowania nowego certyfikatu głównego w magazynie danych logowania systemu. |
TAG_CERT_AUTHORITY_REMOVED |
Próba usunięcia certyfikatu głównego z magazynu danych logowania systemu. |
TAG_CERT_VALIDATION_FAILURE |
Certyfikat Wi-Fi nie przeszedł kontroli poprawności podczas połączenia. |
TAG_CRYPTO_SELF_TEST_COMPLETED |
System zakończył autotest kryptograficzny. |
TAG_KEYGUARD_DISABLED_FEATURES_SET |
Aplikacja administratora wyłączała funkcje ekranu blokady urządzenia lub profilu służbowego. |
TAG_KEY_DESTRUCTION |
Próba usunięcia klucza kryptograficznego. |
TAG_KEY_GENERATED |
Próba wygenerowania nowego klucza kryptograficznego. |
TAG_KEY_IMPORT |
Próba zaimportowania nowego klucza kryptograficznego. |
TAG_KEY_INTEGRITY_VIOLATION |
Android wykrył uszkodzony klucz szyfrowania lub uwierzytelniania. |
TAG_LOGGING_STARTED |
Logowanie zabezpieczeń rozpoczęło rejestrowanie. |
TAG_LOGGING_STOPPED |
Logowanie zabezpieczeń przestało rejestrować. |
TAG_LOG_BUFFER_SIZE_CRITICAL |
Bufor dziennika zabezpieczeń osiągnął 90% swojej pojemności. |
TAG_MAX_PASSWORD_ATTEMPTS_SET |
Aplikacja administratora ustawia liczbę dozwolonych prób wpisania nieprawidłowego hasła. |
TAG_MAX_SCREEN_LOCK_TIMEOUT_SET |
Aplikacja administratora ustawia maksymalny czas oczekiwania na blokadę ekranu. |
TAG_MEDIA_MOUNT |
Wymienny nośnik pamięci podłączony do urządzenia. |
TAG_MEDIA_UNMOUNT |
Urządzenie zostało odłączone. |
TAG_OS_SHUTDOWN |
System Android został wyłączony. |
TAG_OS_STARTUP |
System Android został uruchomiony. |
TAG_PASSWORD_COMPLEXITY_SET |
Aplikacja administratora ustawia wymagania dotyczące złożoności haseł. |
TAG_PASSWORD_EXPIRATION_SET |
Aplikacja administratora ustawia czas ważności hasła. |
TAG_PASSWORD_HISTORY_LENGTH_SET |
Aplikacja administratora ustawia długość historii haseł, uniemożliwiając użytkownikom ponowne korzystanie ze starych haseł. |
TAG_REMOTE_LOCK |
Aplikacja administratora zablokowała urządzenie lub profil służbowy. |
TAG_USER_RESTRICTION_ADDED |
Aplikacja administratora ustawiła ograniczenie dotyczące użytkownika. |
TAG_USER_RESTRICTION_REMOVED |
Aplikacja administratora usunęła ograniczenie dotyczące użytkownika. |
TAG_WIPE_FAILURE |
Nie udało się wyczyścić pamięci urządzenia lub profilu służbowego. |
Wyzwanie na ekranie blokady profilu służbowego
Od Androida 9 właściciele profili mogą wymagać od użytkowników ustawienia osobnego testu zabezpieczającego w profilu służbowym, korzystając z ograniczenia użytkownika DISALLOW_UNIFIED_PASSWORD
. Aby sprawdzić, czy użytkownik ma ustawiony taki sam test zabezpieczający ekran blokady na urządzeniu i w profilu służbowym, wywołaj metodę DevicePolicyManager.isUsingUnifiedPassword()
.
Jeśli urządzenie ma oddzielny ekran blokady profilu służbowego, DevicePolicyManager.setMaximumTimeToLock()
ustawia limit czasu ekranu blokady tylko dla profilu służbowego, a nie dla całego urządzenia.
Dostęp do narzędzi dla programistów
Aby dane służbowe pozostawały w profilu służbowym, narzędzie Android Debug Bridge (adb) nie ma dostępu do katalogów ani plików w profilu służbowym.
Obsługa większej liczby opcji biometrycznych
Android 9 umożliwia szczegółową kontrolę nad biometrycznym uwierzytelnianiem sprzętu na ekranie blokady profilu służbowego. Wywołaj istniejącą metodę DevicePolicyManager.setKeyguardDisabledFeatures()
za pomocą KEYGUARD_DISABLE_FACE
i KEYGUARD_DISABLE_IRIS
.
Aby wyłączyć wszystkie metody uwierzytelniania biometrycznego udostępniane przez urządzenie, dodaj KEYGUARD_DISABLE_BIOMETRICS
.
Wycofanie zasad administrowania urządzeniem
Android 9 oznacza wymienione poniżej zasady jako wycofane w przypadku DPC za pomocą funkcji deviceadmin. W Androidzie 9 zasady będą nadal działać tak jak wcześniej. W Androidzie 10 i wersji 10 te same zasady będą zgłaszać wyjątek SecurityException po wywołaniu go przez administratora urządzenia.
USES_POLICY_DISABLE_CAMERA
USES_POLICY_DISABLE_KEYGUARD_FEATURES
USES_POLICY_EXPIRE_PASSWORD
USES_POLICY_LIMIT_PASSWORD
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 to umożliwić, nadal będą dostępne te zasady:
Więcej informacji o tych zmianach znajdziesz w sekcji Wycofanie funkcji przez administratora urządzenia.
Uproszczona rejestracja za pomocą kodu QR
Wbudowana biblioteka kodów QR
Android 9 ma w pakiecie bibliotekę QR, która usprawnia obsługę administracyjną urządzeń z kodem QR. Administratorzy IT nie muszą już ręcznie wpisywać danych sieci Wi-Fi, aby skonfigurować urządzenie. Zamiast tego w Androidzie 9 te dane Wi-Fi można umieścić w kodzie QR. Gdy administrator IT skanuje kod QR na urządzeniu należącym do firmy, urządzenie automatycznie łączy się z Wi-Fi i rozpoczyna proces obsługi administracyjnej bez konieczności wprowadzania dodatkowych danych ręcznych.
Metoda obsługi administracyjnej za pomocą kodu QR obsługuje te dodatki umożliwiające określenie szczegółów sieci Wi-Fi:
EXTRA_PROVISIONING_WIFI_HIDDEN
EXTRA_PROVISIONING_WIFI_PAC_URL
EXTRA_PROVISIONING_WIFI_PASSWORD
EXTRA_PROVISIONING_WIFI_PROXY_BYPASS
EXTRA_PROVISIONING_WIFI_PROXY_HOST
EXTRA_PROVISIONING_WIFI_PROXY_PORT
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
EXTRA_PROVISIONING_WIFI_SSID
Ustawianie daty i strefy czasowej za pomocą dodatkowych funkcji obsługi administracyjnej
Metoda obsługi administracyjnej za pomocą kodu QR obsługuje dodatki umożliwiające ustawienie godziny i strefy czasowej na urządzeniu:
Opcje czyszczenia danych
Podczas usuwania profilu służbowego lub użytkownika pomocniczego administratorzy urządzeń mogą wyświetlać użytkownikom spersonalizowaną wiadomość. Ten komunikat pomaga użytkownikom urządzeń zrozumieć, że ich administrator IT usunął profil służbowy lub użytkownika dodatkowego. Wywołaj metodę wipeData(int, CharSequence)
i podaj krótki komunikat. Jeśli zadzwoni główny użytkownik lub właściciel urządzenia, system nie wyświetli komunikatu i rozpocznie przywracanie do ustawień fabrycznych.
Aby usunąć dane subskrypcji z umieszczonej karty SIM eUICC, wywołaj metodę wipeData()
i wpisz WIPE_EUICC
w argumencie flags
.
Metody w przypadku właścicieli powiązanych profili
Dla właścicieli powiązanych profili dostępne są te metody:
DevicePolicyManager.setKeyguardDisabled()
DevicePolicyManager.setStatusBarDisabled()
PackageInstaller.createSession()