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:
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
: Agrégalo al paquete existente o crea uno nuevo. Este paquete se envía como un intención adicional cuando tu DPC inicia sus pantallas de cumplimiento de las políticas.EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE
: Solo especifica una cuenta para migrar si agregas una cuenta de trabajo como parte del trabajo. aprovisionamiento de perfiles.EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS
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:
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
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:
setGlobalPrivateDnsModeOpportunistic()
para que el dispositivo use un DNS privado cuando el sistema detecte un servidor de nombres compatiblesetGlobalPrivateDnsModeSpecifiedHost()
para especificar el nombre de host de un servidor de nombres compatible con RFC7858 en el argumentoprivateDnsHost
.
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:
DELEGATION_NETWORK_LOGGING
para delegar el registro de actividad de redDELEGATION_CERT_SELECTION
para delegar la selección de certificados
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:
- Agrega una subclase de
DelegatedAdminReceiver
a la app delegada. - 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
oACTION_CHOOSE_PRIVATE_KEY_ALIAS
. - 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:
USES_POLICY_DISABLE_CAMERA
USES_POLICY_DISABLE_KEYGUARD_FEATURES
USES_POLICY_EXPIRE_PASSWORD
USES_POLICY_LIMIT_PASSWORD
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:
- Agrega el nuevo permiso
REQUEST_PASSWORD_COMPLEXITY
a tu manifiesto de la app. - Llama a
DevicePolicyManager.getPasswordComplexity()
. La complejidad se divide en cuatro categorías:
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 activadaisLockdownEnabled()
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.