Novedades de Android 10 en el ámbito empresarial

Esta página ofrece una descripción general de las nuevas APIs, funciones y cambios de comportamiento introducidos en Android 10.

Perfiles de trabajo para dispositivos empresariales

Android 10 presenta nuevas funciones de aprovisionamiento y certificación para dispositivos empresariales que solo requieren un perfil de trabajo.

Herramientas de aprovisionamiento mejoradas para perfiles de trabajo

Puedes aprovisionar perfiles de trabajo en dispositivos con Android 10 y versiones posteriores inscritos usando Código QR o la inscripción automática. Durante el aprovisionamiento de un dispositivo empresarial, un nuevo intent adicional permite apps controlador de política del dispositivo (DPC) para iniciar un perfil de trabajo o un perfil completamente administrado configuración. Después de crear un perfil de trabajo o establecer la administración completa, los DPC deben mostrar pantallas de cumplimiento de las políticas para aplicar las políticas iniciales.

En el archivo de manifiesto de tu DPC, declara un nuevo filtro de intents para GET_PROVISIONING_MODE en una actividad y agrega BIND_DEVICE_ADMIN permiso para evitar que apps arbitrarias inicien la actividad. Por ejemplo:

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

Durante el aprovisionamiento, el sistema inicia la actividad asociada con el filtro de intents. El propósito de esta actividad es especificar un modo de administración. (de perfil de trabajo o completamente administrado).

Puede ser útil recuperar los extras de aprovisionamiento antes de determinar la el modo de administración adecuado para el dispositivo. La actividad puede llamar getIntent() para recuperar lo siguiente:

Los DPC también pueden crear un nuevo intent de resultado y agregar los siguientes adicionales:

Para configurar el modo de administración en el dispositivo, llama putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode), donde desiredProvisioningMode es:

  • Perfil de trabajo: PROVISIONING_MODE_MANAGED_PROFILE
  • Completamente administrado: PROVISIONING_MODE_FULLY_MANAGED_DEVICE

Completar el perfil de trabajo o el aprovisionamiento completamente administrado enviando el aprovisionamiento detalles de vuelta a la configuración a través de setResult(RESULT_OK, Intent) y cerrar todas las pantallas activas con finish()

Cuando se completa el aprovisionamiento, los DPC pueden iniciar un nuevo intent sus pantallas de cumplimiento y aplicar la configuración inicial de las políticas. En el perfil de trabajo de cumplimiento, se muestran en el perfil de trabajo. Tu DPC debe garantizar que las pantallas de cumplimiento se muestren a los usuarios, incluso si estos se escapan. el flujo de configuración.

En el archivo de manifiesto de tu DPC, declara un nuevo filtro de intents para ADMIN_POLICY_COMPLIANCE en una actividad y agrega BIND_DEVICE_ADMIN permiso para evitar que apps arbitrarias inicien la actividad. Por ejemplo:

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

Tu DPC debe usar este nuevo intent en lugar de detectar el ACTION_PROFILE_PROVISIONING_COMPLETE transmisión.

La actividad asociada con el filtro de intents puede llamar getIntent() para recuperar el EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE Tras cumplir con la política, ADMIN_POLICY_COMPLIANCE debe mostrar setResult(RESULT_OK, Intent) y cerrar todas las pantallas activas con finish()

Los dispositivos completamente administrados redirigen a los usuarios a la pantalla principal. Dispositivos con perfil de trabajo Solicitarles a los usuarios que agreguen su cuenta personal antes de regresarlos a la página principal en la pantalla.

Certificación del ID de los dispositivos con perfiles de trabajo

