Cihaz politikası denetleyici oluşturma

Bu kılavuzda, Android Enterprise dağıtımındaki cihazlar için cihaz politikası denetleyicinin (DPC) nasıl geliştirileceği açıklanmaktadır. Daha önce iş politikası denetleyici olarak bilinen DPC uygulaması, cihazlardaki yerel cihaz politikalarını ve sistem uygulamalarını kontrol eder.

DPC'ler hakkında

Android kurumsal dağıtımında kurum, kullanıcı cihazlarının çeşitli özellikleri üzerinde kontrol sahibidir. Örneğin, işle ilgili bilgileri kullanıcıların kişisel verilerinden ayırma, ortam için onaylanmış uygulamaları önceden yapılandırma veya cihaz özelliklerini (ör. kamera) devre dışı bırakma.

EMM olarak, müşterileriniz tarafından EMM konsolunuz ve sunucunuzla birlikte kullanabileceği bir DPC uygulaması geliştirirsiniz. 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. Yönetici, cihaz ayarlarını ve uygulamaları yapılandırma da dahil olmak üzere çeşitli görevleri gerçekleştirmek için EMM konsolunu kullanır.

DPC, yüklü olduğu cihazda iş profilini oluşturur ve yönetir. İş profili, işle ilgili bilgileri şifreler ve bunları kullanıcıların kişisel uygulamalarından ve verilerinden ayrı tutar. İş profilini oluşturmadan önce, DPC ayrıca cihazda kullanılmak üzere bir Managed Google Play Hesabı da sağlayabilir.

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ığı, kurumsal bir ortamda Android cihazların temel hazırlığını ve yönetimini kolaylaştıran yardımcı sınıflardan ve yardımcı sınıflardan oluşur. Kitaplık,DPC uygulamalarınızdaki önemli özelliklerden yararlanmanıza olanak tanır:

  • Managed Google Play Accounts temel hazırlık desteği: DPC uygulamasından Managed Google Play Accounts (Google Play Hesapları) temel hazırlığını yapmak için Google Play ve Google Play hizmetleri uygulamalarının minimum sürüm gereksinimlerini karşılaması gerekir. Ancak, bu uygulamaların güncellenmesi karmaşık olabilir. DPC destek kitaplığı bu uygulamaların güncellenmesiyle ilgilenir ve ayrıca Managed Google Play Hesapları temel hazırlık işleminde yapılacak güncellemelerle uyumluluğu da sağlar. Ayrıntılar için Managed Google Play Accounts temel hazırlık desteği bölümüne bakın.
  • Yönetilen Yapılandırmalar desteği: Onaylanan uygulamalar için yönetilen yapılandırmaları işlemek üzere Play EMM API'yi kullanmak, yönetilen yapılandırmaları DPC'nize uygulamanın en kolay yoludur. DPC Destek Kitaplığı, EMM konsolunuzu kullanarak yönetici tarafından ayarlanan yönetilen yapılandırmaları (eski adıyla uygulama kısıtlamaları) uygulama görevini Google Play'e yetkilendirmenize olanak tanır. Yönetilen yapılandırmaları işlemek için Play EMM API'nin kullanılması, uygulama yapılandırmasının yükleme sırasında atomik olarak uygulanmasına olanak tanır. Bu özelliği DPC'nizde nasıl etkinleştireceğiniz hakkında daha fazla bilgi için Yönetilen yapılandırmaları iş uygulamalarına uygulama bölümüne bakın.

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

DPC Destek Kitaplığı'nı indirin

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

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

    Modern

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

    Kotlin

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

    Modern

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

    Kotlin

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

Kitaplığın çalışması için belirli izinler gerekir. Bu nedenle, bunları Google Play'e yüklerken DPC uygulamanızın manifest dosyasına eklemeniz gerekir:

  <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, uygulamak istediğiniz özelliğe bağlı olarak DPC kodunuzda belirli kitaplık işlevini de başlatmanız gerekir. Ayrıntılar, aşağıdaki ilgili bölümlerde yer almaktadır.

DPC oluşturun

DPC'nizi, cihaz yönetimi uygulamaları için kullanılan mevcut model üzerinde oluşturun. Özellikle, uygulamanız Cihaz Yönetimi'nde açıklandığı gibi DeviceAdminReceiver alt sınıfı (android.app.admin paketinden bir sınıf) olmalıdır.

İş profili oluşturun

Temel bir iş profilinin nasıl oluşturulacağını gösteren bir örnek için GitHub'da BasicManagedProfile adresine göz atın.

