Sinyal zero-trust

Android menyediakan berbagai sinyal perangkat yang dapat digunakan administrator untuk menentukan postur keamanan perangkat. Dalam model keamanan zero-trust, sinyal ini digunakan untuk menilai apakah perangkat harus diizinkan untuk mengakses informasi perusahaan.

Fitur Deskripsi Perangkat Terkelola Sepenuhnya Profil kerja di perangkat milik perusahaan Profil kerja di perangkat milik pribadi (BYOD) Perangkat tidak terkelola
Play Integrity API Trust broker dapat mengambil sinyal berikut:
  • Integritas perangkat
  • Integritas aplikasi
  • Detail lisensi Play
  • Detail lingkungan termasuk verdict Play Protect baru
  • Ya Ya Ya Ya
    Presentasi Hardware yang Aman / Pengesahan Kunci Perantara tepercaya dapat memverifikasi bahwa kredensial IKP mereka dibuat dan disimpan dalam hardware yang aman Ya Ya Ya Ya
    Pengesahan Properti Perangkat Sebagai bagian dari pengesahan kunci, properti perangkat dapat disertakan sebagai bagian dari data pengesahan Ya Ya Ya Ya
    Tingkat Patch Keamanan Perangkat Perantara tepercaya dapat memvalidasi OS Security Patch Level Ya Ya Ya Ya
    Apakah perangkat memiliki OTA yang tertunda Perantara tepercaya dapat memeriksa apakah ada update OS perangkat yang tertunda yang tersedia Ya Ya Ya T/A
    Tingkat Patch Keamanan Utama Perantara tepercaya dapat membaca level patch keamanan untuk kereta utama yang diinstal Ya Ya Ya Ya
    ID Khusus Pendaftaran Perantara tepercaya dapat mengakses ID perangkat unik yang khusus untuk perusahaan tersebut. ID ini bertahan dari pembuatan ulang profil kerja dan reset ke setelan pabrik perangkat Ya Ya Ya T/A
    Status Pengelolaan (dan mengelola aplikasi) Perantara tepercaya dapat menggunakan ini untuk menentukan apakah perangkat dikelola Ya Ya Ya T/A
    Enkripsi disk Perantara tepercaya dapat memeriksa apakah perangkat dienkripsi (jika dukungan Android 8 diperlukan) Ya Ya Ya Ya
    Versi OS Perantara tepercaya dapat memeriksa versi OS perangkat dan mengonfirmasi bahwa versi OS tersebut melebihi versi tertentu Ya Ya Ya Ya
    Status Jaringan (Status jaringan dan status Wi-Fi) Perantara tepercaya dapat memperoleh informasi tentang status jaringan aktif (seluler dan Wi-Fi) Ya Ya Ya Ya
    Mengakses Status Wi-Fi (Android 11 dan yang lebih lama, Android 12, dan yang lebih baru mendukung pendekatan callback atau on-demand) Perantara tepercaya dapat memperoleh informasi tentang jaringan Wi-Fi yang aktif Ya Ya Ya Ya
    Setelan Proxy Perantara tepercaya dapat memperoleh informasi tentang setelan proxy HTTP default saat ini. Ya Ya Ya Ya
    Pemeriksaan kualitas kunci layar Perantara tepercaya dapat memastikan perangkat memiliki kunci layar kualitas tertentu yang telah dikonfigurasi sebelum memberikan akses Ya Ya Ya Ya
    Opsi developer diaktifkan Perantara tepercaya dapat mengidentifikasi perangkat memiliki permukaan serangan yang lebih luas jika opsi developer diaktifkan Ya Ya Ya Ya
    Apakah DNS melalui TLS diaktifkan Perantara tepercaya dapat memanfaatkan ini untuk memastikan bahwa mode DNS Pribadi diaktifkan Ya Ya Ya Ya
    SafeNet Safe Browsing Perantara tepercaya dapat menentukan apakah URL tertentu telah diklasifikasikan oleh Google sebagai ancaman yang diketahui atau tidak. Ya Ya Ya Ya
    Dipasang Media Eksternal Perantara tepercaya dapat diberi tahu saat penyimpanan eksternal dipasang Ya Ya Ya Ya
    UsageStatsManager Perantara tepercaya dapat mempelajari pola penggunaan setiap aplikasi Ya Ya Ya Ya1
    Logging keamanan Perantara tepercaya dapat memanfaatkan data ini sebagai bagian dari mesin kontekstual mereka untuk memastikan kepatuhan dan membuat sidik jari berbasis perilaku Ya Ya2 Ya2 T/A
    Logging jaringan Perantara tepercaya dapat memanfaatkan data ini sebagai bagian dari mesin kontekstual mereka untuk memastikan kepatuhan dan membuat sidik jari berbasis perilaku Ya Ya2 Ya2 T/A
    NetworkStatsManager Perantara tepercaya dapat mengkueri penggunaan jaringan aplikasi dalam interval waktu tertentu Ya Ya Ya2 Ya1
    Visibilitas Paket (Mencantumkan semua aplikasi di perangkat) Perantara tepercaya dapat mengkueri aplikasi apa yang diinstal di perangkat Ya Ya3 Ya3 Ya
    Membaca Status Telepon Perantara tepercaya bisa mendapatkan info jaringan seluler, status panggilan yang sedang berlangsung, dan daftar PhoneAccount yang terdaftar di perangkat Ya Ya Ya Ya
    Kapan perangkat terakhir kali dimulai ulang Perantara Kepercayaan bisa mendapatkan waktu beroperasi sistem Ya Ya Ya Ya
    Dapatkan Akun Perantara tepercaya dapat memanfaatkan ini untuk mengakses daftar akun di Layanan Akun Ya Ya3 Ya3 Ya1
    Memantau perubahan level baterai yang signifikan Perantara tepercaya dapat memantau perubahan signifikan pada level baterai Ya Ya Ya Ya
    Lokasi (Halus, Kasar, dll...) Perantara tepercaya dapat mengakses lokasi fisik perangkat Ya Ya Ya1 Ya1

    1 Dengan izin pengguna

    2 Khusus profil kerja

    3 Akses terbatas untuk informasi profil kerja

    Trust broker dapat mengakses PackageInfo untuk modul com.google.android.modulemetadata dan mengambil versionName dari sana:

    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
            }
    }
    

    Anda dapat mengurai string yang ditampilkan menjadi objek Date menggunakan class 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
    }
    

    Perlu diingat bahwa untuk Android 11 dan yang lebih baru, Anda harus menambahkan deklarasi kueri dalam file AndroidManifest.xml untuk memenuhi visibilitas paket Android:

    <manifest package="com.example.game">
        <queries>
            <package android:name="com.google.android.modulemetadata" />
        </queries>
        ...
    </manifest>
    

    Perantara tepercaya dapat menggunakan metode ini untuk memverifikasi apakah perangkat dalam mode pengelolaan dan mode pengelolaan yang aktif.

    Memeriksa pengelolaan perangkat

    Gunakan getActiveAdmins() untuk memeriksa apakah perangkat dalam pengelolaan. Jika metode ini menampilkan null, perangkat tidak akan dikelola.

    Periksa perangkat terkelola sepenuhnya

    Gunakan isDeviceOwnerApp() untuk memeriksa apakah perangkat terkelola sepenuhnya.

    Memeriksa profil kerja di perangkat milik perusahaan

    Gunakan isOrganizationOwnedDeviceWithManagedProfile() untuk memeriksa apakah perangkat menggunakan mode pengelolaan profil kerja untuk perangkat milik perusahaan

    Memeriksa profil kerja di perangkat milik pribadi

    Gunakan isProfileOwnerApp() untuk memeriksa apakah perangkat memiliki profil kerja dan memverifikasi bahwa isOrganizationOwnedDeviceWithManagedProfile() menampilkan false.