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:
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
: Ajoutez des groupes au groupe existant ou créez-en un. Ce kit est envoyé en tant que intent extra lorsque votre DPC lance ses écrans de conformité avec les règles.EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE
: Ne spécifiez un compte à migrer que si vous ajoutez un compte professionnel dans le cadre de votre travail. le provisionnement du profil.EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS
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:
EXTRA_PROVISIONING_WIFI_EAP_METHOD
EXTRA_PROVISIONING_WIFI_IDENTITY
EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY
EXTRA_PROVISIONING_WIFI_DOMAIN
EXTRA_PROVISIONING_WIFI_PHASE2_AUTH
EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE
EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE
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:
setGlobalPrivateDnsModeOpportunistic()
pour que l'appareil utilise un DNS privé lorsque le système peut découvrir un serveur de noms compatible, ousetGlobalPrivateDnsModeSpecifiedHost()
pour spécifier le nom d'hôte d'un serveur de noms compatible avec le protocole RFC7858 dans l'argumentprivateDnsHost
.
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:
DELEGATION_NETWORK_LOGGING
pour déléguer la journalisation de l'activité réseauDELEGATION_CERT_SELECTION
pour déléguer la sélection des certificats
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:
- Ajouter une sous-classe de
DelegatedAdminReceiver
à l'application déléguée. - 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
ouACTION_CHOOSE_PRIVATE_KEY_ALIAS
. - 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:
USES_POLICY_DISABLE_CAMERA
USES_POLICY_DISABLE_KEYGUARD_FEATURES
USES_POLICY_EXPIRE_PASSWORD
USES_POLICY_LIMIT_PASSWORD
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:
- Ajoutez la nouvelle autorisation
REQUEST_PASSWORD_COMPLEXITY
à votre le fichier manifeste de l'application. - Appelez
DevicePolicyManager.getPasswordComplexity()
. La complexité est divisée en quatre catégories: <ph type="x-smartling-placeholder">
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 permanentisLockdownEnabled()
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.