Cihaz politikası denetleyici oluşturma

Bu kılavuzda, cihazlar için cihaz politikası denetleyicisi (DPC) geliştirmek Android Enterprise dağıtımında kullanılabilir. Daha önce bilinen bir DPC uygulaması iş politikası denetleyici olarak, yerel cihaz politikalarını ve sistemi kontrol eder Google Play'de kullanılabilir.

DPC'ler hakkında

Android Enterprise dağıtımında kuruluş, İşle ilgili izole etme gibi çeşitli unsurları veya kullanıcıların onaylı uygulamaları önceden yapılandırma ve ya da cihaz özelliklerini (örneğin, kamera) devre dışı bırakabilir.

EMM olarak, müşterilerinizin şu ülkelerde kullanabileceği bir DPC uygulaması geliştiriyorsunuz: EMM konsolunuza ve sunucu. Müşteriniz DPC'yi, yönettiği kullanıcı cihazlarına dağıtır. DPC, EMM konsolunuz (ve sunucu) ile cihaz arasında köprü görevi görür. Bir yönetici, EMM konsolunu kullanarak şunlar da dahil bir dizi görevi gerçekleştirebilir: cihaz ayarlarını ve uygulamaları yapılandırma.

DPC, yüklü olduğu cihazda iş profilini oluşturur ve yönetir. İş profili, işle ilgili bilgileri şifreler ve bu bilgileri kullanıcıların kişisel uygulamalar ve veriler. İş profilini oluşturmadan önce DPC şunları da yapabilir: Cihazda kullanılmak üzere Managed Google Play Hesabı'nın temel hazırlığını yapma.

Bu kılavuzda, iş profilleri oluşturup yönetebilecek bir DPC'nin nasıl geliştirileceği gösterilmektedir.

EMM'ler için DPC Destek Kitaplığı

EMM'ler için DPC Destek Kitaplığı, şu özelliklere sahip yardımcı sınıflardan ve yardımcı sınıflardan oluşur: Kuruluşlardaki Android cihazların temel hazırlığını ve yönetimini kolaylaştırmak bahsedeceğim. Kitaplık sayesinde, bilgisayarınızdaki önemli özelliklerden DPC uygulamaları:

  • Managed Google Play Hesapları temel hazırlık desteği: Temel hazırlık yönetiliyor DPC uygulamasındaki Google Play Hesapları için Google Play ve Google Play Hizmetleri uygulamaları minimum sürüm gereksinimlerini karşılar. Ancak, bu uygulamalar karmaşık olabilir. Bu güncellemeleri DPC destek kitaplığı çalışır ve ayrıca yönetilen Google Play Hesapları temel hazırlık işlemi. Managed Google Play Hesaplarına göz atın temel hazırlık desteğine göz atın.
  • Yönetilen Yapılandırmalar desteği: Onaylı uygulamalara yönelik yönetilen yapılandırmaları yönetmek için Play EMM API'yi kullanmak yönetilen yapılandırmaları uygulamanın en kolay yoludur. DPC Desteği Kitaplık özelliği sayesinde, yönetilen uygulamaları uygulama görevi için Google Play'e yetki verebilirsiniz. yöneticinin EMM'nizi kullanarak belirlediği yapılandırmalar (eski adıyla uygulama kısıtlamaları) konsolu. Yönetilen yapılandırmaları yönetmek için Play EMM API'nin kullanılması yükleme sırasında atom olarak uygulanacak uygulama yapılandırması. Görüntüleyin Yönetilen yapılandırmaları uygulama Bu özelliğin nasıl etkinleştirileceğiyle ilgili daha fazla bilgi için kullandığınız DPC'nizdir.

Kitaplığı indirmek için aşağıdaki adımları uygulayın. Bu kılavuzda ayrıntılı olarak açıklanan görevler DPC Destek Kitaplığı'nın kullanımını varsayın.

DPC Destek Kitaplığı'nı indir

