Android proporciona una variedad de indicadores de dispositivos que los administradores pueden usar para determinar la postura de seguridad de un dispositivo. En un modelo de seguridad de confianza cero, estos indicadores se usan para evaluar si un dispositivo debería tener acceso información corporativa.
Función | Descripción | Dispositivos completamente administrados | Perfil de trabajo en dispositivos empresariales | Perfil de trabajo en dispositivos personales (BYOD) | Dispositivos no administrados |
---|---|---|---|---|---|
Reproducir API de Integrity | Una confianza
corredor puede recuperar los siguientes indicadores:
|
Sí | Sí | Sí | Sí |
Seguridad Hardware presente / Certificación de claves | Un agente de confianza puede verificar que se generaron sus credenciales de PKI y se almacenan en hardware seguro | Sí | Sí | Sí | Sí |
Certificación de propiedades del dispositivo | Como parte de la certificación de claves, las propiedades del dispositivo se pueden incluir del registro de certificación | Sí | Sí | Sí | Sí |
Dispositivo Nivel del parche de seguridad | Un agente de confianza puede validar el nivel de parche de seguridad del SO | Sí | Sí | Sí | Sí |
Hace el dispositivo tiene actualizaciones inalámbricas pendientes | Un agente de confianza puede verificar si hay una actualización pendiente del SO del dispositivo disponible. | Sí | Sí | Sí | N/A |
Nivel del parche de seguridad principal | Un agente de confianza puede leer el nivel de parche de seguridad del tren de línea principal instalado. | Sí | Sí | Sí | Sí |
Inscripción ID específico | Un agente de confianza puede acceder a un ID de dispositivo único y específico . Este ID sobrevive a la recreación del perfil de trabajo y al restablecimiento de la configuración de fábrica del dispositivo. | Sí | Sí | Sí | N/A |
Management State (y administración de la app) | Un agente de confianza puede usar esto para determinar si un dispositivo está administrado | Sí | Sí | Sí | N/A |
Disco encriptación | Un agente de confianza puede verificar si el dispositivo está encriptado (si se necesita compatibilidad con Android 8). | Sí | Sí | Sí | Sí |
Versión del SO | Un agente de confianza puede verificar la versión del SO del dispositivo y confirmar que la supera una versión determinada | Sí | Sí | Sí | Sí |
Accede al estado de la red (estado de la red y estado de Wi-Fi) | Un agente de confianza puede obtener información sobre el estado de la red activa (datos móviles y Wi-Fi). | Sí | Sí | Sí | Sí |
Acceder al estado de Wi-Fi (Android 11 y versiones anteriores, Android 12 y las versiones posteriores admiten una devolución de llamada o un enfoque a pedido) | Un agente de confianza puede obtener información sobre la red Wi-Fi activa | Sí | Sí | Sí | Sí |
Configuración de proxy | Un agente de confianza puede obtener información sobre la configuración predeterminada actual del proxy HTTP. | Sí | Sí | Sí | Sí |
Pantalla control de calidad de la cerradura | Un agente de confianza puede asegurarse de que un dispositivo tenga un bloqueo de pantalla de determinada calidad antes de otorgar el acceso | Sí | Sí | Sí | Sí |
Desarrollador opciones habilitadas | Un agente de confianza puede identificar un dispositivo como que tiene una superficie de ataque más amplia cuando están habilitadas las opciones para desarrolladores. | Sí | Sí | Sí | Sí |
¿Está habilitado el DNS a través de TLS? | Un agente de confianza puede aprovechar esto para asegurarse de que el DNS privado está habilitado el modo | Sí | Sí | Sí | Sí |
SafetyNet Navegación segura | Un agente de confianza puede determinar si Google clasificó una URL específica como una amenaza conocida. | Sí | Sí | Sí | Sí |
Uso externo montado en medios | Se puede notificar a un agente de confianza cuando se activa un almacenamiento externo. | Sí | Sí | Sí | Sí |
UsageStatsManager | Un agente de confianza puede estudiar los patrones de uso de apps individuales. | Sí | Sí | Sí | Sí1 |
Seguridad registro | Un agente de confianza puede aprovechar estos datos como parte de su para garantizar el cumplimiento y crear una huella digital basada en el comportamiento | Sí | Sí2 | Sí2 | N/A |
Red registro | Un agente de confianza puede aprovechar estos datos como parte de su motor contextual para garantizar el cumplimiento y crear una huella digital basada en el comportamiento. | Sí | Sí2 | Sí2 | N/A |
NetworkStatsManager | Un agente de confianza puede consultar el uso de red de una app en un período determinado intervalo | Sí | Sí | Sí2 | Sí1 |
Paquete Visibilidad (Enumera todas las apps en el dispositivo) | Un agente de confianza puede consultar qué apps están instaladas en el dispositivo. | Sí | Sí3 | Sí3 | Sí |
Cómo leer el estado del teléfono | Un agente de confianza puede obtener información de redes móviles, el estado de cualquier llamadas y una lista de PhoneAccount registrados en el dispositivo | Sí | Sí | Sí | Sí |
Cuándo se reinició el dispositivo por última vez | Un agente de confianza puede obtener el tiempo de actividad del sistema | Sí | Sí | Sí | Sí |
Obtener cuentas | Un agente de confianza puede aprovechar esto para acceder a la lista de cuentas en el servicio de cuentas. | Sí | Sí3 | Sí3 | Sí1 |
Cómo supervisar los cambios significativos en el nivel de batería | Un agente de confianza puede supervisar cambios significativos en el nivel de batería. | Sí | Sí | Sí | Sí |
Ubicación (Fino, grueso, etcétera) | Un agente de confianza puede acceder a la ubicación física del dispositivo | Sí | Sí | Sí1 | Sí1 |
1 Con el consentimiento del usuario
2 Solo en el perfil de trabajo
3 Acceso limitado a la información del perfil de trabajo
Cómo recuperar la versión de Mainline
Un agente de confianza puede acceder a PackageInfo para el módulo com.google.android.modulemetadata
y recuperar desde allí el versionName
:
private fun mainlineVersion(context: Context): String? {
val moduleProvider = "com.google.android.modulemetadata"
return try {
val pm = context.packageManager
val packageInfo = pm.getPackageInfo(moduleProvider, 0)
packageInfo.versionName
} catch (e: PackageManager.NameNotFoundException) {
null
}
}
Puedes analizar la cadena que se muestra en un objeto Date
con el
Clase SimpleDateFormat
:
private val VERSION_NAME_DATE_PATTERNS = Arrays.asList(
"yyyy-MM-dd",
"yyyy-MM"
)
private fun parseDateFromVersionName(text: String): Date? {
for (pattern in VERSION_NAME_DATE_PATTERNS) {
try {
val simpleDateFormat = SimpleDateFormat(
pattern,
Locale.getDefault()
)
simpleDateFormat.timeZone = TimeZone.getDefault()
return simpleDateFormat.parse(text)
} catch (e: ParseException) {
// ignore and try next pattern
}
}
return null
}
Recuerda que, para Android 11 y versiones posteriores, debes agregar una declaración de consulta en el archivo AndroidManifest.xml
para satisfacer la visibilidad de paquetes de Android:
<manifest package="com.example.game"> <queries> <package android:name="com.google.android.modulemetadata" /> </queries> ... </manifest>
Cómo recuperar el estado de administración
Un agente de confianza puede usar estos métodos para verificar si un dispositivo está bajo administración y qué modo de administración está activo.
Cómo verificar la administración de dispositivos
Usa getActiveAdmins() para comprobar si se administra un dispositivo. Si esta
El método muestra null
, significa que el dispositivo no está administrado.
Cómo verificar si un dispositivo está completamente administrado
Usa isDeviceOwnerApp()
para verificar si el dispositivo está completamente administrado.
Cómo verificar si hay un perfil de trabajo en un dispositivo de la empresa
Usa isOrganizationOwnedDeviceWithManagedProfile()
para verificar si un dispositivo
está usando un modo de administración del perfil de trabajo para dispositivos empresariales
Cómo verificar el perfil de trabajo en un dispositivo de propiedad personal
Usa isProfileOwnerApp()
para verificar si una app se ejecuta dentro de un entorno de trabajo.
y verifica que isOrganizationOwnedDeviceWithManagedProfile()
devuelva
false