Yang baru untuk perusahaan di Android 10

Halaman ini menyediakan ringkasan tentang API perusahaan, fitur, dan perubahan perilaku yang diperkenalkan di Android 10.

Profil kerja untuk perangkat milik perusahaan

Android 10 memperkenalkan fitur penyediaan dan pengesahan baru untuk perangkat milik perusahaan yang hanya memerlukan profil kerja.

Fitur penyediaan yang lebih baik untuk profil kerja

Anda dapat menyediakan profil kerja di perangkat Android 10 dan yang lebih baru yang terdaftar menggunakan Kode QR atau Zero-touch. Selama penyediaan perangkat milik perusahaan, tambahan intent baru memungkinkan aplikasi pengontrol kebijakan perangkat (DPC) untuk memulai profil kerja atau terkelola sepenuhnya penyiapan. Setelah profil kerja dibuat atau pengelolaan penuh terbentuk, DPC harus meluncurkan layar kepatuhan kebijakan untuk menerapkan kebijakan awal.

Di file manifes DPC, deklarasikan filter intent baru untuk GET_PROVISIONING_MODE dalam aktivitas dan menambahkan BIND_DEVICE_ADMIN izin untuk mencegah aplikasi memulai aktivitas secara acak. Contoh:

<activity
    android:name=".GetProvisioningModeActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action
            android:name="android.app.action.GET_PROVISIONING_MODE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

Selama penyediaan, sistem akan meluncurkan aktivitas yang terkait dengan filter intent. Tujuan aktivitas ini adalah menetapkan mode pengelolaan (profil kerja atau terkelola sepenuhnya).

Sebaiknya ambil ekstra penyediaan sebelum menentukan ke mode pengelolaan yang sesuai untuk perangkat. Aktivitas dapat memanggil getIntent() yang akan diambil hal berikut:

DPC juga dapat membuat intent hasil baru dan menambahkan ekstra berikut:

Untuk menyetel mode pengelolaan di perangkat, panggil putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode), dengan desiredProvisioningMode adalah:

  • Profil kerja: PROVISIONING_MODE_MANAGED_PROFILE
  • Terkelola sepenuhnya: PROVISIONING_MODE_FULLY_MANAGED_DEVICE

Selesaikan profil kerja atau penyediaan terkelola sepenuhnya dengan mengirim penyediaan detail kembali ke penyiapan melalui setResult(RESULT_OK, Intent) dan tutup semua layar aktif dengan finish().

Setelah penyediaan selesai, Intent baru tersedia untuk diluncurkan oleh DPC layar kepatuhan mereka dan menerapkan pengaturan kebijakan awal. Di profil kerja perangkat, layar kepatuhan akan ditampilkan di profil kerja. DPC Anda harus memastikan layar kepatuhan ditampilkan kepada pengguna, bahkan jika pengguna kabur dalam alur pengaturan.

Di file manifes DPC, deklarasikan filter intent baru untuk ADMIN_POLICY_COMPLIANCE dalam aktivitas dan menambahkan BIND_DEVICE_ADMIN izin untuk mencegah aplikasi memulai aktivitas secara acak. Contoh:

<activity
    android:name=".PolicyComplianceActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action android:name="android.app.action.ADMIN_POLICY_COMPLIANCE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

DPC harus menggunakan Intent baru ini, bukan memproses ACTION_PROFILE_PROVISIONING_COMPLETE .

Aktivitas yang terkait dengan filter intent dapat memanggil getIntent() yang akan diambil tindakan EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE. Setelah melakukan kepatuhan terhadap kebijakan, ADMIN_POLICY_COMPLIANCE harus menampilkan setResult(RESULT_OK, Intent) dan menutup semua layar aktif dengan finish().

Perangkat yang terkelola sepenuhnya mengembalikan pengguna ke layar utama. Perangkat profil kerja meminta pengguna untuk menambahkan akun pribadi mereka sebelum mengembalikannya ke rumah layar.

Pengesahan ID perangkat profil kerja