DPC Destek Kitaplığı'nı kullanmak için Android Enterprise EMM Sağlayıcı topluluğundan kitaplığı indirin. Kitaplığı build.gradle dosyanıza eklemeniz ve diğer bağımlılıklarıyla ilgili bilgi edineceksiniz. Örneğin, kitaplık 11.4.0 gerektirir Google Play Hizmetleri kimlik doğrulama istemci kitaplığı.

  1. Kitaplığı build.gradle dosyasına ekleyin:

    Eski

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

    Kotlin

    implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
    
  2. 11.4.0 ekle Google Play Hizmetleri kimlik doğrulama istemci kitaplığını build.gradle dosyasına ekleyin:

    Eski

    implementation 'com.google.android.gms:play-services-auth:11.4.0'
    

    Kotlin

    implementation("com.google.android.gms:play-services-auth:11.4.0")
    
ziyaret edin.

Kitaplığın çalışması için bazı izinler gerektiğinden bu izinleri DPC uygulamanızın manifest dosyasıyla ilgili bilgileri Google Play'e yüklediğinizde:

  <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"/>

Bu ön kurulum ve dağıtım adımlarına ek olarak, DPC kodunuzdaki belirli kitaplık işlevini, özelliği seçin. Ayrıntılar, bölümlerini inceleyin.

DPC oluştur

DPC'nizi, cihaz yönetimi uygulamaları için kullanılan mevcut model üzerinde oluşturun. Özel olarak, uygulamanız DeviceAdminReceiver alt sınıfı (android.app.admin paketinde (ör. paket) Cihaz Yönetimi.

İş profili oluşturun

Temel bir iş profilinin nasıl oluşturulacağını gösteren bir örnek için bkz. BasicManagedProfile'da oturum açın.

Kişisel profili olan bir cihazda iş profili oluşturmak için: önce cihazın bir iş profilini destekleyip desteklemediğini öğrenin; kuruluşun varlığı FEATURE_MANAGED_USERS sistem özelliği:

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!
}

Cihaz iş profillerini destekliyorsa intent göndererek bir iş profili oluşturun bir ACTION_PROVISION_MANAGED_PROFILE ile eyleme dökülebilir. (Bazı belgelerde yönetilen profil, iş profili ile aynı anlama gelen genel terim kullanılmaktadır.) Cihaz yöneticisi paket adını ekle ekstra olarak:

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();
}

Sistem bu niyeti aşağıdakileri yaparak karşılar:

  • Cihazın şifrelenmiş olduğunu doğrular. Açık değilse sistem, şifrelemesini sağlayın.
  • İş profili oluşturur.
  • Zorunlu olmayan uygulamaları iş profilinden kaldırır.
  • DPC uygulamasını iş profiline kopyalar ve DPC'nin kendisini profil sahibi.

onActivityResult() yönergesini şu şekilde geçersiz kıl: temel hazırlığın başarılı olup olmadığına bakın:

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

İş profilini etkinleştirme işlemini tamamlayın

Profilin temel hazırlığı yapıldığında sistem, DPC'yi çağırır uygulamanın DeviceAdminReceiver.onProfileProvisioningComplete() yöntemi. Geçersiz kıl bu geri çağırma yöntemini kullanın.

Normal bir DeviceAdminReceiver.onProfileProvisioningComplete() geri çağırma uygulaması şunları yapar:

İş profilini etkinleştirme

Bu görevleri tamamladıktan sonra cihaz politikası yöneticisinin İş profilini etkinleştirmek için setProfileEnabled() yöntemi:

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);

Cihaz politikalarını ayarlama

DPC uygulaması, kurumun gereklilikleri ve kısıtlamalarıdır. Örneğin, güvenlik politikası Belirli sayıda başarısız şifre girişiminden sonra cihazların kilitlenmesini gerektirebilir. DPC, mevcut politikalar için EMM konsolunu sorgular ve ardından politikaları uygular Cihaz Yönetim API'si.

Cihaz politikalarının nasıl uygulanacağıyla ilgili bilgi edinmek için bkz. Politikalar.

Yönetilen yapılandırmaları uygula iş uygulamalarına

Yönetilen yapılandırmalar, müşterilerinizin aşağıdakileri yapmasına olanak tanır: onayladıkları uygulamaları önceden yapılandırmalı ve bu uygulamaları uygulamalara kolayca erişebilmenizi sağlıyor. Şu tarihten önce bir uygulamayı yapılandırma: dağıtımı, kuruluşun güvenliğinin ve diğer politikaların karşılanmasını sağlar uygulamanın hedef cihaza yüklenmesinin ardından.

Uygulama özellikleri, uygulama geliştirici tarafından bir XML şeması ( yönetilen yapılandırmalar şeması) ekleyebilirsiniz. Play (uygulama geliştiriciler, ayrıntılı bilgi için Yönetilen Yapılandırmaları Ayarlama başlıklı makaleyi inceleyin).

Müşteri yöneticilerinize göstermek için bu şemayı uygulamadan alıyorsunuz EMM konsolunuzda, ayarlarını yapabilir ve yöneticilerin uygulama ayarlarını önceden yapılandırabilmesini sağlayabilirsiniz. Yönetici tarafından ayarlanan yönetilen yapılandırma genellikle bu EMM sunucusunda saklanır ve daha sonra Ayarlanacak Play EMM API Cihaz için yönetilen yapılandırmalar veya Managedconfigurationsforuser'i seçin. Görüntüleyin Yönetilen Yapılandırmalar inceleyebilirsiniz.

Yönetilen yapılandırmalar, Play EMM API kullanılarak uygulamaya uygulanabilir (önerilen yaklaşım) veya doğrudan DPC'den (Yönetilen yapılandırmaları uygulama bölümünde açıklanmıştır) doğrudan DPC'den alınabilir). Play EMM API'yi kullanma bazı avantajları vardır. Bunlar arasında kolayca uygulayabilirsiniz, DPC Destek Kitaplığı, DPC görevlerini basitleştirir. Buna ek olarak Play EMM API:

  • Yeni bir uygulama yüklendiğinde yapılandırmayı atomik olarak ayarlar, böylece kullanıcı uygulamayı ilk kez başlattığında uygulamanın hazır olmasını sağlar.
  • Yapılandırmaları kullanıcı bazında yönetmenize olanak tanır. Böylece temel hazırlığı cihaz bazında izlemekten kaçınabilirsiniz.

Yönetilen yapılandırmaları uygulamak için Play EMM API'si

Yönetilen yapılandırmalarda Play EMM API'yi kullanmak için DPC'nin Google Play'e gidin. DPC Destek Kitaplığı bu sorunu halleder proxy'si aracılığıyla sizin için Google Play tarafından gönderilen bir görevde geçerlidir.

Play'i kullanmak için EMM API, DPC Destek Kitaplığı'nı indirin seçeneğini tıklayın ve ardından DPC'nizde yönetilen yapılandırmalar desteğini etkinleştirin.

Şurada Yönetilen Yapılandırmalar desteğini etkinleştir: DPC'niz

Bu sınıfı DPC'nize aktarın:

com.google.android.apps.work.dpcsupport.ManagedConfigurationsSupport

Yönetilen yapılandırmalar kitaplığını başlatın. Bu örnekte, "admin" : DeviceAdminReceiver'ın ComponentName (Bileşen Adı) değerini alır.

Kotlin

var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)

Java

ManagedConfigurationsSupport managedConfigurationsSupport =
    new ManagedConfigurationsSupport(context, admin);

Yönetilen yapılandırmaları etkinleştirin:

Kotlin

managedConfigurationsSupport.enableManagedConfigurations()

Java

managedConfigurationsSupport.enableManagedConfigurations();

DPC'nizde ilk kullanıma sunulan bu kitaplık sayesinde EMM'nizdeki Google Play EMM API yönetilen yapılandırmaları uygulamak yerine yönetilen yapılandırmaları bu görevleri doğrudan DPC’ye kodlamak. Görüntüleyin Ayrıntılı bilgi için Play üzerinden yönetilen yapılandırmalar başlıklı makaleyi inceleyin.

Yönetilen yapılandırmaları uygula doğrudan DPC'den

