Android มีสัญญาณของอุปกรณ์ที่หลากหลายที่ผู้ดูแลระบบสามารถใช้เพื่อระบุสถานะความปลอดภัยของอุปกรณ์ ในโมเดลการรักษาความปลอดภัยแบบ Zero Trust ระบบจะใช้สัญญาณเหล่านี้เพื่อประเมินว่าควรอนุญาตให้อุปกรณ์เข้าถึงข้อมูลของบริษัทหรือไม่
| ฟีเจอร์ | คำอธิบาย | อุปกรณ์ที่มีการจัดการครบวงจร | โปรไฟล์งานในอุปกรณ์ของบริษัท | โปรไฟล์งานในอุปกรณ์ส่วนตัว (BYOD) | อุปกรณ์ที่ไม่มีการจัดการ |
|---|---|---|---|---|---|
| Play Integrity API | โบรกเกอร์ความน่าเชื่อถือจะดึงข้อมูลสัญญาณต่อไปนี้ได้
|
ใช่ | ได้ | ได้ | ใช่ |
| ปลอดภัย มีฮาร์ดแวร์อยู่ / เอกสารรับรองคีย์ | โบรกเกอร์ความน่าเชื่อถือสามารถยืนยันได้ว่าข้อมูลเข้าสู่ระบบ PKI ของตนสร้างขึ้นและจัดเก็บไว้ในฮาร์ดแวร์ที่ปลอดภัย | ใช่ | ได้ | ได้ | ใช่ |
| การรับรองอุปกรณ์ พร็อพเพอร์ตี้ | พร็อพเพอร์ตี้อุปกรณ์สามารถรวมเป็นส่วนหนึ่งของระเบียนการรับรองได้ในฐานะส่วนหนึ่งของเอกสารรับรองคีย์ | ใช่ | ได้ | ได้ | ใช่ |
| ระดับแพตช์ความปลอดภัยของอุปกรณ์ | โบรกเกอร์ความน่าเชื่อถือสามารถตรวจสอบระดับแพตช์ความปลอดภัยของระบบปฏิบัติการได้ | ใช่ | ได้ | ได้ | ใช่ |
| อุปกรณ์มี OTA ที่รอดำเนินการอยู่ไหม | โบรกเกอร์ความน่าเชื่อถือจะตรวจสอบได้ว่าอุปกรณ์มีการอัปเดตระบบปฏิบัติการที่รอดำเนินการหรือไม่ | ใช่ | ได้ | ใช่ | ไม่มี |
| ระดับแพตช์ความปลอดภัยหลัก | โบรกเกอร์ความน่าเชื่อถือจะอ่านระดับแพตช์ความปลอดภัยของรถไฟสายหลักที่ติดตั้งได้ | ใช่ | ได้ | ได้ | ใช่ |
| การลงทะเบียน รหัสที่เฉพาะเจาะจง | โบรกเกอร์ความน่าเชื่อถือจะเข้าถึงรหัสอุปกรณ์ที่ไม่ซ้ำกันเฉพาะสำหรับองค์กรนั้นได้ รหัสนี้จะยังคงอยู่แม้จะมีการสร้างโปรไฟล์งานอีกครั้งและรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น | ใช่ | ได้ | ใช่ | ไม่มี |
| สถานะการจัดการ (และแอปการจัดการ) | โบรกเกอร์ความน่าเชื่อถือสามารถใช้ข้อมูลนี้เพื่อระบุว่าอุปกรณ์มีการจัดการหรือไม่ | ใช่ | ได้ | ใช่ | ไม่มี |
| การเข้ารหัสดิสก์ | โบรกเกอร์ความน่าเชื่อถือจะตรวจสอบได้ว่าอุปกรณ์เข้ารหัสหรือไม่ (หากต้องการการรองรับ Android 8) | ใช่ | ได้ | ได้ | ใช่ |
| เวอร์ชันของระบบปฏิบัติการ | โบรกเกอร์ความน่าเชื่อถือจะตรวจสอบเวอร์ชันระบบปฏิบัติการของอุปกรณ์และยืนยันว่าเวอร์ชันดังกล่าวสูงกว่าเวอร์ชันที่กำหนด | ใช่ | ได้ | ได้ | ใช่ |
| เข้าถึง สถานะเครือข่าย (สถานะเครือข่ายและสถานะ Wi-Fi) | โบรกเกอร์ความน่าเชื่อถือสามารถดูข้อมูลเกี่ยวกับสถานะเครือข่ายที่ใช้งานอยู่ (เครือข่ายมือถือและ Wi-Fi) | ใช่ | ได้ | ได้ | ใช่ |
| เข้าถึงสถานะ Wi-Fi (Android 11 และต่ำกว่า, Android 12 ขึ้นไปรองรับทั้งการเรียกกลับหรือแบบออนดีมานด์) | โบรกเกอร์ความน่าเชื่อถือจะดูข้อมูลเกี่ยวกับเครือข่าย Wi-Fi ที่ใช้งานอยู่ได้ | ใช่ | ได้ | ได้ | ใช่ |
| การตั้งค่าพร็อกซี | โบรกเกอร์ความน่าเชื่อถือสามารถดูข้อมูลเกี่ยวกับการตั้งค่าพร็อกซี HTTP เริ่มต้นปัจจุบัน | ใช่ | ได้ | ได้ | ใช่ |
| การตรวจสอบคุณภาพการล็อกหน้าจอ | โบรกเกอร์ความน่าเชื่อถือสามารถตรวจสอบได้ว่าอุปกรณ์ได้รับการกำหนดค่าการล็อกหน้าจอที่มีคุณภาพตามเกณฑ์ก่อนให้สิทธิ์เข้าถึง | ใช่ | ได้ | ได้ | ใช่ |
| เปิดใช้ตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ | เมื่อเปิดใช้ตัวเลือกของนักพัฒนาซอฟต์แวร์ โบรกเกอร์ความน่าเชื่อถือจะระบุได้ว่าอุปกรณ์มีแพลตฟอร์มการโจมตีที่กว้างขึ้น | ใช่ | ได้ | ได้ | ใช่ |
| เปิดใช้ DNS over TLS หรือไม่ | โบรกเกอร์ความน่าเชื่อถือสามารถใช้ข้อมูลนี้เพื่อตรวจสอบว่าได้เปิดใช้โหมด DNS ส่วนตัวแล้ว | ใช่ | ได้ | ได้ | ใช่ |
| SafetyNet Google Safe Browsing | โบรกเกอร์ความน่าเชื่อถือจะระบุว่า Google จัดประเภท URL หนึ่งๆ เป็นภัยคุกคามซึ่งเป็นที่รู้จักหรือไม่ | ใช่ | ได้ | ได้ | ใช่ |
| ภายนอก มีการติดตั้งสื่อ | โบรกเกอร์ความน่าเชื่อถือจะได้รับการแจ้งเตือนเมื่อมีการต่อเชื่อมพื้นที่เก็บข้อมูลภายนอก | ใช่ | ได้ | ได้ | ใช่ |
| UsageStatsManager | โบรกเกอร์ความน่าเชื่อถือจะศึกษารูปแบบการใช้งานของแต่ละแอปได้ | ใช่ | ได้ | ใช่ | ได้1 |
| การบันทึก | โบรกเกอร์ความน่าเชื่อถือสามารถใช้ข้อมูลนี้เป็นส่วนหนึ่งของเครื่องมือตามบริบทเพื่อให้มั่นใจว่าเป็นไปตามข้อกําหนดและสร้างลายนิ้วมือตามพฤติกรรม | ใช่ | ได้2 | ได้2 | ไม่มี |
| การบันทึก | โบรกเกอร์ความน่าเชื่อถือสามารถใช้ข้อมูลนี้เป็นส่วนหนึ่งของเครื่องมือตามบริบทเพื่อให้มั่นใจว่าเป็นไปตามข้อกําหนดและสร้างลายนิ้วมือตามพฤติกรรม | ใช่ | ได้2 | ได้2 | ไม่มี |
| NetworkStatsManager | โบรกเกอร์ความน่าเชื่อถือจะค้นหาการใช้งานเครือข่ายของแอปได้ภายในช่วงเวลาหนึ่งๆ | ใช่ | ใช่ | ได้2 | ได้1 |
| แพ็กเกจ ระดับการเข้าถึง (แสดงรายการแอปทั้งหมดในอุปกรณ์) | โบรกเกอร์ความน่าเชื่อถือจะค้นหาแอปที่ติดตั้งในอุปกรณ์ได้ | ใช่ | ได้3 | ได้3 | ใช่ |
| อ่าน สถานะโทรศัพท์ | โบรกเกอร์ความน่าเชื่อถือจะดูข้อมูลเครือข่ายมือถือ สถานะการโทรที่ดำเนินอยู่ และรายการ PhoneAccount ที่ลงทะเบียนในอุปกรณ์ได้ | ใช่ | ได้ | ได้ | ใช่ |
| เวลาที่อุปกรณ์รีบูตครั้งล่าสุด | โบรกเกอร์ความน่าเชื่อถือจะดูเวลาทำงานของระบบได้ | ใช่ | ได้ | ได้ | ใช่ |
| รับบัญชี | โบรกเกอร์ความน่าเชื่อถือสามารถใช้ข้อมูลนี้เพื่อเข้าถึงรายชื่อบัญชีในบริการบัญชี | ใช่ | ได้3 | ได้3 | ได้1 |
| ตรวจสอบการเปลี่ยนแปลงที่สำคัญของระดับแบตเตอรี่ | โบรกเกอร์ความน่าเชื่อถือจะตรวจสอบการเปลี่ยนแปลงที่สำคัญของระดับแบตเตอรี่ได้ | ใช่ | ได้ | ได้ | ใช่ |
| ตำแหน่ง (ละเอียด หยาบ ฯลฯ) | โบรกเกอร์ความน่าเชื่อถือเข้าถึงตำแหน่งทางกายภาพของอุปกรณ์ได้ | ใช่ | ใช่ | ได้1 | ได้1 |
1 เมื่อได้รับความยินยอมจากผู้ใช้
2 โปรไฟล์งานเท่านั้น
3 การเข้าถึงที่จำกัดไว้เฉพาะข้อมูลโปรไฟล์งาน
เรียกข้อมูลเวอร์ชันเมนไลน์
โบรกเกอร์ความน่าเชื่อถือสามารถเข้าถึง PackageInfo ของข้อบังคับcom.google.android.modulemetadata และดึงข้อมูลต่อไปนี้จากข้อบังคับ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
}
}
คุณสามารถแยกวิเคราะห์สตริงที่แสดงผลเป็นออบเจ็กต์ Date โดยใช้คลาส 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
}
โปรดทราบว่าสำหรับ Android 11 ขึ้นไป คุณต้องเพิ่มประกาศการค้นหาในไฟล์ AndroidManifest.xml เพื่อให้เป็นไปตามระดับการเข้าถึงแพ็กเกจของ Android ดังนี้
<manifest package="com.example.game"> <queries> <package android:name="com.google.android.modulemetadata" /> </queries> ... </manifest>
เรียกดูสถานะการจัดการ
โบรกเกอร์ความน่าเชื่อถือสามารถใช้วิธีการเหล่านี้เพื่อยืนยันว่าอุปกรณ์อยู่ในโหมดการจัดการหรือไม่ และโหมดการจัดการใดที่ใช้งานอยู่
ตรวจสอบการจัดการอุปกรณ์
ใช้ getActiveAdmins() เพื่อตรวจสอบว่าอุปกรณ์มีการจัดการหรือไม่ หากเมธอดนี้แสดงผลเป็น null แสดงว่าอุปกรณ์ไม่มีการจัดการ
ตรวจสอบอุปกรณ์ที่มีการจัดการแบบเต็มรูปแบบ
ใช้ isDeviceOwnerApp() เพื่อตรวจสอบว่าอุปกรณ์มีการจัดการครบวงจรแล้วหรือยัง
ตรวจสอบโปรไฟล์งานในอุปกรณ์ของบริษัท
ใช้ isOrganizationOwnedDeviceWithManagedProfile() เพื่อตรวจสอบว่าอุปกรณ์ใช้โหมดการจัดการโปรไฟล์งานสำหรับอุปกรณ์ของบริษัทหรือไม่
ตรวจสอบโปรไฟล์งานในอุปกรณ์ส่วนตัว
ใช้ isProfileOwnerApp() เพื่อตรวจสอบว่าแอปทำงานอยู่ในโปรไฟล์งานหรือไม่ และยืนยันว่า isOrganizationOwnedDeviceWithManagedProfile() แสดงผลเป็น false