Nouveautés pour les entreprises sur Android 10

Cette page présente les nouvelles API, fonctionnalités et modifications de comportement introduites dans Android 10.

Profils professionnels pour les appareils détenus par l'entreprise

Android 10 introduit de nouvelles fonctionnalités de provisionnement et d'attestation pour les appareils détenus par l'entreprise qui ne nécessitent qu'un profil professionnel.

Amélioration des outils de gestion des profils professionnels

Vous pouvez provisionner des profils professionnels sur les appareils Android 10 et versions ultérieures enregistrés via Code QR ou Sans contact. Lors du provisionnement d'un appareil détenu par l'entreprise, un nouvel intent supplémentaire permet applications de contrôle des règles relatives aux appareils (DPC) permettant de créer un profil professionnel ou une application entièrement gérée configuration. Après la création d'un profil professionnel ou une fois la gestion complète établie, les DPC doivent lancer des écrans de conformité avec les règles pour appliquer les stratégies initiales.

Dans le fichier manifeste de votre DPC, déclarez un nouveau filtre d'intent pour GET_PROVISIONING_MODE dans une activité et ajoutez BIND_DEVICE_ADMIN autorisation d'empêcher des applications arbitraires de démarrer l'activité. Exemple :

<activity
    android:name=".GetProvisioningModeActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action
            android:name="android.app.action.GET_PROVISIONING_MODE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

Lors du provisionnement, le système lance l'activité associée au filtre d'intent intégré. Le but de cette activité est de spécifier un mode de gestion (profil professionnel ou service entièrement géré).

Il peut être utile de récupérer les extras de provisionnement avant de déterminer le mode de gestion approprié pour l'appareil. L'activité peut appeler getIntent() pour récupérer les éléments suivants:

Les DPC peuvent également créer un intent de résultat et y ajouter les extras suivants:

Pour définir le mode de gestion sur l'appareil, appelez putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode), où desiredProvisioningMode est:

  • Profil professionnel: PROVISIONING_MODE_MANAGED_PROFILE
  • Entièrement géré: PROVISIONING_MODE_FULLY_MANAGED_DEVICE

Profil professionnel complet ou provisionnement entièrement géré en envoyant le provisionnement retour des informations à la configuration via setResult(RESULT_OK, Intent) et fermer tous les écrans actifs avec finish()

Une fois le provisionnement terminé, un nouvel intent peut être lancé par les DPC. leurs écrans de conformité et appliquer les paramètres de stratégie initiaux. Dans le profil professionnel appareils, des écrans de conformité s'affichent dans le profil professionnel. Votre DPC doit pour s'assurer que ses écrans de conformité sont présentés aux utilisateurs, même en cas d'échappement tout au long du processus de configuration.

Dans le fichier manifeste de votre DPC, déclarez un nouveau filtre d'intent pour ADMIN_POLICY_COMPLIANCE dans une activité et ajoutez BIND_DEVICE_ADMIN autorisation d'empêcher des applications arbitraires de démarrer l'activité. Exemple :

<activity
    android:name=".PolicyComplianceActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action android:name="android.app.action.ADMIN_POLICY_COMPLIANCE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

Votre DPC doit utiliser ce nouvel intent au lieu d'écouter l'événement ACTION_PROFILE_PROVISIONING_COMPLETE annonce.

L'activité associée au filtre d'intent peut appeler getIntent() pour récupérer la EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE Après avoir respecté les règles, ADMIN_POLICY_COMPLIANCE doit renvoyer setResult(RESULT_OK, Intent) et fermer tous les écrans actifs avec finish()

Les appareils entièrement gérés renvoient les utilisateurs à l'écran d'accueil. Appareils avec profil professionnel inviter les utilisateurs à ajouter leur compte personnel avant de les ramener à la maison l'écran.

Attestation de l'ID d'appareil du profil professionnel

DPC définis comme administrateur d'un profil professionnel provisionné à l'aide de l'enregistrement sans contact peuvent obtenir des ID d'appareils certifiés matériels sécurisés, tels qu'un code IMEI ou un numéro de numéro de série. L'appareil doit être équipé de matériel sécurisé (par exemple, d'exécution (TEE) ou le composant sécurisé (SE)) et prennent en charge l'attestation et l'enregistrement sans contact.

Le composant d'administration d'un profil professionnel peut appeler DevicePolicyManager.generateKeyPair(), en transmettant un ou plusieurs des éléments ID_TYPE_SERIAL, ID_TYPE_IMEI ou ID_TYPE_MEID pour l'argument idAttestationFlags.

Pour en savoir plus sur l'extraction et la validation des ID d'appareil, consultez Valider des paires de clés intégrées au matériel avec l'attestation des clés.

Améliorations apportées au profil professionnel

De nouvelles API sont disponibles pour prendre en charge la visibilité et la visibilité des agendas dans tous les profils. le blocage des installations d'applications provenant de sources inconnues au niveau de l'appareil ;

Profil professionnel, sources inconnues au niveau de l'appareil

Applications téléchargées à partir de sources autres que Google Play (ou d'autres applications de confiance) magasins) sont appelées "applications provenant de sources inconnues". Sous Android 10, les administrateurs professionnels peuvent empêcher tout utilisateur ou profil d'installer des applications provenant sources n'importe où sur l'appareil en ajoutant une nouvelle restriction utilisateur DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY Toutefois, après l'ajout de cette restriction, une personne utilisant l'appareil pourra toujours installer des applications avec adb ;

Pour empêcher les utilisateurs d'installer par erreur des applications provenant de sources inconnues, nous nous vous recommandons d'ajouter cette restriction utilisateur, car elle ne nécessite pas Google Play services à installer. Si vous souhaitez prendre en charge les anciennes versions d'Android, vous pouvez Définissez une valeur de configuration gérée pour Google Play.

Limiter les périphériques d'entrée autorisés aux profils professionnels

Lorsque les administrateurs de profils professionnels appellent DevicePolicyManager.setPermittedInputMethods(), les utilisateurs sont limités aux modes de saisie autorisés dans leur travail plutôt que sur l'ensemble de l'appareil, ce qui permet aux utilisateurs de contrôler entièrement sur le côté personnel de leur appareil.

Effacement silencieux des profils professionnels

A ajouté WIPE_SILENTLY l'indicateur sur DevicePolicyManager.wipeData(). Si cet indicateur est activé, les utilisateurs ne recevront pas de notification une fois les données de leur profil professionnel effacées. à l'aide de wipeData().

Nouvelles fonctionnalités pour les appareils entièrement gérés

Android 10 introduit de nouvelles fonctionnalités et API pour les appareils entièrement gérés, y compris des mises à jour manuelles du système, l'extension du provisionnement NFC et des codes QR à inclure les identifiants d’un réseau Wi-Fi EAP et la prise en charge du DNS sur TLS.

Installation manuelle de la mise à jour du système

Dans Android 10, les administrateurs d'appareils entièrement gérés peuvent installer les mises à jour du système via un fichier de mise à jour du système. Les mises à jour manuelles du système permettent aux administrateurs informatiques d'effectuer les opérations suivantes:

  • Testez une mise à jour sur un petit nombre d'appareils avant de l'installer à grande échelle.
  • Évitez les téléchargements en double sur les réseaux à bande passante limitée.
  • Échelonnez les installations ou mettez à jour les appareils uniquement lorsqu'ils ne sont pas utilisés.

Tout d'abord, un administrateur informatique définit une règle de mise à jour du système différée. pour retarder l'installation automatique (si nécessaire). Ensuite, le DPC d'un appareil appelle installSystemUpdate() par le chemin d'accès au fichier de mise à jour du système du fabricant de l'appareil. Transmettez une InstallSystemUpdateCallback que le système peut utiliser pour signaler les erreurs qui se produisent avant que l'appareil redémarre automatiquement. En cas de problème, le système appelle onInstallUpdateError() avec le code d'erreur.

Après le redémarrage de l'appareil, votre DPC doit confirmer une installation réussie à l'aide d'une API de version, telle que Build.FINGERPRINT Si la mise à jour échoue, signalez-le à un administrateur informatique.

Provisionnement Wi-Fi EAP

Sous Android 10, les codes QR et les données NFC utilisés pour le provisionnement des appareils peuvent contenir Configuration et identifiants EAP, y compris les certificats. Lorsqu'une personne scanne un code QR ou s'il appuie sur un tag NFC, l'appareil s'authentifie automatiquement auprès d'un réseau à l'aide du protocole EAP et lance le processus de provisionnement saisie manuelle.

Pour authentifier le Wi-Fi à l'aide du protocole EAP, ajoutez un EXTRA_PROVISIONING_WIFI_SECURITY_TYPE supplémentaire avec la valeur "EAP". Pour spécifier l'authentification EAP, vous pouvez ajouter les extras de provisionnement suivants à votre intent:

Compatibilité avec un DNS privé

Les organisations peuvent utiliser DNS sur TLS. (appelé DNS privé sur les appareils Android) pour éviter les fuites de requêtes DNS. y compris celles des noms d’hôte internes. Composants d'administration d'appareils entièrement gérés peut contrôler les paramètres DNS privés de l'appareil. Pour définir le mode DNS privé, appel:

Lorsque votre DPC appelle l'une de ces méthodes, le système renvoie PRIVATE_DNS_SET_NO_ERROR si l'appel a réussi. Sinon, une erreur est renvoyée.

Pour récupérer le mode DNS privé et l'ensemble d'hôtes sur un appareil, appelez getGlobalPrivateDnsMode() et getGlobalPrivateDnsHost(). Vous pouvez empêcher les utilisateurs de modifier les paramètres DNS privés en ajoutant le paramètre DISALLOW_CONFIG_PRIVATE_DNS restriction utilisateur.

Exemption du mode de verrouillage VPN

Le mode verrouillage VPN permet à un DPC de bloquer n'importe quel réseau de trafic qui n'utilise pas le VPN. Administrateurs de les appareils gérés et les profils professionnels peuvent exclure des applications du mode verrouillé. Les applications exemptées utilisent un VPN par défaut, mais se connectent automatiquement aux autres si le VPN n'est pas disponible. Les applications exemptées qui sont également explicitement refusé l'accès à VPN n'utilisera que d'autres réseaux.

Pour exclure une application du mode verrouillé, appelez la nouvelle Méthode DevicePolicyManager setAlwaysOnVpnPackage() qui accepte une liste de packages d'applications exemptés. Tous les packages d'applications ajoutés par le DPC doit être installé sur l'appareil lorsque la méthode est appelée. Si une application est désinstallée et réinstallée, l'application doit être à nouveau exemptée. Pour obtenir les applications précédemment exempté du mode verrouillé, appelez getAlwaysOnVpnLockdownWhitelist()

Pour aider les administrateurs d'appareils entièrement gérés et de profils professionnels à activer le mode Blocage Android 10 ajoute le isAlwaysOnVpnLockdownEnabled() .

Nouveaux champs d'application de délégation

Android 10 étend la liste des fonctions qu'un DPC peut déléguer à d'autres applications spécialisées. Android regroupe les méthodes d'API nécessaires pour une tâche dans champs d'application. Pour déléguer un champ d'application, appelez setDelegatedScopes() et transmettre un ou plusieurs des champs d'application suivants:

Android 10 introduit la nouvelle classe DelegatedAdminReceiver pour les applications déléguées. Le système utilise ce broadcast receiver pour envoyer des DPC de type des rappels pour déléguer des applications. Applications pour lesquelles l'activité réseau a été déléguée la journalisation et la sélection de certificats doivent implémenter cette classe. Pour l'ajouter à une application déléguée, procédez comme suit:

  1. Ajouter une sous-classe de DelegatedAdminReceiver à l'application déléguée.
  2. Déclarez <receiver> dans le fichier manifeste de l'application, en ajoutant une action de filtre d'intent pour chaque rappel. Par exemple : ACTION_NETWORK_LOGS_AVAILABLE ou ACTION_CHOOSE_PRIVATE_KEY_ALIAS.
  3. Protégez le broadcast receiver avec le BIND_DEVICE_ADMIN l'autorisation.

L'extrait de code suivant montre le fichier manifeste d'une application déléguée unique qui gère à la fois la journalisation réseau et la sélection des certificats:

<receiver android:name=".app.DelegatedAdminReceiver"
        android:permission="android.permission.BIND_DELEGATED_ADMIN">
    <intent-filter>
        <action android:name="android.app.admin.action.NETWORK_LOGS_AVAILABLE">
        <action android:name="android.app.action.CHOOSE_PRIVATE_KEY_ALIAS">
    </intent-filter>
    </receiver>

Consignation de l'activité réseau

Pour aider les organisations à détecter et à suivre les logiciels malveillants, les DPC peuvent consigner les connexions TCP et les résolutions DNS par le système. Sous Android 10, administrateurs de comptes de service appareils peuvent déléguer la journalisation réseau à une application spécialisée.

Pour récupérer les journaux réseau après que le système met un lot à disposition, les applications déléguées doivent d'abord sous-classer DelegatedAdminReceiver (décrit précédemment). Dans votre sous-classe, implémentez la classe onNetworkLogsAvailable() en suivant les instructions de la section Récupérer des journaux.

Les applications déléguées peuvent appeler les éléments suivants : Méthodes DevicePolicyManager (en transmettant null pour l'argument admin):

Pour éviter de perdre des journaux, l'outil DPC ne doit pas activer la journalisation réseau. si vous prévoyez de déléguer à une autre application. L'application déléguée doit activer et collecter les journaux réseau. Une fois qu'un DPC délègue la journalisation réseau, il ne recevra pas toute autre onNetworkLogsAvailable() .

Pour savoir comment signaler la journalisation de l'activité réseau à partir d'une application déléguée, consultez l'article guide du développeur Journalisation de l'activité réseau.

Sélection du certificat

Sous Android 10, les administrateurs les appareils entièrement gérés, les profils professionnels et les utilisateurs secondaires peuvent déléguer la sélection de certificats à une application spécialisée.

Pour sélectionner un alias de certificat, les applications déléguées doivent d'abord sous-classer DelegatedAdminReceiver (décrit précédemment). Dans votre sous-classe, implémentez la classe onChoosePrivateKeyAlias() et renvoyer un alias pour une certificat ou, pour inviter l'utilisateur à sélectionner un certificat, renvoyez null.

Abandon des règles d'administration des appareils

Android 10 empêche les applications et les DPC d'appliquer l'ancien appareil règles d'administration. Nous recommandons aux clients et partenaires passent à des appareils entièrement gérés ou à des profils professionnels. Les éléments suivants : les stratégies génèrent une exception SecurityException Lorsqu'elle est appelée par un administrateur d'appareil ciblant Android 10:

Certaines applications utilisent l'administration des appareils pour le grand public. Pour comme le verrouillage et l'effacement d'un appareil égaré. Pour ce faire, les éléments suivants règles restent disponibles:

Pour en savoir plus sur ces modifications, consultez Administration de l'appareil abandon.

Nouvelles fonctionnalités pour les applications

Les applications ciblant Android 10 peuvent interroger la complexité du verrouillage de l'écran définie sur un appareil. avant d'afficher des données confidentielles ou de lancer des fonctionnalités critiques. Appels depuis les applications l'API KeyChain bénéficient de de comportements améliorés, et de nouvelles fonctionnalités sont également disponibles pour les applications VPN.

Contrôle qualité du verrouillage de l'écran

À partir d'Android 10, les applis comportant des fonctionnalités essentielles qui nécessitent un verrouillage de l'écran peuvent interroger la complexité du verrouillage de l'écran d'un appareil ou d'un profil professionnel. Applications nécessitant un un verrouillage de l'écran plus fort peut diriger l'utilisateur vers les paramètres de verrouillage de l'écran du système, ce qui leur permet de mettre à jour leurs paramètres de sécurité.

Pour vérifier la qualité du verrouillage de l'écran:

Pour lancer les paramètres de verrouillage de l'écran du système, utilisez ACTION_SET_NEW_PASSWORD avec des options EXTRA_PASSWORD_COMPLEXITY supplémentaires, la complexité spécifiée dans l'élément supplémentaire sur l'intent sont grisés. Les utilisateurs peuvent choisissez l'une des options de verrouillage de l'écran disponibles ou quittez l'écran.

Bonne pratique:Affichez un message dans votre application avant de lancer le système page de verrouillage de l'écran. Lorsque l'application est réactivée, appelez DevicePolicyManager.getPasswordComplexity() à nouveau. Si un verrouillage d'écran plus sûr est toujours nécessaire, limitez l'accès au lieu invitant de manière répétée les utilisateurs à mettre à jour leurs paramètres de sécurité.

Compatibilité du proxy HTTP dans les applications VPN

Sous Android 10, les applications de VPN peuvent définir un proxy HTTP pour leur connexion VPN. Pour ajouter un proxy HTTP, une application VPN doit configurer un Instance ProxyInfo avec un hôte et un port avant d'appeler VpnService.Builder.setHttpProxy() Le système et de nombreuses bibliothèques réseau utilisent ce paramètre de proxy, mais le système ne force pas les applications à transmettre des requêtes HTTP par proxy.

Pour obtenir un exemple de code montrant comment définir un proxy HTTP, consultez la ToyVPN application exemple.

Modes de service VPN

Les applications VPN peuvent détecter si le service est en cours d'exécution grâce au mode Always-on VPN et en cas de verrouillage est activé. Nouvelles méthodes ajoutées dans Android 10 peuvent vous aider à ajuster votre interface utilisateur. Par exemple : peut désactiver votre bouton de déconnexion quand le VPN permanent contrôle le cycle de vie de votre service.

Les applications de VPN peuvent appeler les VpnService suivants : après la connexion au service et en établissant l'interface locale:

  • isAlwaysOn() jusqu'à déterminer si le système a démarré le service en raison du VPN permanent
  • isLockdownEnabled() pour savoir si le système bloque les connexions qui n'utilisent pas le VPN

L'état "Always-on" (Toujours activé) reste le même tant que le service est en cours d'exécution, mais l'état du mode confiné peut changer.

Améliorations apportées au trousseau

Android 10 introduit plusieurs améliorations liées au API KeyChain.

Lorsqu'une application appelle KeyChain.choosePrivateKeyAlias() (Android 10 ou version ultérieure) "Appareils" filtre la liste des certificats qu'un utilisateur peut choisir en fonction émetteurs et algorithmes de clé spécifiés dans l'appel.

Par exemple, lorsqu'un serveur TLS envoie une demande de certificat, lors d'un handshake TLS et que le navigateur appelle KeyChain.choosePrivateKeyAlias(), l'invite de sélection de certificat uniquement inclut des options correspondant au paramètre "émetteurs". Si aucune option de correspondance n'est ou qu'aucun certificat n'est installé sur l'appareil, ne sera pas présentée à l'utilisateur.

De plus, KeyChain ne dispose plus nécessite le verrouillage de l'écran sur l'appareil pour que les clés ou les certificats CA importés.