DPC ditetapkan sebagai admin profil kerja yang disediakan menggunakan pendaftaran zero-touch bisa memperoleh ID perangkat yang disahkan oleh hardware aman, seperti IMEI atau nomor seri. Perangkat harus menyertakan perangkat keras yang aman (seperti perangkat keras execution environment (TEE) atau Elemen Pengaman (SE)) dan mendukung ID perangkat pengesahan dan pendaftaran zero-touch.

Komponen admin di profil kerja dapat memanggil DevicePolicyManager.generateKeyPair(), yang meneruskan satu atau beberapa ID_TYPE_SERIAL, ID_TYPE_IMEI, atau ID_TYPE_MEID untuk argumen idAttestationFlags.

Untuk mempelajari lebih lanjut cara mengekstraksi dan memvalidasi ID perangkat, lihat Memverifikasi penyambungan kunci yang didukung hardware dengan Pengesahan Kunci.

Penyempurnaan profil kerja

API baru tersedia untuk mendukung visibilitas kalender antar-profil dan pemblokiran penginstalan aplikasi di tingkat perangkat dari sumber tidak dikenal.

Profil kerja, sumber yang tidak dikenal di tingkat perangkat

Aplikasi yang didownload dari sumber selain Google Play (atau aplikasi tepercaya lainnya app store) disebut aplikasi dari sumber tidak dikenal. Di Android 10, admin tugas profil dapat mencegah pengguna atau profil menginstal aplikasi dari informasi yang tidak diketahui sumber di mana saja pada perangkat dengan menambahkan batasan pengguna baru DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY Namun, setelah menambahkan pembatasan ini, pengguna yang menggunakan perangkat masih dapat menginstal aplikasi menggunakan adb.

Untuk mencegah pengguna menginstal aplikasi dari sumber tidak dikenal secara tidak sengaja, kami sarankan tambahkan batasan pengguna ini karena tidak memerlukan Google Play dan layanan tambahan untuk diinstal. Jika Anda ingin mendukung versi Android yang lebih lama, Anda dapat menetapkan nilai konfigurasi terkelola untuk Google Play.

Membatasi perangkat input yang diizinkan untuk profil kerja

Saat admin profil kerja memanggil DevicePolicyManager.setPermittedInputMethods(), pengguna hanya dibatasi pada metode input yang diizinkan dalam pekerjaan mereka profil alih-alih keseluruhan perangkat, memberi pengguna kontrol penuh atas input metode lainnya pada sisi pribadi perangkat mereka.

Menghapus profil kerja diam-diam

Menambahkan WIPE_SILENTLY flag ke DevicePolicyManager.wipeData(). Jika tanda ini disetel, pengguna tidak akan diberi tahu setelah profil kerja mereka dihapus menggunakan wipeData().

Fitur baru untuk perangkat yang terkelola sepenuhnya

Android 10 memperkenalkan fitur dan API baru untuk perangkat yang terkelola sepenuhnya, termasuk update sistem manual, memperluas penyediaan kode QR dan NFC untuk menyertakan kredensial untuk jaringan Wi-Fi EAP, dan dukungan untuk DNS melalui TLS.

Penginstalan update sistem manual

Di Android 10, admin perangkat yang terkelola sepenuhnya dapat menginstal update sistem melalui file pembaruan sistem. Update sistem manual memungkinkan admin IT melakukan berikut ini:

  • Menguji update di sejumlah kecil perangkat sebelum menginstalnya secara luas.
  • Menghindari download duplikat di jaringan yang dibatasi bandwidth.
  • Mengatur penginstalan secara bertahap, atau mengupdate perangkat hanya saat tidak sedang digunakan.

Pertama, admin IT menetapkan kebijakan update sistem yang ditunda untuk menunda penginstalan otomatis (jika perlu). Berikutnya, DPC perangkat memanggil installSystemUpdate() dengan jalur ke file pembaruan sistem produsen perangkat. Meneruskan InstallSystemUpdateCallback yang dapat digunakan sistem untuk melaporkan error yang terjadi sebelum perangkat akan dimulai ulang. Jika terjadi error, sistem akan memanggil onInstallUpdateError() dengan kode error.