Los DPC establecidos como el administrador de un perfil de trabajo aprovisionado con la inscripción automática puede obtener IDs de dispositivos certificados por hardware seguro, como un IMEI o la dirección del número de serie. El dispositivo debe incluir hardware seguro (como un entorno de ejecución (TEE) o elemento seguro (SE) y admiten el ID de dispositivo automática y la inscripción automática.

El componente de administrador de un perfil de trabajo puede llamar a DevicePolicyManager.generateKeyPair() y pasar uno o varios ID_TYPE_SERIAL, ID_TYPE_IMEI o ID_TYPE_MEID para el argumento idAttestationFlags.

Para obtener más información sobre cómo extraer y validar los IDs de dispositivo, consulta Cómo verificar pares de claves guardadas en hardware con certificación de claves.

Mejoras a los perfiles de trabajo

Hay nuevas APIs disponibles para admitir la visibilidad del calendario con perfiles sincronizados y bloqueo de instalaciones de apps de fuentes desconocidas en todo el dispositivo

Fuentes desconocidas, perfiles de trabajo y dispositivos

Apps descargadas de otras fuentes que no sean Google Play (u otra app de confianza) se llaman aplicaciones de fuentes desconocidas. En Android 10, los administradores de trabajo Los perfiles pueden impedir que cualquier usuario o perfil instale apps de datos desconocidos fuentes en cualquier parte del dispositivo. Para ello, agrega la nueva restricción de usuario DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY Sin embargo, después de agregar esta restricción, la persona que use el dispositivo podrá instalar apps con adb

Para evitar que los usuarios instalen por error aplicaciones de fuentes desconocidas, se recomienda agregar esta restricción de usuario porque no requiere Google Play servicios que se instalarán. Si quieres brindar compatibilidad con versiones anteriores de Android, puedes establecer un valor de configuración administrada para Google Play

Cómo limitar los dispositivos de entrada permitidos en los perfiles de trabajo

Cuando los administradores de perfiles de trabajo llaman a DevicePolicyManager.setPermittedInputMethods(), los usuarios solo pueden acceder a los métodos de entrada permitidos dentro de su trabajo. en lugar de todo el dispositivo, lo que brinda a los usuarios control total sobre la entrada en el aspecto personal de su dispositivo.

Cómo limpiar perfiles de trabajo sin notificarlo

Se agregó WIPE_SILENTLY marca DevicePolicyManager.wipeData(). Si la marca está configurada, no se notificará a los usuarios después de que se limpie su perfil de trabajo. con wipeData().

Funciones nuevas para los dispositivos completamente administrados

Android 10 presenta nuevas funciones y APIs para dispositivos completamente administrados, incluidas las actualizaciones manuales del sistema, la extensión del aprovisionamiento de códigos QR y NFC a incluir las credenciales para una red Wi-Fi de EAP y la compatibilidad con DNS por TLS

Instalación de la actualización del sistema manual

En Android 10, los administradores de dispositivos completamente administrados pueden instalar actualizaciones del sistema mediante un archivo de actualización del sistema. Las actualizaciones manuales del sistema permiten que los administradores de TI puedan:

  • Prueba una actualización en una pequeña cantidad de dispositivos antes de instalarlas ampliamente.
  • Evita las descargas duplicadas en redes con ancho de banda limitado.
  • Escalonar las instalaciones o actualizar los dispositivos solo cuando no se usen

Primero, un administrador de TI establece una política de actualización del sistema pospuesta para retrasar la instalación automática (si es necesario). A continuación, el DPC del dispositivo llama a installSystemUpdate(). por la ruta de acceso al archivo de actualización del sistema del fabricante del dispositivo. Pasa un InstallSystemUpdateCallback que el sistema puede usar para informar errores que ocurren antes reinicios. Si se produce un error, el sistema llama a onInstallUpdateError() con el código de error.

Después de reiniciar el dispositivo, tu DPC deberá confirmar que la instalación se realizó correctamente con una API de versión, como Build.FINGERPRINT Si la actualización si falla, informa el error a un administrador de TI.

Aprovisionamiento de Wi-Fi con EAP

En Android 10, los códigos QR y los datos NFC para la provisión de dispositivos pueden contener Configuración y credenciales de EAP, incluidos los certificados. Cuando una persona escanea un código QR o presiona una etiqueta NFC, el dispositivo se autentica automáticamente en una red Wi-Fi local con EAP e inicia el proceso de aprovisionamiento sin la entrada manual.

Para autenticar la red Wi-Fi con EAP, agrega un EXTRA_PROVISIONING_WIFI_SECURITY_TYPE adicional con el valor "EAP". Para especificar la autenticación de EAP, puedes agregar el siguientes de aprovisionamiento adicionales para tu intent:

Compatibilidad con DNS privados

Las organizaciones pueden usar DNS por TLS. (llamado DNS privado en los dispositivos Android) para evitar filtrar consultas de DNS, incluidos los de nombres de host internos. Componentes para administradores de dispositivos completamente administrados puede controlar la configuración de DNS privado del dispositivo. Para configurar el modo de DNS privado, Llamada:

Cuando tu DPC llama a cualquiera de estos métodos, el sistema muestra PRIVATE_DNS_SET_NO_ERROR en los siguientes casos: la llamada se realizó correctamente. De lo contrario, muestra un error.

Para recuperar el modo de DNS privado y el conjunto de hosts en un dispositivo, llama a getGlobalPrivateDnsMode() y getGlobalPrivateDnsHost(). Para impedir que los usuarios cambien la configuración del DNS privado, agrega el DISALLOW_CONFIG_PRIVATE_DNS restricción de usuarios.

Exención del modo de bloqueo de VPN

El modo de bloqueo de VPN permite que un DPC bloquee cualquier red tráfico que no usa la VPN. Administradores de los dispositivos administrados y los perfiles de trabajo pueden excluir a las apps del modo de bloqueo. Las apps exentas usan una VPN de forma predeterminada, pero se conectan automáticamente a otras redes si la VPN no está disponible. Las apps exentas que también estén explícitamente denegó el acceso a la VPN solo usará otras redes.

Para excluir una app del modo de bloqueo, llama a la nueva Método DevicePolicyManager setAlwaysOnVpnPackage() que acepte una lista de paquetes de apps exentos. Cualquier paquete de apps que el DPC agregue debe instalarse en el dispositivo cuando se llama al método. Si una app es desinstalada y reinstalada, la app deberá volver a excluirse. Para obtener las apps eximido anteriormente del modo de bloqueo, llama getAlwaysOnVpnLockdownWhitelist()

Para ayudar a los administradores de perfiles de trabajo y dispositivos completamente administrados a acceder al modo de bloqueo Android 10 agrega el estado isAlwaysOnVpnLockdownEnabled() .

Nuevos alcances de las delegaciones

Android 10 amplía la lista de funciones que un DPC puede delegar a otros y apps especializadas. Android agrupa los métodos de API necesarios para realizar una tarea alcances. Para delegar un permiso, llama a setDelegatedScopes() y pasar uno o más de los siguientes alcances:

Android 10 presenta la nueva clase DelegatedAdminReceiver para apps delegadas. El sistema usa este receptor de emisión para enviar solicitudes devoluciones de llamada a las apps delegadas. Apps que tienen actividad de red delegada el registro y la selección de certificados deberían implementar esta clase. Para agregar esto, sigue estos pasos: a una app delegada, sigue estos pasos:

  1. Agrega una subclase de DelegatedAdminReceiver a la app delegada.
  2. Declara el <receiver> en los manifiesto de la app, agregando una acción de filtro de intents para cada devolución de llamada. Por ejemplo: ACTION_NETWORK_LOGS_AVAILABLE o ACTION_CHOOSE_PRIVATE_KEY_ALIAS.
  3. Protege el receptor de emisión con BIND_DEVICE_ADMIN permiso.

El siguiente fragmento muestra el manifiesto de una app delegada que controla el registro de red y la selección de certificados:

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

Registro de la actividad de red

Para ayudar a las organizaciones a detectar y rastrear software malicioso, los DPC pueden registrar conexiones TCP y búsquedas de DNS del sistema. En Android 10, administradores de implementaciones pueden delegar el registro de red a una app especializada.

Para recuperar registros de red después de que el sistema pone a disposición un lote, las apps delegadas deben crear primero una subclase DelegatedAdminReceiver (como se describió anteriormente). En tu subclase, implementa el onNetworkLogsAvailable() siguiendo las instrucciones en Cómo recuperar registros.

Las apps delegadas pueden llamar a los siguientes Métodos DevicePolicyManager (pasa null para el argumento admin):

Para evitar perder registros, los DPC no deben habilitar el registro de red si planeas delegar a otra app. La app delegada debe habilitar y recopilar registros de red. Después de que un DPC delega el registro de red, no recibirá más onNetworkLogsAvailable() devoluciones de llamada.

Para aprender a informar un registro de actividad de red desde una app delegada, consulta el Guía para desarrolladores: Registro de actividad de red.

Selección de certificados

En Android 10, los administradores de dispositivos completamente administrados, perfiles de trabajo y usuarios secundarios pueden delegar de certificados nuevos a una app especializada.

Para seleccionar un alias de certificado, las apps delegadas deben crear primero una subclase DelegatedAdminReceiver (como se describió anteriormente). En tu subclase, implementa el Devolución de llamada onChoosePrivateKeyAlias() y muestra un alias para un certificado o, para solicitar al usuario que seleccione un certificado, muestra null.

Baja de las políticas de administración del dispositivo

Android 10 impide que las apps y los DPC apliquen los dispositivos heredados de administración. Recomendamos a los clientes y socios hacen la transición a dispositivos completamente administrados o perfiles de trabajo. Lo siguiente las políticas arrojan una SecurityException Cuando lo invoca un administrador de dispositivos orientado a Android 10:

Algunas aplicaciones usan administradores de dispositivos para la administración de dispositivos de consumidores. Para como bloquear y limpiar un dispositivo perdido. Para habilitar esta función, políticas seguirán disponibles:

Para obtener más información sobre estos cambios, lee Administrador del dispositivo. baja.

Funciones nuevas para apps

Las apps orientadas a Android 10 pueden consultar la complejidad del bloqueo de pantalla establecida en un dispositivo antes de mostrar datos confidenciales o lanzar funciones esenciales. Llamadas de apps el beneficio de la API de KeyChain de mejoras de comportamiento, mientras que las nuevas funciones también están disponibles para las apps de VPN.

Control de calidad del bloqueo de pantalla

A partir de Android 10, las apps con funciones esenciales que requieran un bloqueo de pantalla consultar la complejidad del bloqueo de pantalla de un dispositivo o perfil de trabajo. Las apps que necesitan un un bloqueo de pantalla más seguro puede dirigir al usuario a la configuración del bloqueo de pantalla del sistema y les permite actualizar la configuración de seguridad.

Para comprobar la calidad del bloqueo de pantalla:

Para iniciar la configuración del bloqueo de pantalla del sistema, usa ACTION_SET_NEW_PASSWORD con EXTRA_PASSWORD_COMPLEXITY adicionales, opciones que no cumplan con la complejidad especificada en el intent adicional están inhabilitadas. Los usuarios pueden elige una de las opciones de bloqueo de pantalla disponibles o sal de la pantalla.

Práctica recomendada: Muestra un mensaje en tu app antes de iniciar el sistema. página de bloqueo de pantalla. Cuando se reanude la app, llama DevicePolicyManager.getPasswordComplexity() de nuevo. Si aún se requiere un bloqueo de pantalla más seguro, restringe el acceso en lugar de Solicitar varias veces a los usuarios que actualicen la configuración de seguridad.

Compatibilidad del proxy HTTP con apps de VPN

En Android 10, las apps de VPN pueden establecer un proxy HTTP para su conexión de VPN. Para agregar un proxy HTTP, una app de VPN debe configurar una una instancia de ProxyInfo con un host y un puerto, antes de llamar VpnService.Builder.setHttpProxy() El sistema y muchas bibliotecas de redes usan este parámetro de configuración del proxy, no fuerza a las apps a usar solicitudes HTTP mediante el proxy.

Para ver código de muestra que muestra cómo configurar un proxy HTTP, consulta la ToyVPN app de ejemplo.

Modos de servicio VPN

Las apps de VPN pueden detectar si el servicio está en ejecución gracias al estado siempre activo VPN y si el bloqueo el modo de seguridad está activo. Nuevos métodos que se agregaron en Android 10 pueden ayudarte a ajustar tu interfaz de usuario. Por ejemplo, podría inhabilitar el botón para desconectar cuando la VPN siempre activada controla el ciclo de vida de tu servicio.

Las apps de VPN pueden llamar a la siguiente VpnService: después de conectarse al servicio y establecer la interfaz local:

  • isAlwaysOn() a averiguar si el sistema inició el servicio gracias a la VPN siempre activada
  • isLockdownEnabled() para saber si el sistema está bloqueando conexiones que no usan la VPN

El estado siempre activo no cambia mientras tu servicio esté en ejecución, pero el estado del modo de bloqueo puede cambiar.

Mejoras de KeyChain

Android 10 introduce varias mejoras relacionadas con la API de KeyChain.

Cuando una app llama a KeyChain.choosePrivateKeyAlias(), Android 10 y versiones posteriores Los dispositivos filtran la lista de certificados que un usuario puede elegir según el de entidades emisoras y los algoritmos de clave especificados en la llamada.

Por ejemplo, cuando un servidor TLS envía una solicitud de certificado como parte de un protocolo de enlace TLS y el navegador llama KeyChain.choosePrivateKeyAlias(), solo el mensaje de selección de certificado incluye opciones que coinciden con el parámetro de las entidades emisoras. Si no hay opciones de concordancia disponibles o no hay certificados instalados en el dispositivo, el el mensaje de selección no se mostrará al usuario.

Además, KeyChain ya no requiere que un dispositivo tenga un bloqueo de pantalla para poder usar claves o certificados de la AC importado.