Kişisel profili olan bir cihazda iş profili oluşturmak için öncelikle FEATURE_MANAGED_USERS sistem özelliğinin olup olmadığını kontrol ederek cihazın bir iş profilini destekleyip desteklemediğini öğrenin:

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 ACTION_PROVISION_MANAGED_PROFILE işlemiyle bir amaç göndererek iş profili oluşturun. (Bazı dokümanlarda yönetilen profil, kurumsal Android bağlamında iş profili ile aynı anlama gelen genel bir terimdir.) Ek olarak cihaz yönetim paketi adını ekleyin:

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 amaca aşağıdakileri yaparak yanıt verir:

  • Cihazın şifrelenmiş olduğunu doğrular. Aksi takdirde, sistem devam etmeden önce kullanıcıdan cihazı şifrelemesini ister.
  • Bir iş profili oluşturur.
  • Gerekli olmayan uygulamaları iş profilinden kaldırır.
  • DPC uygulamasını iş profiline kopyalar ve DPC'yi profilin sahibi olarak ayarlar.

Temel hazırlığın başarılı olup olmadığını görmek için onActivityResult() politikasını geçersiz kılı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

Profil sağlandığında sistem, DPC uygulamasının DeviceAdminReceiver.onProfileProvisioningComplete() yöntemini çağırır. İş profilini etkinleştirme işlemini tamamlamak için bu geri çağırma yöntemini geçersiz kılın.

Tipik bir DeviceAdminReceiver.onProfileProvisioningComplete() geri çağırma uygulaması şu işlemleri yapar:

İş profilini etkinleştirme

Bu görevleri tamamladıktan sonra, iş profilini etkinleştirmek için cihaz politikası yöneticisinin setProfileEnabled() yöntemini çağırın:

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ı, kuruluşun gereksinimlerini ve kısıtlamalarını karşılamak için yönetici tarafından belirlenen cihaz politikalarını uygular. Örneğin, güvenlik politikası, cihazların belirli sayıda başarısız şifre girişiminden sonra kilitlenmesini gerektirebilir. DPC, EMM konsolunu mevcut politikalar için sorgular ve ardından Cihaz Yönetimi API'sini kullanarak politikaları uygular.

Cihaz politikalarının nasıl uygulanacağıyla ilgili bilgi için Politikalar bölümüne bakın.

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

Yönetilen yapılandırmalar, müşterilerinize dağıtım için onay verdikleri uygulamaları önceden yapılandırmanızı ve yapılandırmanın değişmesi gerektiğinde bu uygulamaları kolayca güncellemenizi sağlar. Bir uygulamanın dağıtımdan önce yapılandırılması, uygulama hedef cihaza yüklendikten sonra kuruluşun güvenlik ve diğer politikalarına uyulmasını sağlar.

Uygulama özellikleri, uygulama geliştirici tarafından Google Play'e yüklendikten sonra uygulamaya eşlik eden bir XML şeması (yönetilen yapılandırma şeması) içinde tanımlanır (ayrıntılar için Yönetilen Yapılandırmaları Ayarlama bölümüne bakın).

Müşteri yöneticilerinize EMM konsolunuzda görüntülemek için bu şemayı uygulamadan alır, şema ekranında tanımlanan çeşitli seçeneklerin sunulduğu bir kullanıcı arayüzü sağlar ve yöneticilerin, uygulama ayarlarını önceden yapılandırmasına olanak tanırsınız. Sonuçta, yönetici tarafından ayarlanan yönetilen yapılandırma genellikle EMM sunucusunda depolanır. Daha sonra bu yapılandırma, Managedconfigurationsfordevice veya Managedconfigurationsforuser öğelerini ayarlamak için Play EMM API'yi kullanır. Ayrıntılar için Play üzerinden Yönetilen Yapılandırmalar bölümüne bakın.

Yönetilen yapılandırmalar, Play EMM API kullanılarak (önerilen yaklaşım) veya doğrudan DPC'den (Yönetilen yapılandırmaları doğrudan DPC'den uygulama bölümünde açıklanmıştır) uygulamaya uygulanabilir. Play EMM API'nin kullanılması, DPC görevlerini basitleştirmek için DPC Destek Kitaplığı'nı kullanabildiğiniz için kolay uygulama gibi çeşitli avantajlara sahiptir. Play EMM API'sine ek olarak:

  • 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ıyarak temel hazırlık işlemlerini cihaz bazında izlemekten kurtulabilirsiniz.

Yönetilen yapılandırmaları Play EMM API'yi kullanarak uygulama

Yönetilen yapılandırmalarda Play EMM API'yi kullanmak için DPC, Google Play'in yapılandırmaları ayarlamasına izin vermelidir. DPC Destek Kitaplığı, Google Play tarafından gönderilen yapılandırmaya proxy uygulayarak bu görevi sizin için yerine getirir.

Play EMM API'yi kullanmak için DPC Destek Kitaplığı'nı indirin ve ardından DPC'nizde yönetilen yapılandırma desteğini etkinleştirin.

