Ten przewodnik opisuje, jak opracować kontroler zasad dotyczących urządzeń (DPC) dla urządzeń we wdrożeniu Androida Enterprise. Aplikacja DPC (znana wcześniej) jako kontroler zasad firmowych, kontroluje lokalne zasady dotyczące urządzeń i system aplikacji na urządzeniach.
Informacje o DPC
We wdrożeniu Androida dla firm firma sprawuje kontrolę nad z różnych aspektów korzystania z urządzeń użytkowników, np. od izolowania urządzeń służbowych informacji pochodzących od użytkowników danych osobowych, wstępnego konfigurowania zatwierdzonych aplikacji dla środowisko lub wyłączenie funkcji urządzenia (np. kamery).
Jako dostawca usług EMM tworzysz aplikację DPC, której klienci mogą używać w połączeniu z konsolą EMM serwera. Klient wdraża DPC na urządzeniach użytkowników, którymi zarządza. DPC jest pomostem między konsolą EMM (i serwerem) a urządzeniem. Administrator używa konsoli EMM do wykonywania różnych czynności, w tym: konfigurowanie aplikacji i ustawień urządzenia.
DPC tworzy profil służbowy na urządzeniu, na którym został zainstalowany, i nim zarządza. Profil służbowy szyfruje informacje związane z pracą i oddziela je od danych użytkowników aplikacji i danych osobistych. Przed utworzeniem profilu służbowego DPC może też utworzyć konto zarządzanego Sklepu Google Play, którego będzie można używać na urządzeniu.
Z tego przewodnika dowiesz się, jak stworzyć DPC do tworzenia profili służbowych i zarządzania nimi.
Biblioteka pomocy DPC dla usług EMM
Biblioteka pomocy DPC dla usług EMM obejmuje klasy narzędzi i pomocników, które ułatwiają obsługę administracyjną urządzeń z Androidem i zarządzanie nimi w firmie. dla środowiska. Dzięki niej możesz korzystać z ważnych funkcji Aplikacje DPC:
- Obsługa administracyjna zarządzanych kont Google Play: Zarządzane zarządzanie obsługą administracyjną Konta Google Play z aplikacji DPC wymagają, aby usługi Google Play i Google Aplikacje Usług Google Play spełniają minimalne wymagania dotyczące wersji Jednak zaktualizowanie tych może być złożonym procesem. Biblioteka pomocy DPC aktualizuje te dane aplikacji, a także zapewnia zgodność z przyszłymi aktualizacjami zarządzanych Proces obsługi administracyjnej kont Google Play. Zobacz zarządzane konta Google Play pomocy administracyjnej, aby dowiedzieć się więcej.
- Obsługa konfiguracji zarządzanych: Używanie interfejsu Play EMM API do obsługi konfiguracji zarządzanych zatwierdzonych aplikacji Najprostszy sposób na wdrożenie konfiguracji zarządzanych na DPC. Zespół pomocy DPC Biblioteka pozwala przekazać Google Play zadanie stosowania zarządzanych konfiguracje (dawniej ograniczenia aplikacji) skonfigurowane przez administratora przy użyciu usług EMM. konsoli. Używanie interfejsu Play EMM API do obsługi konfiguracji zarządzanych pozwala konfigurację aplikacji, która ma być stosowana atomowo podczas instalacji. Zobacz Stosowanie konfiguracji zarządzanych pracy aplikacji, gdzie znajdziesz więcej informacji o włączaniu tej funkcji. DPC.
Aby pobrać bibliotekę: Zadania opisane w tym przewodniku zakłada użycie biblioteki pomocy DPC.
Pobierz bibliotekę pomocy DPC
Aby korzystać z biblioteki pomocy DPC, pobierz ją ze społeczności dostawców usług EMM na urządzeniach z Androidem Enterprise. Musisz dodać bibliotekę do pliku build.gradle i zająć się innymi kwestiami podczas tworzenia aplikacji DPC. Na przykład biblioteka wymaga wersji 11.4.0 Biblioteka klienta uwierzytelniania Usług Google Play.
- Dodaj bibliotekę do pliku
build.gradle
:
Odlotowe
implementation(name:'dpcsupport-yyyymmdd', ext:'aar')
Kotlin
implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
- Dodaj 11.4.0
bibliotekę klienta uwierzytelniania Usług Google Play do pliku build.gradle:
Odlotowe
implementation 'com.google.android.gms:play-services-auth:11.4.0'
Kotlin
implementation("com.google.android.gms:play-services-auth:11.4.0")
Uruchomienie biblioteki wymaga pewnych uprawnień, które musisz dodać do plik manifestu aplikacji DPC po przesłaniu do Google Play:
<uses-permission android:name= "android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/> <uses-permission android:name= "android.permission.GET_ACCOUNTS"/> <uses-permission android:name= "android.permission.MANAGE_ACCOUNTS"/> <uses-permission android:name= "android.permission.WRITE_SYNC_SETTINGS"/> <uses-permission android:name= "com.google.android.providers.gsf.permission.READ_GSERVICES"/>
Oprócz wykonania tych wstępnych kroków konfiguracji i wdrożenia musisz też zainicjowanie konkretnej biblioteki w kodzie DPC w zależności od którą chcesz wdrożyć. Szczegółowe informacje są podane w odpowiednich poniżej.
Utwórz DPC
Utwórz DPC na podstawie istniejącego modelu używanego w aplikacjach administrowania urządzeniem.
Aplikacja musi podklasa
DeviceAdminReceiver
(klasa z android.app.admin
przesyłki) zgodnie z opisem w tym artykule:
Administracja urządzeniem
Utwórz profil służbowy
Przykład ilustrujący, jak utworzyć podstawowy profil służbowy, znajdziesz w sekcji BasicManagedProfile na GitHubie.
Aby utworzyć profil służbowy na urządzeniu, na którym jest już profil osobisty:
Sprawdź, czy urządzenie obsługuje profil służbowy. W tym celu sprawdź
istnienie
Funkcja systemowa FEATURE_MANAGED_USERS
:
Kotlin
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
Java
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
Jeśli urządzenie obsługuje profile służbowe, utwórz profil służbowy, wysyłając intencję z profilem: ACTION_PROVISION_MANAGED_PROFILE działania. (W niektórych dokumentach profil zarządzany jest ogólne określenie, które oznacza to samo co profil służbowy w kontekście Androida). Dołącz nazwę pakietu administratora urządzenia jako dodatek:
Kotlin
val provisioningActivity = getActivity() // You'll need the package name for the DPC app. val myDPCPackageName = "com.example.myDPCApp" // Set up the provisioning intent val adminComponent = ComponentName(provisioningActivity.applicationContext, MyAdminReceiver::class.java) provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString()) if (provisioningIntent.resolveActivity(provisioningActivity.packageManager) == null) { // No handler for intent! Can't provision this device. // Show an error message and cancel. } else { // REQUEST_PROVISION_MANAGED_PROFILE is defined // to be a suitable request code startActivityForResult(provisioningIntent, REQUEST_PROVISION_MANAGED_PROFILE) provisioningActivity.finish() }
Java
Activity provisioningActivity = getActivity(); // You'll need the package name for the DPC app. String myDPCPackageName = "com.example.myDPCApp"; // Set up the provisioning intent Intent provisioningIntent = new Intent("android.app.action.PROVISION_MANAGED_PROFILE"); ComponentName adminComponent = new ComponentName(provisioningActivity.getApplicationContext(), MyAdminReceiver.class); provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString()); if (provisioningIntent.resolveActivity(provisioningActivity.getPackageManager()) == null) { // No handler for intent! Can't provision this device. // Show an error message and cancel. } else { // REQUEST_PROVISION_MANAGED_PROFILE is defined // to be a suitable request code startActivityForResult(provisioningIntent, REQUEST_PROVISION_MANAGED_PROFILE); provisioningActivity.finish(); }
W odpowiedzi na tę intencję system wykonuje te działania:
- Sprawdza, czy urządzenie jest zaszyfrowane. Jeśli tak nie jest, system poprosi o to użytkownik musi zaszyfrować urządzenie, zanim przejdziesz dalej.
- Tworzy profil służbowy.
- Usuwa niewymagane aplikacje z profilu służbowego.
- Kopiuje aplikację DPC do profilu służbowego i ustawia samą DPC jako właściciela profilu.
Zastąp
onActivityResult()
na
sprawdź, czy udało się udostępnić:
Kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { // Check if this is the result of the provisioning activity if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) { // If provisioning was successful, the result code is // Activity.RESULT_OK if (resultCode == Activity.RESULT_OK) { // Work profile created and provisioned. } else { // Provisioning failed. } return } else { // This is the result of some other activity. Call the superclass. super.onActivityResult(requestCode, resultCode, data) } }
Java
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // Check if this is the result of the provisioning activity if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) { // If provisioning was successful, the result code is // Activity.RESULT_OK if (resultCode == Activity.RESULT_OK) { // Work profile created and provisioned. } else { // Provisioning failed. } return; } else { // This is the result of some other activity. Call the superclass. super.onActivityResult(requestCode, resultCode, data); } }
Dokończ włączanie profilu służbowego
Po udostępnieniu profilu system wywołuje DPC.
metody
DeviceAdminReceiver.onProfileProvisioningComplete()
aplikacji. Zastąp
tę metodę wywołania zwrotnego, aby dokończyć włączanie profilu służbowego.
Typowa: DeviceAdminReceiver.onProfileProvisioningComplete()
Implementacja wywołania zwrotnego:
- Sprawdza, czy urządzenie jest zgodne z zasadami EMM dotyczącymi urządzeń – opisane w artykule Konfigurowanie zasad dotyczących urządzeń.
- Włącza aplikacje systemowe utworzone przez administratora
dostępne w profilu służbowym za pomocą usługi
DevicePolicyManager.enableSystemApp()
. - Jeśli urządzenie korzysta z zarządzanego Sklepu Google Play, odpowiednie konto zostanie dodane do
profil służbowy, aby można było instalować na urządzeniu zatwierdzone aplikacje.
- Zarządzane konta Google Play: zobacz Sprawdzanie, czy działają w przypadku kont zarządzanego Sklepu Google Play oraz dodawanie konta zarządzanego Sklepu Google Play .
- Konta Google: użyj adresu
AccountManager.addAccount()
.
Aktywuj profil służbowy
Po wykonaniu tych zadań zadzwoń pod numer
Metoda
setProfileEnabled()
, aby aktywować profil służbowy:
Kotlin
// Get the device policy manager val myDevicePolicyMgr = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager val componentName = myDeviceAdminReceiver.getComponentName(this) // Set the name for the newly created work profile. myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile") // ...and enable the profile myDevicePolicyMgr.setProfileEnabled(componentName)
Java
// Get the device policy manager DevicePolicyManager myDevicePolicyMgr = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); ComponentName componentName = myDeviceAdminReceiver.getComponentName(this); // Set the name for the newly created work profile. myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile"); // ...and enable the profile myDevicePolicyMgr.setProfileEnabled(componentName);
Konfigurowanie zasad dotyczących urządzeń
Aplikacja DPC stosuje zasady dotyczące urządzeń określone przez administratora w celu spełnienia z wymaganiami i ograniczeniami organizacji. Zasada zabezpieczeń może na przykład będzie wymagać, aby urządzenia były blokowane po określonej liczbie nieudanych prób podania hasła. DPC wysyła zapytanie do konsoli EMM w celu sprawdzenia bieżących zasad, a następnie je stosuje za pomocą Urządzenia Administration API.
Informacje o stosowaniu zasad dotyczących urządzeń znajdziesz w artykule Zasady.
Stosowanie konfiguracji zarządzanych aplikacje służbowe
Konfiguracje zarządzane umożliwiają klientom skonfigurować wstępnie aplikacje zatwierdzone do wdrożenia i aktualizować je aplikacji, gdy trzeba zmienić konfigurację. Konfigurowanie aplikacji przed zapewnia zgodność z zasadami bezpieczeństwa organizacji i innymi zasadami; po zainstalowaniu aplikacji na urządzeniu docelowym.
Możliwości aplikacji są określone przez jej dewelopera w schemacie XML (plik schemat konfiguracji zarządzanych), który towarzyszy aplikacji po przesłaniu jej do Google Google Play (deweloperzy aplikacji znajdą więcej informacji w artykule Konfigurowanie zarządzanych konfiguracji).
Pobierasz ten schemat z aplikacji, aby wyświetlić go administratorom klienta w konsoli EMM, udostępni interfejs, w którym różne opcje zdefiniowane w schemat wyświetlania i umożliwić administratorom wstępne skonfigurowanie ustawień aplikacji. Wynikowa konfiguracja zarządzana przez administratora jest zwykle przechowywane na serwerze EMM, który następnie używa Interfejs Play EMM API do ustawienia Konfiguracje zarządzanedlaurządzenia lub konfiguracja_zarządzana. Zobacz Konfiguracje zarządzane w Google Play.
Konfiguracje zarządzane można stosować w aplikacjach przy użyciu interfejsu Play EMM API (metoda zalecana) lub bezpośrednio z DPC (zgodnie z opisem w sekcji Stosowanie konfiguracji zarządzanych). bezpośrednio z DPC). Korzystanie z interfejsu Play EMM API mają liczne zalety, w tym łatwe wdrożenie, ponieważ można używać Biblioteka pomocy DPC ułatwiająca zadania DPC. Oprócz tego interfejs Play EMM API:
- Określa konfigurację odrębnie po zainstalowaniu nowej aplikacji, dzięki czemu jest ona gotowa przy pierwszym uruchomieniu aplikacji przez użytkownika.
- Pozwala zarządzać konfiguracjami dla poszczególnych użytkowników, co pozwala uniknąć monitorowania obsługi administracyjnej z poszczególnych urządzeń.
Zastosuj konfiguracje zarządzane za pomocą Interfejs Play EMM API
Aby można było używać interfejsu Play EMM API w konfiguracjach zarządzanych, DPC musi zezwolić na: Google Play, aby ustawić konfiguracje. Biblioteka pomocy DPC zajmie się tym przez serwer proxy z konfiguracją wysłaną z Google Play.
Aby korzystać z Google Play EMM API, pobierz bibliotekę pomocy DPC, a następnie włącz obsługę konfiguracji zarządzanych w DPC.
Włącz obsługę konfiguracji zarządzanych w Twój DPC
Zaimportuj te zajęcia do DPC:
com.google.android.apps.work.dpcsupport.ManagedConfigurationsSupport
Zainicjuj bibliotekę konfiguracji zarządzanych. W tym przykładzie: „admin” to wartość KomponentName elementu DeviceAdminReceiver.
Kotlin
var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)
Java
ManagedConfigurationsSupport managedConfigurationsSupport = new ManagedConfigurationsSupport(context, admin);
Włącz konfiguracje zarządzane:
Kotlin
managedConfigurationsSupport.enableManagedConfigurations()
Java
managedConfigurationsSupport.enableManagedConfigurations();
Po zainicjowaniu tej biblioteki w DPC możesz używać Google Play EMM API w usługach EMM; konsoli i serwera, aby stosować konfiguracje zarządzane do zatwierdzonych aplikacji zamiast kodowanie tych zadań bezpośrednio w DPC. Zobacz Konfiguracje zarządzane w Google Play.
Stosowanie konfiguracji zarządzanych bezpośrednio z DPC.
Aby zmienić ustawienia konfiguracji aplikacji bezpośrednio w DPC, wywołaj metodę Metoda DevicePolicyManager.setApplicationRestrictions() i zjedź parametrów dla aplikacji DPC DeviceAdminReceiver, nazwa pakietu aplikacji docelowej, oraz Pakiet, na który składają się konfigurację zarządzaną aplikacji ustawioną przez administratora. Zobacz W jaki sposób Interakcja między DPC i konsolą EMM. Aby dowiedzieć się więcej, zapoznaj się z artykułem Konfigurowanie konfiguracji zarządzanych. Pamiętaj jednak: że to alternatywne podejście do stosowania zarządzanych nie jest zalecana we wdrożeniach na zarządzanych kontach Google Play.
Udostępnianie konta zarządzanego Sklepu Google Play pomoc
Biblioteka pomocy DPC zawiera funkcje na potrzeby obsługi administracyjnej na zarządzanych kontach Google Play. Aby skorzystać z tej pomocy, musisz najpierw zainicjować a potem upewnij się, że środowiska pracy i dodaj na koncie zarządzanego Sklepu Google Play.
Inicjowanie zarządzanych kont Google Play pomoc w Twoim DPC
Zaimportuj te zajęcia do DPC:
com.google.android.apps.work.dpcsupport.AndroidForWorkAccountSupport
Zainicjuj bibliotekę zgodności obsługi administracyjnej. W tym przykładzie „admin” to
ComponentName
:
DeviceAdminReceiver
.
Kotlin
var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)
Java
AndroidForWorkAccountSupport androidForWorkAccountSupport = new AndroidForWorkAccountSupport(context, admin);
Zadbaj o to, aby środowisko pracy konta zarządzanego Sklepu Google Play
Po zarejestrowaniu przez DPC urządzenia w trybie właściciela profilu (ACTION_PROVISION_MANAGED_PROFILE
) lub urządzeniu
w trybie właściciela (ACTION_PROVISION_MANAGED_DEVICE
), upewnij się, że urządzenie może obsługiwać konta zarządzanego Sklepu Google Play, dzwoniąc pod numer:
Kotlin
androidForWorkAccountSupport.ensureWorkingEnvironment(callback)
Java
androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
Wywołanie zwrotne informuje o powodzeniu lub niepowodzeniu tego procesu. Gdy połączenie zwrotne można dodać konto zarządzanego Sklepu Google Play. Jeśli wywołanie zwrotne zgłasza błąd, użytkownik powinien sprawdzić, czy urządzenie ma połączenie sieciowe (np. jeśli pobieranie nie powiedzie się). W innym zgłasza nieprawidłowości Google.
Kotlin
object : WorkingEnvironmentCallback() { override fun onSuccess() { // Can now provision the managed Google Play Account } override fun onFailure(error: Error) { // Notify user, handle error (check network connection) } }
Java
new WorkingEnvironmentCallback() { @Override public void onSuccess() { // Can now provision the managed Google Play Account } @Override public void onFailure(Error error) { // Notify user, handle error (check network connection) } }
Dodawanie konta zarządzanego Sklepu Google Play
AccountManager
platformy Androida
mogą dodać konto zarządzanego Sklepu Google Play na urządzeniu. Aby uprościć interakcję z usługą
AccountManager
, użyj funkcji pomocniczej (widocznej w przykładzie poniżej)
w bibliotece pomocy DPC. Funkcja
obsługuje token zwrócony przez serwer Google Play i ułatwia obsługę administracyjną
na zarządzanym koncie Google Play. Funkcja jest zwracana, gdy zarządzany Sklep Google Play
Konto ma prawidłowy stan:
Kotlin
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)
Java
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
token
– token uwierzytelniania użytkownika wygenerowany przez Google. WywołanieUsers.generateAuthenticationToken()
interfejsu Play EMM API.accountAddedCallback
– zwraca zarządzane konto Google Play. który został dodany do urządzenia. To wywołanie zwrotne powinno zawierać MetodyonAccountReady()
ionFailure()
.
Kotlin
val workAccountAddedCallback = object : WorkAccountAddedCallback() { override fun onAccountReady(account: Account, deviceHint: String) { // Device account was successfully added to the device // and is ready to be used. } override fun onFailure(error: Error) { // The account was not successfully added. Check that the token // provided was valid (it expires after a certain period of time). } }
Java
WorkAccountAddedCallback workAccountAddedCallback = new WorkAccountAddedCallback() { @Override public void onAccountReady(Account account, String deviceHint) { // Device account was successfully added to the device // and is ready to be used. } @Override public void onFailure(Error error) { // The account was not successfully added. Check that the token // provided was valid (it expires after a certain period of time). } };
Powiązana dokumentacja
- Więcej informacji o interfejsie Device Administration API znajdziesz w artykule Urządzenie Administracja.
- Więcej informacji o metodach obsługi administracyjnej w Androidzie Enterprise znajdziesz w Obsługa administracyjna urządzeń w Przewodnik dla programistów Android Enterprise.
- W przykładzie na GitHubie, który pokazuje, jak utworzyć podstawowy profil służbowy, Więcej informacji: BasicManagedProfile.
- Oto przykład na GitHubie, który pokazuje, jak ustawiać konfiguracje w innych aplikacjach jako właściciel profilu, zobacz AppRestrictionEnforcer.