Tworzenie kontrolera zasad dotyczących urządzeń

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.

  1. Dodaj bibliotekę do pliku build.gradle:

    Odlotowe

    implementation(name:'dpcsupport-yyyymmdd', ext:'aar')
    

    Kotlin

    implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
    
  2. 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:

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łanie Users.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ć Metody onAccountReady() i onFailure().

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).
        }
};
  • 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.