DPC'nizde Yönetilen Yapılandırmalar desteğini etkinleştirin

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

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

Yönetilen yapılandırma kitaplığını ilk kullanıma hazırlayın. Bu örnekte "admin", DeviceAdminProvider'ın BileşenAdıdır.

Kotlin

var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)

Java

ManagedConfigurationsSupport managedConfigurationsSupport =
    new ManagedConfigurationsSupport(context, admin);

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

Kotlin

managedConfigurationsSupport.enableManagedConfigurations()

Java

managedConfigurationsSupport.enableManagedConfigurations();

Bu kitaplık DPC'nizde başlatıldıktan sonra, bu görevleri doğrudan DPC'de kodlamak yerine, yönetilen yapılandırmaları yönetilen uygulamalara uygulamak için EMM konsolunuzda ve sunucunuzda Google Play EMM API'yi kullanabilirsiniz. Ayrıntılar için Play üzerinden Yönetilen Yapılandırmalar bölümüne bakın.

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

Bir uygulamanın yapılandırma ayarlarını doğrudan DPC'den değiştirmek için DevicePolicyManager.setApplicationRestrictions() yöntemini çağırın ve DPC uygulamasının DeviceAdminRecipientr'ı, hedef uygulamanın paket adı ve uygulamanın yönetilen yapılandırmasını içeren Paket'e ilişkin parametreleri aktarın. Ayrıntılar için DPC ve EMM konsolunuzun etkileşimi ve Yönetilen Yapılandırmaları ayarlama bölümlerine göz atın. Ancak, yönetilen yapılandırmaları uygulamaya yönelik bu alternatif yaklaşımın Managed Google Play Hesapları dağıtımlarında önerilmediğini unutmayın.

Managed Google Play Hesabı temel hazırlık desteği

DPC Destek Kitaplığı, Managed Google Play Accounts için temel hazırlık desteği içerir. Bu desteği kullanmak için önce kitaplığı başlatmanız gerekir. Daha sonra Çalışma ortamını sağlama ve Managed Google Play hesabı ekleme işlemlerini yapabilirsiniz.

DPC'nizde Managed Google Play Accounts desteğini ilk kullanıma hazırlayın

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'sidir.

Kotlin

var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)

Java

AndroidForWorkAccountSupport androidForWorkAccountSupport =
    new AndroidForWorkAccountSupport(context, admin);

Managed Google Play Hesaplarının çalışma ortamını sağlamak için

DPC bir cihazın temel hazırlığını profil sahibi modunda (ACTION_PROVISION_MANAGED_PROFILE) veya cihaz sahibi modunda (ACTION_PROVISION_MANAGED_DEVICE) sağladıktan sonra aşağıdaki adımları uygulayarak cihazın Managed Google Play Hesaplarını 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 arama başarıyla geri döndüğünde, bir Managed Google Play Hesabı eklenebilir. Geri çağırma bir hata bildirirse kullanıcıdan cihazın ağ bağlantısı olduğundan emin olmasını isteyin (örneğin, indirme işlemi başarısız olursa). Diğer durumlarda bu hatayı 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ı ekleme

Android çerçevesinin AccountManager özelliği bir cihaza Managed Google Play Hesabı ekleyebilir. AccountManager ile etkileşimi basitleştirmek için DPC Destek Kitaplığı'ndaki yardımcı işlevi (aşağıdaki örnekte gösterilmiştir) kullanın. Bu işlev, Google Play sunucusu tarafından döndürülen jetonu işler ve Managed Google Play hesabının temel hazırlığını kolaylaştırır. İşlev, Managed Google Play Hesabı geçerli bir duruma geçtiğinde şunu döndürür:

Kotlin

androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)

Java

androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
  • token - Google Play EMM API Users.generateAuthenticationToken() çağrısı tarafından oluşturulan kullanıcı kimlik doğrulama jetonu.
  • accountAddedCallback: Cihaza başarıyla eklenen Managed Google Play Hesabını döndürür. Bu geri çağırma, onAccountReady() ve onFailure() yöntemlerini içermelidir.

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 Cihaz Yönetimi sayfasına göz atın.
  • Android Enterprise temel hazırlık yöntemleri hakkında bilgi edinmek için Android Enterprise geliştirici kılavuzundaki Cihazların temel hazırlığını yapma bölümüne göz atın.
  • Temel bir iş profilinin nasıl oluşturulacağını gösteren bir GitHub örneği için BasicManagedProfile bölümüne bakın.
  • Profil sahibi olarak diğer uygulamalarda yapılandırmaların nasıl ayarlanacağını gösteren bir GitHub örneği için AppRestrictionEnforcementr bölümüne bakın.