Setelah perangkat dimulai ulang, DPC harus mengonfirmasi penginstalan yang berhasil menggunakan API versi, seperti Build.FINGERPRINT Jika pembaruan gagal, laporkan kegagalan tersebut kepada admin IT.

Penyediaan Wi-Fi EAP

Di Android 10, kode QR dan data NFC yang digunakan untuk penyediaan perangkat dapat berisi Konfigurasi dan kredensial EAP—termasuk sertifikat. Saat seseorang memindai kode QR atau mengetuk tag NFC, perangkat akan otomatis mengautentikasi ke jaringan Wi-Fi lokal menggunakan EAP dan memulai proses penyediaan tanpa input manual.

Untuk mengautentikasi Wi-Fi menggunakan EAP, tambahkan EXTRA_PROVISIONING_WIFI_SECURITY_TYPE tambahan dengan nilai "EAP". Untuk menentukan otentikasi EAP, Anda dapat menambahkan tambahan penyediaan berikut ke intent Anda:

Dukungan DNS Pribadi

Organisasi dapat menggunakan DNS over TLS (disebut DNS Pribadi di perangkat Android) untuk menghindari kebocoran kueri DNS, termasuk nama {i>host<i} internal. Komponen admin perangkat terkelola sepenuhnya dapat mengontrol setelan DNS Pribadi perangkat. Untuk mengatur mode DNS Pribadi, hubungi:

Saat DPC memanggil salah satu metode ini, sistem akan menampilkan PRIVATE_DNS_SET_NO_ERROR jika panggilan berhasil. Jika tidak, sistem akan menampilkan error:

Untuk mengambil mode DNS Pribadi dan set host di perangkat, panggil getGlobalPrivateDnsMode() dan getGlobalPrivateDnsHost(). Anda dapat mencegah pengguna mengubah setelan DNS pribadi dengan menambahkan parameter DISALLOW_CONFIG_PRIVATE_DNS batasan pengguna.

Pengecualian mode kunci total VPN

Mode kunci total VPN memungkinkan DPC memblokir jaringan apa pun traffic yang tidak menggunakan VPN. Admin yang sepenuhnya perangkat terkelola dan profil kerja dapat mengecualikan aplikasi dari mode kunci total. Aplikasi yang dikecualikan menggunakan VPN secara default, tetapi otomatis terhubung ke jaringan tertentu jika VPN tidak tersedia. Aplikasi yang dikecualikan yang juga secara eksplisit juga menolak akses VPN hanya akan menggunakan jaringan lain.

Untuk mengecualikan aplikasi dari mode kunci total, panggil metode Metode DevicePolicyManager setAlwaysOnVpnPackage() yang menerima daftar paket aplikasi yang dikecualikan. Paket aplikasi apa pun yang ditambahkan oleh DPC harus diinstal pada perangkat saat metode dipanggil. Jika aplikasi di-uninstal dan diinstal ulang, aplikasi harus dikecualikan lagi. Untuk mendapatkan aplikasi sebelumnya dikecualikan dari mode kunci total, panggil getAlwaysOnVpnLockdownWhitelist()

Untuk membantu admin perangkat terkelola sepenuhnya dan profil kerja mendapatkan mode kunci total Android 10 menambahkan isAlwaysOnVpnLockdownEnabled() .

Cakupan delegasi baru

Android 10 memperluas daftar fungsi yang dapat didelegasikan oleh DPC ke kode aplikasi khusus. Android mengelompokkan metode API yang diperlukan untuk tugas ke dalam cakupan. Untuk mendelegasikan cakupan, panggil setDelegatedScopes() dan meneruskan satu atau beberapa cakupan berikut:

