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