Développer un outil de contrôle des règles relatives aux appareils

Ce guide explique comment développer un outil de contrôle des règles relatives aux appareils (DPC) pour lors d'un déploiement Android en entreprise. Une application DPC, précédemment connue en tant qu'outil de contrôle des règles professionnelles, contrôle les règles locales relatives aux appareils et le système applications sur les appareils.

<ph type="x-smartling-placeholder">

À propos des DPC

Lors d'un déploiement Android en entreprise, l'entreprise conserve le contrôle divers aspects des appareils des utilisateurs, tels que l'isolement des données professionnelles des informations des utilisateurs données personnelles, la préconfiguration des applications approuvées pour l'environnement, ou la désactivation de certaines fonctionnalités de l'appareil (par exemple, l'appareil photo).

En tant que EMM, vous développez une application DPC qui peut être utilisée par vos clients dans à votre console EMM Google Cloud. Votre client déploie l'outil DPC sur les appareils des utilisateurs qu'il gère. L'outil DPC fait office de passerelle entre votre console EMM (et votre serveur) et l'appareil. Un administrateur utilise la console EMM pour effectuer diverses tâches, y compris la configuration des paramètres et des applications de l’appareil.

L'outil DPC crée et gère le profil professionnel sur l'appareil où il est installé. Le profil professionnel chiffre les informations professionnelles et les sépare des utilisateurs vos applications et données personnelles. Avant de créer le profil professionnel, le DPC peut également provisionner un compte Google Play d'entreprise à utiliser sur l'appareil.

Ce guide vous explique comment développer un DPC capable de créer et de gérer des profils professionnels.

Bibliothèque de support DPC pour les fournisseurs EMM

La bibliothèque Support DPC pour les EMM comprend des classes utilitaires et d'assistance qui faciliter le provisionnement et la gestion des appareils Android dans une entreprise environnement. Cette bibliothèque vous permet de profiter des fonctionnalités importantes de votre Applications DPC:

  • Assistance pour le provisionnement des comptes Google Play d'entreprise: Provisionnement géré les comptes Google Play de l'application DPC nécessitent que Google Play et Google Les applis liées aux services Play respectent la configuration minimale requise concernant la version. Toutefois, la mise à jour les applications peuvent être complexes. La bibliothèque de support DPC se charge de mettre à jour ces et assure la compatibilité avec les futures mises à jour du Processus de provisionnement des comptes Play. Voir les comptes Google Play d'entreprise assistance en matière de provisionnement pour plus de détails.
  • Compatibilité avec les configurations gérées: L'utilisation de l'API Play EMM pour gérer les configurations gérées pour les applications approuvées est le plus simple pour implémenter des configurations gérées sur votre DPC. Le support DPC La bibliothèque vous permet de déléguer à Google Play la tâche d'appliquer de configuration (anciennement "restrictions d'application") telles qu'elles sont définies par l'administrateur à l'aide de votre console. L'utilisation de l'API Play EMM pour gérer les configurations gérées permet la configuration de l'application à appliquer de manière atomique pendant l'installation. Voir Appliquer des configurations gérées pour les applications professionnelles. votre DPC.

Suivez les étapes ci-dessous pour télécharger la bibliothèque. Les tâches détaillées dans ce guide supposer l’utilisation de la bibliothèque Support DPC.

Télécharger la bibliothèque Support DPC

Pour utiliser la bibliothèque d'assistance DPC, téléchargez-la à partir de la communauté des fournisseurs EMM Android Enterprise. Vous devez ajouter la bibliothèque à votre fichier build.gradle et vous occuper des autres dépendances lorsque vous créez votre application DPC. Par exemple, la bibliothèque requiert la version 11.4.0 <ph type="x-smartling-placeholder"></ph> Bibliothèque cliente des services Google Play pour l'authentification

  1. Ajoutez la bibliothèque au fichier build.gradle:

    Groovy

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

    Kotlin

    implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
    
  2. Ajouter la version 11.4.0 Bibliothèque cliente d'authentification des services Google Play dans le fichier build.gradle:

    Groovy

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

    Kotlin

    implementation("com.google.android.gms:play-services-auth:11.4.0")
    
<ph type="x-smartling-placeholder">

L'exécution de la bibliothèque nécessite certaines autorisations. Vous devez donc les ajouter le fichier manifeste de votre application DPC lorsque vous l'importez sur 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"/>

En plus de ces étapes préliminaires de configuration et de déploiement, vous devez également initialiser la fonctionnalité de bibliothèque spécifique dans votre code DPC, en fonction du que vous souhaitez implémenter. Pour plus d'informations, reportez-vous aux ci-dessous.

Créer un DPC

Créez votre DPC sur le modèle existant utilisé pour les applications d'administration des appareils. Plus précisément, votre application doit sous-classer DeviceAdminReceiver (une classe de android.app.admin package) comme décrit dans la section <ph type="x-smartling-placeholder"></ph> Device Administration (Administration de l'appareil).

Créer un profil professionnel

Pour voir un exemple montrant comment créer un profil professionnel de base, consultez <ph type="x-smartling-placeholder"></ph> BasicManagedProfile sur GitHub.

Pour créer un profil professionnel sur un appareil qui dispose déjà d'un profil personnel, procédez comme suit : commencez par vérifier si l'appareil est compatible avec les profils professionnels. l'existence Fonctionnalité système 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!
}

Si l'appareil est compatible avec les profils professionnels, créez un profil professionnel en envoyant un intent avec un ACTION_PROVISION_MANAGED_PROFILE action. Dans certains documents, le profil géré est terme générique qui signifie la même chose que profil professionnel dans le contexte d'Android en entreprise). Inclure le nom du package d'administration de l'appareil en plus:

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

Le système répond à cet intent en procédant comme suit:

  • Vérifie que l'appareil est chiffré. Si ce n'est pas le cas, un message l'utilisateur pour chiffrer l'appareil avant de continuer.
  • Permet de créer un profil professionnel.
  • Supprime les applications non requises du profil professionnel.
  • Il copie l'application DPC dans le profil professionnel et définit le DPC lui-même comme le propriétaire de la fiche.

Remplacer onActivityResult() par vérifiez si le provisionnement a bien été effectué:

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

Terminer l'activation du profil professionnel

Une fois le profil provisionné, le système appelle le DPC. la méthode DeviceAdminReceiver.onProfileProvisioningComplete() de l'application. Remplacement cette méthode de rappel pour terminer l'activation du profil professionnel.

DeviceAdminReceiver.onProfileProvisioningComplete() standard effectue les opérations suivantes:

Activer le profil professionnel

Une fois ces tâches terminées, appelez la fonction Méthode setProfileEnabled() pour activer le profil professionnel:

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

Configurer des règles relatives aux appareils

L'application DPC applique les règles relatives aux appareils définies par un administrateur pour répondre les exigences et les contraintes de l'organisation. Par exemple, une stratégie de sécurité peut exiger que les appareils se verrouillent après un certain nombre de tentatives infructueuses de saisie du mot de passe. Le DPC interroge la console EMM pour connaître les règles actuelles, puis les applique à l'aide de l'onglet Appareil API Administration.

Pour savoir comment appliquer des règles relatives aux appareils, consultez <ph type="x-smartling-placeholder"></ph> Règles.

Appliquer des configurations gérées aux applis professionnelles

Les configurations gérées vous permettent d'offrir à vos clients la possibilité préconfigurer les applications dont le déploiement a été approuvé, et les mettre à jour des applications lorsque la configuration doit être modifiée. Configurer une application avant permet de s'assurer que les règles de sécurité et les autres règles de l'organisation sont respectées lors de l'installation de l'application sur l'appareil cible.

Les fonctionnalités de l'application sont définies par le développeur de l'application dans un schéma XML (les schéma de configurations gérées) qui accompagne l'application lors de son importation dans Google. Play (pour les développeurs d'applications, consultez Configurer des configurations gérées pour en savoir plus).

Vous récupérez ce schéma à partir de l'application afin de le présenter aux administrateurs de vos clients. de votre console EMM, fournissez une interface utilisateur dans laquelle les différentes options définies dans l'affichage du schéma et permettent aux administrateurs de préconfigurer les paramètres de l'application. La configuration gérée qui en résulte, définie par l'administrateur, est généralement stockées sur le serveur EMM, qui utilise ensuite API Play EMM à définir Configurations gérées pour l'appareil ou Managedconfigurationsforuser. Voir Configurations gérées via Play pour en savoir plus.

Les configurations gérées peuvent être appliquées à l'application à l'aide de l'API Play EMM (approche recommandée) ou directement depuis l'outil de contrôle des règles (DPC) (décrit dans la section Appliquer les configurations gérées directement auprès de la DPC). Utiliser l'API Play EMM présente plusieurs avantages, dont une mise en œuvre facile, car vous pouvez utiliser Bibliothèque de support DPC pour simplifier les tâches DPC. En outre, l'API Play EMM:

  • Définit la configuration de manière atomique lorsqu'une nouvelle application est installée, afin que l'application soit prête la première fois que l'utilisateur la lance.
  • Permet de gérer les configurations par utilisateur et d'éviter ainsi le provisionnement de la surveillance pour chaque appareil.

Appliquez les configurations gérées à l'aide du API Play EMM

Afin d'utiliser l'API Play EMM pour les configurations gérées, le DPC doit autoriser les Google Play pour définir des configurations. La bibliothèque de support DPC s'occupe de tout. en transférant la configuration envoyée par Google Play par proxy.

Pour utiliser l'appli Play API EMM, téléchargez la bibliothèque Support DPC puis activez la prise en charge des configurations gérées dans votre DPC.

