Android Enterprise 的 Device Trust - 可用的信號

Android Enterprise 的裝置信任功能會在 Device 上提供一組裝置狀態信號,授權應用程式 (包括許可清單中的應用程式和獲派 COMPANION_APP 角色的應用程式,請參閱「管理應用程式角色」和「政策設定」) 可存取這些信號,計算裝置的信任分數。

Device 及其巢狀模型類別上的每個信號欄位都包含對應的 get*Metadata() 方法,會傳回 Metadata,用於回報擷取信號時遇到的任何 Metadata.DataIssue (例如缺少資訊清單權限)。

如要瞭解如何將 Android Management API SDK 整合至應用程式,請參閱「Android Enterprise 的 Device Trust - 整合指南」。

信號
OS 版本
Device#getSoftwareInfo() 會傳回 SoftwareInfo 物件,其中包含 OS 版本詳細資料 (舊版 OS 通常有較多安全漏洞):
Android Device Policy 版本
SoftwareInfo#getAndroidDevicePolicyVersionCode() 和 SoftwareInfo#getAndroidDevicePolicyVersionName() 會傳回裝置上 Android Device Policy 應用程式的版本代碼和使用者可見的版本名稱。
裝置是否有待處理的 OTA
SoftwareInfo#getSystemUpdateInfo() 會傳回 SoftwareInfo.SystemUpdateInfo,指出裝置是否有待處理的 OS 更新 (代表裝置是否容易受到漏洞攻擊):
裝置安全性修補程式等級
SoftwareInfo#getDeviceSecurityPatchInfos() 會針對裝置目前的安全性修補程式等級,傳回 SoftwareInfo.SecurityPatchInfo 物件清單 (getComponent() 和 getSecurityPatchLevel() 則會傳回 SecurityPatchLevel 物件清單),涵蓋可更新的 SecurityPatchComponent 類型:
發布的安全性修補程式等級
SoftwareInfo#getPublishedSecurityPatchInfos() 會針對可更新的 SecurityPatchComponent 類型,傳回目前已發布安全性修補程式等級的 SoftwareInfo.SecurityPatchInfo 物件清單 (getComponent() 和 getSecurityPatchLevel() 則會傳回 SecurityPatchLevel 物件清單):
重要應用程式詳細資料
Device#getApplicationReports() 會將所有已安裝應用程式的詳細資料,傳回給擴充性應用程式和呼叫應用程式,這些應用程式在 AMAPI 管理的裝置上具有 COMPANION_APP 角色 (請參閱「管理應用程式角色」和「政策設定」;在工作資料夾中呼叫時,報表僅限於工作資料夾中安裝的應用程式)。對於所有其他呼叫端 (例如許可清單中的應用程式),Device#getApplicationReports() 只會傳回下列重要應用程式的詳細資料:
  • com.android.chrome
  • com.google.android.gms
  • com.google.android.apps.work.clouddpc
  • com.android.vending
  • 裝置目前的 WebView 套件 (例如 com.google.android.webview)
詳細資料會以 ApplicationReport 物件清單的形式傳回,其中包含:
裝置硬體資訊
Device#getHardwareInfo() 會傳回 HardwareInfo 物件,其中包含:
螢幕鎖定複雜度
Device#getDeviceSettings() 提供 DeviceSettings#getScreenLockComplexity(),傳回 DeviceSettings.ScreenLockComplexity 值,指出目前使用者或設定檔的螢幕鎖定複雜程度。
管理狀態 (和管理應用程式)
傳回的資訊取決於應用程式執行的設定檔。詳情請參閱管理狀態表。
磁碟加密
DeviceSettings#getEncryptionStatus() 會傳回 DeviceSettings.EncryptionStatus 值,指出裝置的儲存空間是否已加密。
存取網路狀態 (網路狀態和 Wi-Fi 狀態)
Device#getNetworkInfo() 會傳回 NetworkInfo 物件,而 NetworkInfo#getNetworkParams() 則會傳回 NetworkInfo.NetworkParams 物件清單,其中包含裝置上所有使用中網路的詳細資料:
Google Play 安全防護 VerifyApps
是否啟用 DNS over TLS
NetworkParams#getPrivateDnsState() 會傳回 PrivateDnsState 值,指出網路上是否使用私人 DNS。
WebView 套件
SoftwareInfo#getWebviewPackage() 會傳回目前 WebView 套件的名稱。
管理服務供應商的人類可讀商家名稱
在 AMAPI 代管的裝置上,Device#getManagementProviderInfo() 會傳回 ManagementProviderInfo 物件,其 getBusinessName() 方法會提供管理服務供應商的人類可讀商家名稱。如果裝置不受管理,或由自訂 DPC 管理,則不會設定這個欄位。

管理狀態

管理信號傳回的值取決於應用程式執行的設定檔。如要從個人資料夾、非受管裝置或自訂 DPC 管理的裝置存取信號,應用程式必須在許可清單中。在 AMAPI 管理的全代管裝置上,或在工作資料夾中,獲派 COMPANION_APP 角色的應用程式即使不在許可清單中,也能存取這些信號 (在工作資料夾中呼叫時,僅限來自工作資料夾的信號)。

管理狀態 從個人資料夾呼叫時的信號 從工作資料夾內呼叫時的信號
非受管理裝置 ownership: PERSONALLY_OWNED
managementMode: UNMANAGED
managementAppPackageName: N/A
workProfileState:
N/A
個人裝置 (BYOD) 上的工作資料夾 ownership: PERSONALLY_OWNED
managementMode: UNMANAGED
managementAppPackageName: N/A
workProfileState:
ownership: PERSONALLY_OWNED
managementMode: PROFILE_OWNER
managementAppPackageName: Package name of the Profile Owner application
workProfileState:
公司裝置上的工作資料夾 ownership: COMPANY_OWNED
managementMode: UNMANAGED
managementAppPackageName:N/A
workProfileState:
ownership: COMPANY_OWNED
managementMode: PROFILE_OWNER
managementAppPackageName: Package name of the Profile Owner application
workProfileState:
全代管裝置 N/A ownership: COMPANY_OWNED
managementMode: DEVICE_OWNER
managementAppPackageName: Package name of the Device Owner application
workProfileState: