Halaman ini menyediakan ringkasan tentang API perusahaan, fitur, dan perubahan perilaku baru 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 lebih baru yang terdaftar menggunakan kode QR atau Zero touch. Selama penyediaan perangkat milik perusahaan, tambahan intent baru memungkinkan aplikasi pengontrol kebijakan perangkat (DPC) memulai profil kerja atau penyiapan yang terkelola sepenuhnya. 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 tambahkan izin BIND_DEVICE_ADMIN
untuk mencegah aplikasi arbitrer memulai aktivitas. 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 meluncurkan aktivitas yang terkait dengan filter intent. Tujuan aktivitas ini adalah menentukan mode pengelolaan (profil kerja atau terkelola sepenuhnya).
Sebaiknya ambil tambahan penyediaan sebelum menentukan
mode pengelolaan yang sesuai untuk perangkat. Aktivitas tersebut dapat memanggil
getIntent()
untuk mengambil
hal berikut:
DPC juga dapat membuat intent hasil baru dan menambahkan ekstra berikut:
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
: Tambahkan ke paket yang ada atau buat paket baru. Paket ini dikirim sebagai tambahan intent saat DPC meluncurkan layar kepatuhan kebijakannya.EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE
: Hanya menentukan akun yang akan dimigrasikan jika menambahkan akun kerja sebagai bagian dari penyediaan profil kerja.EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS
Untuk menetapkan mode pengelolaan di perangkat, panggil
putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode)
,
dengan desiredProvisioningMode
:
- Profil kerja:
PROVISIONING_MODE_MANAGED_PROFILE
- Terkelola sepenuhnya:
PROVISIONING_MODE_FULLY_MANAGED_DEVICE
Selesaikan profil kerja atau penyediaan yang terkelola sepenuhnya dengan mengirim
detail penyediaan kembali ke penyiapan melalui setResult(RESULT_OK,
Intent)
dan tutup semua layar aktif dengan
finish()
.
Setelah penyediaan selesai, Intent baru akan tersedia bagi DPC untuk meluncurkan layar kepatuhan mereka dan menerapkan setelan kebijakan awal. Pada perangkat profil kerja, layar kepatuhan ditampilkan di profil kerja. DPC harus memastikan bahwa layar kepatuhannya ditampilkan kepada pengguna, meskipun pengguna keluar dari alur penyiapan.
Di file manifes DPC, deklarasikan filter intent baru untuk
ADMIN_POLICY_COMPLIANCE
dalam aktivitas dan tambahkan izin BIND_DEVICE_ADMIN
untuk mencegah aplikasi arbitrer memulai aktivitas. 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 Anda harus menggunakan Intent baru ini, bukan memproses
siaran
ACTION_PROFILE_PROVISIONING_COMPLETE
.
Aktivitas yang terkait dengan filter intent dapat memanggil
getIntent()
untuk mengambil
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
.
Setelah menjalankan 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 akan meminta pengguna untuk menambahkan akun pribadi sebelum mengembalikannya ke layar utama.
Pengesahan ID perangkat profil kerja
DPC yang disetel sebagai admin profil kerja yang disediakan menggunakan pendaftaran zero-touch bisa mendapatkan ID perangkat yang disahkan hardware aman, seperti IMEI atau nomor seri produsen. Perangkat harus menyertakan hardware aman (seperti trustedexecution environment (TEE) atau Secure Element (SE)) dan mendukung pengesahan ID perangkat dan pendaftaran zero-touch.
Komponen admin profil kerja dapat memanggil DevicePolicyManager.generateKeyPair()
, 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 lintas-profil dan pemblokiran penginstalan aplikasi di seluruh perangkat dari sumber tidak dikenal.
Profil kerja, sumber yang tidak dikenal di tingkat perangkat
Aplikasi yang didownload dari sumber selain Google Play (atau app store
tepercaya lainnya) disebut aplikasi dari sumber tidak dikenal. Di Android 10, admin profil
kerja dapat mencegah pengguna atau profil menginstal aplikasi dari sumber
yang tidak dikenal di mana pun pada perangkat dengan menambahkan batasan pengguna baru
DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY
.
Namun, setelah menambahkan pembatasan ini, pengguna perangkat masih dapat
menginstal aplikasi menggunakan adb.
Untuk mencegah pengguna menginstal aplikasi secara tidak sengaja dari sumber tidak dikenal, sebaiknya tambahkan batasan pengguna ini karena layanan Google Play tidak harus diinstal. Jika ingin mendukung versi Android lama, Anda dapat menyetel nilai konfigurasi terkelola untuk Google Play.
Membatasi perangkat input yang diizinkan untuk profil kerja
Saat admin profil kerja memanggil DevicePolicyManager.setPermittedInputMethods()
, pengguna hanya dibatasi untuk metode input yang diizinkan di dalam profil
kerjanya, bukan di seluruh perangkat, sehingga pengguna memiliki kontrol penuh atas
metode input di sisi pribadi perangkatnya.
Menghapus profil kerja diam-diam
Menambahkan flag WIPE_SILENTLY
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, perluasan kode QR dan penyediaan 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 update 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 diperlukan). Selanjutnya, DPC perangkat memanggil installSystemUpdate()
dengan jalur ke file update sistem produsen perangkat. Teruskan objek InstallSystemUpdateCallback
yang dapat digunakan sistem untuk melaporkan error yang terjadi sebelum perangkat
dimulai ulang. Jika terjadi masalah, sistem akan memanggil onInstallUpdateError()
dengan kode error.
Setelah perangkat dimulai ulang, DPC harus mengonfirmasi penginstalan yang berhasil
menggunakan API versi, seperti
Build.FINGERPRINT
. Jika update 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 tambahan.
Untuk mengautentikasi Wi-Fi menggunakan EAP, tambahkan tambahan
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
dengan nilai "EAP"
. Untuk menentukan autentikasi EAP, Anda dapat menambahkan
tambahan penyediaan berikut ke intent:
EXTRA_PROVISIONING_WIFI_EAP_METHOD
EXTRA_PROVISIONING_WIFI_IDENTITY
EXTRA_PROVISIONING_WIFI_ANONYMOUS_IDENTITY
EXTRA_PROVISIONING_WIFI_DOMAIN
EXTRA_PROVISIONING_WIFI_PHASE2_AUTH
EXTRA_PROVISIONING_WIFI_USER_CERTIFICATE
EXTRA_PROVISIONING_WIFI_CA_CERTIFICATE
Dukungan DNS Pribadi
Organisasi dapat menggunakan DNS melalui TLS (disebut DNS Pribadi di perangkat Android) untuk menghindari kebocoran kueri DNS, termasuk kueri nama host internal. Komponen admin dari perangkat yang terkelola sepenuhnya dapat mengontrol setelan DNS Pribadi perangkat. Untuk menyetel mode DNS Pribadi, panggil:
setGlobalPrivateDnsModeOpportunistic()
agar perangkat dapat menggunakan DNS pribadi saat sistem dapat menemukan server nama pendukung, atausetGlobalPrivateDnsModeSpecifiedHost()
untuk menentukan nama host server nama yang mendukung RFC7858 dalam argumenprivateDnsHost
.
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 host yang ditetapkan di perangkat, panggil getGlobalPrivateDnsMode()
dan getGlobalPrivateDnsHost()
.
Anda dapat mencegah pengguna mengubah setelan DNS pribadi dengan menambahkan batasan pengguna DISALLOW_CONFIG_PRIVATE_DNS
.
Pengecualian mode kunci total VPN
Mode kunci total VPN memungkinkan DPC memblokir traffic jaringan yang tidak menggunakan VPN. Admin perangkat yang terkelola sepenuhnya dan profil kerja dapat mengecualikan aplikasi dari mode kunci total. Aplikasi yang dikecualikan menggunakan VPN secara default, tetapi otomatis terhubung ke jaringan lain jika VPN tidak tersedia. Aplikasi yang dikecualikan yang juga secara eksplisit ditolak mengakses VPN hanya akan menggunakan jaringan lain.
Untuk mengecualikan aplikasi dari mode kunci total, panggil metode
DevicePolicyManager
baru
setAlwaysOnVpnPackage()
yang menerima daftar paket aplikasi yang dikecualikan. Paket aplikasi apa pun yang ditambahkan DPC
harus diinstal di perangkat saat metode dipanggil. Jika aplikasi
di-uninstal dan diinstal ulang, aplikasi harus dikecualikan lagi. Untuk mendapatkan aplikasi
yang sebelumnya dikecualikan dari mode kunci total, panggil
getAlwaysOnVpnLockdownWhitelist()
.
Untuk membantu admin perangkat terkelola sepenuhnya dan profil kerja mendapatkan status mode
kunci total, Android 10 menambahkan
metode
isAlwaysOnVpnLockdownEnabled()
.
Cakupan delegasi baru
Android 10 memperluas daftar fungsi yang dapat didelegasikan oleh DPC ke aplikasi lain
yang lebih terspesialisasi. Android mengelompokkan metode API yang diperlukan untuk tugas ke dalam
cakupan. Untuk mendelegasikan cakupan, panggil
setDelegatedScopes()
dan teruskan satu atau beberapa cakupan berikut:
DELEGATION_NETWORK_LOGGING
untuk mendelegasikan logging aktivitas jaringanDELEGATION_CERT_SELECTION
untuk mendelegasikan pemilihan sertifikat
Android 10 memperkenalkan class baru
DelegatedAdminReceiver
untuk aplikasi yang didelegasikan. Sistem menggunakan penerima siaran ini untuk mengirim callback
seperti DPC untuk mendelegasikan aplikasi. Aplikasi yang telah didelegasikan ke logging aktivitas
jaringan dan pemilihan sertifikat harus menerapkan class ini. Untuk menambahkan
komponen ini ke aplikasi delegasi, ikuti langkah-langkah berikut:
- Tambahkan subclass
DelegatedAdminReceiver
ke aplikasi delegasi. - Deklarasikan
<receiver>
dalam manifes aplikasi, dengan menambahkan tindakan filter intent untuk setiap callback. Misalnya,ACTION_NETWORK_LOGS_AVAILABLE
atauACTION_CHOOSE_PRIVATE_KEY_ALIAS
. - Lindungi penerima siaran dengan izin
BIND_DEVICE_ADMIN
.
Cuplikan berikut menunjukkan manifes aplikasi dari satu aplikasi yang didelegasikan yang menangani logging 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 log koneksi TCP dan pencarian DNS oleh sistem. Di Android 10, admin perangkat yang terkelola sepenuhnya dapat mendelegasikan logging jaringan ke aplikasi yang dikhususkan.
Untuk mengambil log jaringan setelah sistem
menyediakan batch, aplikasi yang didelegasikan harus terlebih dahulu membuat subclass
DelegatedAdminReceiver
(dijelaskan sebelumnya). Di subclass Anda, terapkan callback
onNetworkLogsAvailable()
dengan mengikuti panduan di Mengambil log.
Mendelegasikan aplikasi dapat memanggil metode
DevicePolicyManager
berikut
(meneruskan null
untuk argumen admin
):
Untuk menghindari 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 logging jaringan, DPC tidak akan menerima
callback onNetworkLogsAvailable()
lebih lanjut.
Untuk mempelajari cara melaporkan logging 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 yang dikhususkan.
Untuk memilih alias sertifikat, aplikasi yang didelegasikan harus terlebih dahulu membuat subclass
DelegatedAdminReceiver
(dijelaskan sebelumnya). Di subclass Anda, terapkan callback
onChoosePrivateKeyAlias()
lalu tampilkan alias untuk sertifikat pilihan
atau, untuk meminta pengguna memilih sertifikat, tampilkan null
.
Penghentian kebijakan admin perangkat
Android 10 mencegah aplikasi dan DPC menerapkan kebijakan admin
perangkat lama. Sebaiknya pelanggan
dan partner bertransisi ke perangkat atau profil kerja yang terkelola sepenuhnya. Kebijakan berikut
menampilkan SecurityException
saat dipanggil oleh admin perangkat yang menargetkan Android 10:
USES_POLICY_DISABLE_CAMERA
USES_POLICY_DISABLE_KEYGUARD_FEATURES
USES_POLICY_EXPIRE_PASSWORD
USES_POLICY_LIMIT_PASSWORD
Beberapa aplikasi menggunakan administrator perangkat untuk administrasi perangkat konsumen. Misalnya, mengunci dan menghapus total perangkat yang hilang. Untuk mengaktifkannya, kebijakan berikut tetap tersedia:
Untuk mengetahui informasi selengkapnya tentang perubahan ini, baca Penghentian admin perangkat.
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. Aplikasi yang memanggil
KeyChain
API mendapatkan manfaat 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 melakukan kueri kompleksitas kunci layar perangkat atau profil kerja. Aplikasi yang memerlukan kunci layar yang lebih kuat dapat mengarahkan pengguna ke setelan kunci layar sistem, sehingga mereka dapat memperbarui setelan keamanan.
Untuk memeriksa kualitas kunci layar:
- Tambahkan izin
REQUEST_PASSWORD_COMPLEXITY
baru ke manifes aplikasi Anda. - Panggil
DevicePolicyManager.getPasswordComplexity()
. Kompleksitas dibagi menjadi empat kategori:
Untuk meluncurkan setelan kunci layar sistem, gunakan
ACTION_SET_NEW_PASSWORD
dengan EXTRA_PASSWORD_COMPLEXITY
tambahan—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: Menampilkan pesan di aplikasi sebelum meluncurkan
halaman kunci layar sistem. Saat aplikasi dilanjutkan, panggil
DevicePolicyManager.getPasswordComplexity()
lagi. Jika diperlukan kunci layar yang lebih kuat, batasi akses, bukan
meminta pengguna berulang kali untuk memperbarui setelan keamanan.
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
instance ProxyInfo
dengan host dan port,
sebelum memanggil
VpnService.Builder.setHttpProxy()
.
Sistem dan banyak library jaringan menggunakan setelan proxy ini, tetapi sistem
tidak memaksa aplikasi untuk melakukan proxy permintaan HTTP.
Untuk mengetahui contoh kode yang menunjukkan cara menyetel proxy HTTP, lihat aplikasi contoh ToyVPN.
Mode layanan VPN
Aplikasi VPN dapat mengetahui apakah layanan sedang berjalan karena adanya Vpn selalu aktif dan apakah mode kunci total aktif. Metode baru yang ditambahkan di Android 10 dapat membantu Anda menyesuaikan antarmuka pengguna. Misalnya, Anda dapat menonaktifkan tombol putus koneksi ketika VPN yang selalu aktif mengontrol siklus proses layanan Anda.
Aplikasi VPN dapat memanggil metode VpnService
berikut setelah terhubung ke layanan
dan membuat antarmuka lokal:
isAlwaysOn()
untuk mengetahui apakah sistem memulai layanan karena adanya VPN yang selalu aktifisLockdownEnabled()
untuk mengetahui apakah sistem memblokir koneksi yang tidak menggunakan VPN
Status selalu aktif tetap sama saat layanan berjalan, tetapi status mode kunci total mungkin berubah.
Penyempurnaan keychain
Android 10 memperkenalkan beberapa peningkatan terkait
KeyChain
API.
Saat aplikasi memanggil KeyChain.choosePrivateKeyAlias()
, perangkat Android 10 dan yang lebih baru
akan memfilter daftar sertifikat yang dapat dipilih pengguna berdasarkan
penerbit dan algoritma kunci yang ditentukan dalam panggilan tersebut.
Misalnya, saat server TLS mengirim pesan Permintaan Sertifikat
sebagai bagian dari handshake TLS dan browser memanggil
KeyChain.choosePrivateKeyAlias()
, perintah pemilihan sertifikat hanya
menyertakan opsi yang cocok dengan parameter penerbit. Jika tidak ada opsi pencocokan
yang tersedia atau tidak ada sertifikat yang diinstal pada perangkat, perintah pemilihan tidak akan ditampilkan kepada pengguna.
Selain itu, KeyChain
tidak lagi
mengharuskan perangkat memiliki kunci layar sebelum kunci atau sertifikat CA dapat
diimpor.