Bir uygulamanın yapılandırma ayarlarını doğrudan DPC'den değiştirmek için DevicePolicyManager.setApplicationRestrictions() yöntemi ve şu anda DPC uygulamasının DeviceAdminReceiver, hedef uygulamanın paket adı, ve İYS'den oluşan Paket Uygulamanın yönetici tarafından ayarlanan yönetilen yapılandırması. Görüntüleyin Performansınız DPC ve EMM konsolu etkileşime girin ve ayrıntılar için Yönetilen Yapılandırmalar ayarlayın. Ancak, bu alternatif yaklaşımın, yönetilen yapılandırmalarının Managed Google Play Accounts dağıtımlarında kullanılması önerilmez.

Managed Google Play Hesabı temel hazırlığı destek

DPC Destek Kitaplığı'nda destek sunulur. temel hazırlık için Managed Google Play Accounts Bu desteği kullanmak için önce emin olmanız gerekir, ardından çalışma ortamı ve Siteye Managed Google Play Hesabı.

Managed Google Play Accounts'u başlatma DPC'nizde destek

Bu sınıfı DPC'nize aktarın:

com.google.android.apps.work.dpcsupport.AndroidForWorkAccountSupport

Temel hazırlık uyumluluk kitaplığını başlatın. Bu örnekte "yönetici" DeviceAdminReceiver öğesinin ComponentName.

Kotlin

var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)

Java

AndroidForWorkAccountSupport androidForWorkAccountSupport =
    new AndroidForWorkAccountSupport(context, admin);

Ekibin çalışma ortamını Managed Google Play Accounts

DPC, profil sahibi modunda (ACTION_PROVISION_MANAGED_PROFILE) veya cihazda bir cihazın temel hazırlığını yaptıktan sonra sahip modunda (ACTION_PROVISION_MANAGED_DEVICE), şu numarayı arayarak cihazın Managed Google Play Accounts'u destekleyebildiğinden emin olun:

Kotlin

androidForWorkAccountSupport.ensureWorkingEnvironment(callback)

Java

androidForWorkAccountSupport.ensureWorkingEnvironment(callback);

Geri çağırma, bu işlemin başarılı veya başarısız olduğunu bildirir. Geri çağırma başarılı bir şekilde geri dönerse bir Managed Google Play Hesabı eklenebilir. Eğer geri çağırma bir hata bildirir, kullanıcıdan cihazın ağ bağlantısı varsa (örneğin, indirme işlemi başarısız olursa). Başka durumu Google'a bildirin.

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)
    }
}

Managed Google Play Hesabı ekleyin

Android çerçevesinin AccountManager Bir cihaza Managed Google Play Hesabı ekleyebilir. Etkileşimi kolaylaştırmak için AccountManager için yardımcı işlevi kullanın (aşağıdaki örnekte gösterilmektedir) (DPC Destek Kitaplığı) İşlev Google Play sunucusu tarafından döndürülen jetonu işler ve temel hazırlığı kolaylaştırır Managed Google Play Hesabı. İşlev, Managed Google Play Hesap geçerli bir durumda:

Kotlin

androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)

Java

androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
  • token: Google tarafından oluşturulan kullanıcı kimlik doğrulama jetonu Play EMM API Users.generateAuthenticationToken() çağrısı.
  • accountAddedCallback: Managed Google Play Hesabını iade eder başarılı bir şekilde eklenmiş olmalıdır. Bu geri arama şunları içermelidir: onAccountReady() ve onFailure() yöntemleri.

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).
        }
};
  • Device Management API hakkında daha fazla bilgi edinmek için bkz. Cihaz Yönetim.
  • Android Enterprise temel hazırlık yöntemleri hakkında bilgi edinmek için bkz. Cihazların temel hazırlığını şurada yapın: Android Enterprise geliştirici kılavuzu.
  • Temel bir iş profilinin nasıl oluşturulacağını gösteren bir GitHub örneğinde BasicManagedProfile bölümüne bakın.
  • Diğer uygulamalarda yapılandırmaların nasıl ayarlanacağını gösteren bir GitHub örneği için profil sahibi, bakın AppRestrictionImplementr olacaktır.