Activer la prise en charge des configurations gérées dans votre DPC

Importez cette classe dans votre DPC:

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

Initialiser la bibliothèque de configurations gérées Dans cet exemple, "admin" correspond à ComponentName de DeviceAdminReceiver.

Kotlin

var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)

Java

ManagedConfigurationsSupport managedConfigurationsSupport =
    new ManagedConfigurationsSupport(context, admin);

Activez les configurations gérées:

Kotlin

managedConfigurationsSupport.enableManagedConfigurations()

Java

managedConfigurationsSupport.enableManagedConfigurations();

Une fois cette bibliothèque initialisée dans votre DPC, vous pouvez utiliser le API Google Play EMM dans votre fournisseur EMM console et serveur pour appliquer les configurations gérées aux applications approuvées, coder ces tâches directement dans le DPC. Voir <ph type="x-smartling-placeholder"></ph> Configurations gérées via Play pour en savoir plus.

Appliquer des configurations gérées directement à partir de la DPC

Pour modifier les paramètres de configuration d'une application directement à partir du DPC, appelez la méthode Méthode DevicePolicyManager.setApplicationRestrictions() et transmettre pour les paramètres DeviceAdminReceiver, le nom du package de l'application cible et le Bundle comprenant la configuration gérée de l'application telle qu'elle est définie par l'administrateur. Voir Comment votre Les outils DPC et la console EMM interagissent et consultez Configurer des configurations gérées pour en savoir plus. Toutefois, notez que cette approche alternative à l'application des règles gérées ne sont pas recommandées pour les déploiements de comptes Google Play d'entreprise.

Gestion des comptes Google Play d'entreprise assistance

La bibliothèque Support DPC inclut des ressources pour le provisionnement Comptes Google Play d'entreprise. Pour utiliser cette prise en charge, vous devez d'abord initialiser bibliothèque. Ensuite, vous pouvez vérifier que environnement de travail et ajoutez un compte Google Play d'entreprise.

Initialiser les comptes Google Play d'entreprise prise en charge dans votre DPC

Importez cette classe dans votre DPC:

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

Initialiser la bibliothèque de compatibilité de provisionnement Dans cet exemple, "admin" est le ComponentName de DeviceAdminReceiver.

Kotlin

var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)

Java

AndroidForWorkAccountSupport androidForWorkAccountSupport =
    new AndroidForWorkAccountSupport(context, admin);

Veiller à ce que l’environnement de travail Comptes Google Play d'entreprise

Une fois que l'outil DPC a provisionné un appareil en mode propriétaire du profil (ACTION_PROVISION_MANAGED_PROFILE) ou un appareil mode propriétaire (ACTION_PROVISION_MANAGED_DEVICE), assurez-vous que l'appareil est compatible avec les comptes Google Play d'entreprise en appelant la méthode suivante:

Kotlin

androidForWorkAccountSupport.ensureWorkingEnvironment(callback)

Java

androidForWorkAccountSupport.ensureWorkingEnvironment(callback);

Le rappel signale la réussite ou l'échec de ce processus. Lorsque le rappel s'affiche, vous pouvez ajouter un compte Google Play d'entreprise. Si le rappel signale une erreur, demandez à l'utilisateur de vérifier que L'appareil dispose d'une connexion réseau (en cas d'échec du téléchargement, par exemple). Dans d'autres les cas de figure, signalez-le à 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)
    }
}

Ajouter un compte Google Play d'entreprise

AccountManager du framework Android peuvent ajouter un compte Google Play d'entreprise à un appareil. Pour simplifier les interactions avec AccountManager, utilisez la fonction d'assistance (illustrée dans l'exemple ci-dessous). de la bibliothèque Support DPC. La fonction gère le jeton renvoyé par le serveur Google Play et facilite le provisionnement le compte Google Play d'entreprise. La fonction est renvoyée lorsque le compte Google Play d'entreprise L'état du compte est valide:

Kotlin

androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)

Java

androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
  • token : jeton d'authentification utilisateur généré par l'API Appel Users.generateAuthenticationToken() de l'API EMM Play.
  • accountAddedCallback : renvoie le compte Google Play d'entreprise qui a bien été ajouté à l'appareil. Ce rappel doit inclure onAccountReady() et 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).
        }
};
  • Pour en savoir plus sur l'API Device Administration, consultez Appareil Administration :
  • Pour en savoir plus sur les méthodes de provisionnement Android Enterprise, consultez Provisionnez des appareils dans le Guide du développeur Android Enterprise
  • Pour obtenir un exemple GitHub qui montre comment créer un profil professionnel de base, voir BasicManagedProfile.
  • Pour un exemple GitHub qui montre comment définir des configurations sur d'autres applications en tant que propriétaire du profil, consultez les AppRestrictionEnforcer.