Android 10 memperkenalkan class baru DelegatedAdminReceiver untuk aplikasi yang didelegasikan. Sistem menggunakan penerima siaran ini untuk mengirim seperti DPC untuk mendelegasikan aplikasi. Aplikasi yang telah didelegasikan aktivitas jaringan log dan pemilihan sertifikat harus menerapkan class ini. Untuk menambahkan ke aplikasi yang didelegasikan, ikuti langkah-langkah berikut:

  1. Menambahkan subclass DelegatedAdminReceiver ke aplikasi delegasi.
  2. Deklarasikan <receiver> di manifes aplikasi, menambahkan tindakan filter intent untuk setiap callback. Misalnya, ACTION_NETWORK_LOGS_AVAILABLE atau ACTION_CHOOSE_PRIVATE_KEY_ALIAS.
  3. Melindungi penerima siaran dengan BIND_DEVICE_ADMIN izin akses.

Cuplikan berikut menampilkan manifes aplikasi dari satu aplikasi delegasi yang menangani pencatatan log jaringan dan pemilihan sertifikat:

<receiver android:name=".app.DelegatedAdminReceiver"
        android:permission="android.permission.BIND_DELEGATED_ADMIN">
    <intent-filter>
        <action android:name="android.app.admin.action.NETWORK_LOGS_AVAILABLE">
        <action android:name="android.app.action.CHOOSE_PRIVATE_KEY_ALIAS">
    </intent-filter>
    </receiver>

Logging aktivitas jaringan

Untuk membantu organisasi mendeteksi dan melacak malware, DPC dapat mencatat koneksi TCP ke dalam log dan pencarian DNS oleh sistem. Di Android 10, admin yang terkelola sepenuhnya perangkat tertentu bisa mendelegasikan {i>logging<i} jaringan ke aplikasi khusus.

Untuk mengambil log jaringan setelah sistem menyediakan batch, aplikasi delegasi harus membuat subclass DelegatedAdminReceiver (dijelaskan sebelumnya). Di subclass Anda, implementasikan metode onNetworkLogsAvailable() dengan mengikuti panduan di bagian Mengambil log.

Delegasikan aplikasi dapat memanggil Metode DevicePolicyManager (meneruskan null untuk argumen admin):

Agar tidak kehilangan log, DPC tidak boleh mengaktifkan logging jaringan jika berencana mendelegasikan ke aplikasi lain. Aplikasi yang didelegasikan harus mengaktifkan dan mengumpulkan log jaringan. Setelah mendelegasikan pencatatan log jaringan, DPC tidak akan menerima onNetworkLogsAvailable() lagi callback.

Untuk mempelajari cara melaporkan pencatatan log aktivitas jaringan dari aplikasi yang didelegasikan, baca panduan developer Logging aktivitas jaringan.

Pemilihan sertifikat

Di Android 10, admin perangkat terkelola sepenuhnya, profil kerja, dan pengguna sekunder dapat mendelegasikan pemilihan sertifikat ke aplikasi khusus.

Untuk memilih alias sertifikat, aplikasi delegasi harus membuat subclass terlebih dahulu DelegatedAdminReceiver (dijelaskan sebelumnya). Di subclass Anda, implementasikan metode Callback onChoosePrivateKeyAlias() dan menampilkan alias untuk pilihan sertifikat atau, untuk meminta pengguna memilih sertifikat, tampilkan null.

Penghentian kebijakan admin perangkat

Android 10 mencegah aplikasi dan DPC menerapkan perangkat lama admin. Kami merekomendasikan pelanggan dan partner beralih ke perangkat atau profil kerja yang terkelola sepenuhnya. Hal berikut kebijakan akan menampilkan SecurityException saat dipanggil oleh admin perangkat yang menargetkan Android 10:

Beberapa aplikasi menggunakan admin perangkat untuk administrasi perangkat konsumen. Sebagai misalnya, mengunci dan menghapus total perangkat yang hilang. Untuk mengaktifkannya, berikut adalah kebijakan akan tetap tersedia:

Untuk informasi selengkapnya tentang perubahan ini, baca Admin perangkat penghentian layanan.

Fitur baru untuk aplikasi

Aplikasi yang menargetkan Android 10 dapat mengkueri kompleksitas kunci layar yang disetel di perangkat sebelum menampilkan data rahasia atau meluncurkan fitur penting. Panggilan aplikasi manfaat KeyChain API dari peningkatan perilaku, sementara fitur baru juga tersedia untuk aplikasi VPN.

Pemeriksaan kualitas kunci layar

Mulai Android 10, aplikasi dengan fitur penting yang memerlukan kunci layar dapat membuat kueri kompleksitas kunci layar perangkat atau profil kerja. Aplikasi yang memerlukan kunci layar yang lebih kuat dapat mengarahkan pengguna ke pengaturan kunci layar sistem, sehingga mereka dapat memperbarui pengaturan keamanan.

Untuk memeriksa kualitas kunci layar:

Untuk meluncurkan setelan kunci layar sistem, gunakan ACTION_SET_NEW_PASSWORD dengan tambahan EXTRA_PASSWORD_COMPLEXITY—opsi yang tidak memenuhi kompleksitas yang ditentukan dalam tambahan intent akan berwarna abu-abu. Pengguna dapat memilih dari opsi kunci layar yang tersedia atau keluar dari layar.

Praktik terbaik: Tampilkan pesan di aplikasi Anda sebelum meluncurkan sistem halaman kunci layar. Saat aplikasi dilanjutkan, panggil DevicePolicyManager.getPasswordComplexity() untuk mencoba lagi perintah. Jika kunci layar yang lebih kuat masih diperlukan, batasi akses, bukan berulang kali meminta pengguna untuk memperbarui setelan keamanan mereka.

Dukungan proxy HTTP di aplikasi VPN

Di Android 10, aplikasi VPN dapat menyetel proxy HTTP untuk koneksi VPN. Untuk menambahkan proxy HTTP, aplikasi VPN harus mengonfigurasi ProxyInfo dengan host dan port, sebelum menelepon VpnService.Builder.setHttpProxy(). Sistem dan banyak {i>library<i} jaringan menggunakan setelan proxy ini, tetapi sistem tidak memaksa aplikasi untuk mem-proxy permintaan HTTP.

Untuk kode contoh yang menunjukkan cara menyetel proxy HTTP, lihat dokumentasi ToyVPN aplikasi contoh.

Mode layanan VPN

Aplikasi VPN dapat mengetahui apakah layanan sedang berjalan karena setelan selalu aktif Vpn dan jika kunci total mode aktif. Metode baru di Android 10 dapat membantu Anda menyesuaikan antarmuka pengguna. Sebagai contoh, Anda mungkin menonaktifkan tombol putuskan koneksi jika VPN selalu aktif mengontrol siklus proses layanan Anda.

Aplikasi VPN dapat memanggil VpnService berikut metode setelah terhubung ke layanan dan menetapkan antarmuka lokal:

  • isAlwaysOn() ke mencari tahu apakah sistem memulai layanan karena VPN selalu aktif
  • isLockdownEnabled() untuk mengetahui apakah sistem memblokir koneksi yang tidak menggunakan VPN

Status selalu aktif tetap sama saat layanan sedang berjalan tetapi mungkin berubah.

Penyempurnaan keychain

Android 10 memperkenalkan beberapa peningkatan terkait API KeyChain.

Saat aplikasi memanggil KeyChain.choosePrivateKeyAlias(), Android 10 dan yang lebih baru perangkat memfilter daftar sertifikat yang dapat dipilih pengguna berdasarkan penerbit dan algoritma kunci yang ditentukan dalam panggilan.

Misalnya, saat server TLS mengirim Permintaan Sertifikat pesan sebagai bagian dari TLS handshake dan browser memanggil KeyChain.choosePrivateKeyAlias(), hanya prompt pemilihan sertifikat menyertakan opsi yang cocok dengan parameter penerbit. Jika tidak ada opsi yang cocok tersedia atau tidak ada sertifikat yang terinstal pada perangkat, maka dialog pemilihan tidak akan ditampilkan kepada pengguna.

Selain itu, KeyChain tidak lagi mengharuskan perangkat memiliki kunci layar sebelum kunci atau sertifikat CA dapat diimpor.