Android 10 為企業提供的新功能

本頁概要列出 Android 10 中引入的全新企業 API、功能和行為變更。

公司裝置的工作資料夾

Android 10 針對只需要工作資料夾的公司裝置推出了新的佈建和認證功能。

更完善的工作資料夾佈建工具

您可以在 Android 10 以上版本裝置上佈建使用 QR code零接觸機制的裝置佈建工作資料夾。在公司裝置佈建期間,新的意圖額外項目可讓裝置政策控制器應用程式 (DPC) 啟動工作資料夾「或」全代管設定。建立工作資料夾或完整的管理功能後,DPC 必須啟動政策法規遵循畫面,強制執行任何初始政策。

在 DPC 的資訊清單檔案中,為活動中的 GET_PROVISIONING_MODE 宣告新的意圖篩選器,並新增 BIND_DEVICE_ADMIN 權限,防止任意應用程式啟動活動。例如:

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

在佈建期間,系統會啟動與意圖篩選器相關聯的活動。這個活動的目的是指定管理模式 (工作資料夾或全代管)。

在確定裝置適用的管理模式之前,先擷取佈建額外項目可能會很有幫助。該活動可呼叫 getIntent() 來擷取以下項目:

DPC 也可以建立新的結果意圖,並在其中新增下列額外項目:

如要在裝置上設定管理模式,請呼叫 putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode),其中 desiredProvisioningMode 為:

  • 工作資料夾:PROVISIONING_MODE_MANAGED_PROFILE
  • 全代管:PROVISIONING_MODE_FULLY_MANAGED_DEVICE

透過 setResult(RESULT_OK, Intent) 將佈建詳細資料傳回回設定程序,並使用 finish() 關閉所有使用中的畫面,以便完成工作資料夾或全代管佈建。

佈建完成後,DPC 可使用新的意圖啟動其法規遵循畫面,並強制執行初始政策設定。在工作資料夾裝置上,法規遵循畫面會顯示在工作資料夾中。您的 DPC 必須確保向使用者顯示的法規遵循畫面,即便使用者逃離設定流程也一樣。

在 DPC 的資訊清單檔案中,為活動中的 ADMIN_POLICY_COMPLIANCE 宣告新的意圖篩選器,並新增 BIND_DEVICE_ADMIN 權限,防止任意應用程式啟動活動。例如:

<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 必須使用這個新 Intent,而不是監聽 ACTION_PROFILE_PROVISIONING_COMPLETE 廣播。

與意圖篩選器相關聯的活動可以呼叫 getIntent() 來擷取 EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE。執行完符合政策規定後,ADMIN_POLICY_COMPLIANCE 必須傳回 setResult(RESULT_OK, Intent),並使用 finish() 關閉所有使用中的畫面。

全代管裝置會將使用者帶回主畫面。工作資料夾裝置會先提示使用者新增個人帳戶,然後再返回主畫面。

工作資料夾裝置 ID 認證

將 DPC 設為使用零接觸註冊機制佈建的工作資料夾管理員,即可取得通過安全硬體認證的裝置 ID,例如 IMEI 或製造商序號。裝置必須包含安全硬體 (例如信任的執行環境 (TEE) 或安全元件 (SE),並支援裝置 ID 認證和零接觸註冊機制。

工作資料夾的管理員元件可以呼叫 DevicePolicyManager.generateKeyPair(),傳遞一或多個 idAttestationFlags 引數的 ID_TYPE_SERIALID_TYPE_IMEIID_TYPE_MEID

如要進一步瞭解如何擷取及驗證裝置 ID,請參閱使用金鑰認證功能驗證硬體支援的金鑰組

改善工作資料夾

新的 API 提供跨設定檔日曆瀏覽權限,以及封鎖來自不明來源的應用程式安裝的所有裝置。

工作資料夾,裝置上發生的不明來源

從 Google Play (或其他信任的應用程式商店) 以外的來源下載的應用程式,稱為來源不明的應用程式。在 Android 10 中,工作資料夾管理員可以新增新的使用者限制 DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY,防止任何使用者或設定檔在裝置上安裝來源不明的應用程式。新增此限制後,使用裝置的使用者仍然可以使用 ADB 安裝應用程式。

為了避免使用者誤安裝不明來源的應用程式,建議您新增這項使用者限制,因為這麼做不需要安裝 Google Play 服務。如要支援較舊的 Android 版本,可以設定 Google Play 的代管設定值

限制只能在工作資料夾內輸入裝置

如果工作資料夾管理員呼叫 DevicePolicyManager.setPermittedInputMethods(),使用者就只能使用工作資料夾中許可的輸入法,而非整個裝置,讓使用者能完全控管裝置個人端的輸入法。

無聲抹除工作資料夾

已將 WIPE_SILENTLY 標記新增至 DevicePolicyManager.wipeData()。如果設定標記,使用 wipeData() 抹除工作資料夾時,使用者就不會收到通知。

全代管裝置的新功能

Android 10 為全代管裝置推出新功能和 API,包括手動系統更新、擴充 QR code 和 NFC 佈建功能,以加入 EAP Wi-Fi 網路的憑證,並支援透過 TLS 使用 DNS。

手動安裝系統更新

在 Android 10 中,全代管裝置的管理員可透過系統更新檔案安裝系統更新。手動系統更新可讓 IT 管理員執行下列操作:

  • 先在少數裝置上測試更新,再廣泛安裝更新。
  • 避免在頻寬受限的網路中重複下載。
  • 分階段安裝,或只在裝置未使用時更新裝置。

首先,IT 管理員會設定延後的系統更新政策,視需要延後自動安裝作業。接著,裝置的 DPC 會呼叫 installSystemUpdate(),其中包含裝置製造商系統更新檔案的路徑。傳遞 InstallSystemUpdateCallback 物件,讓系統用於回報裝置重新啟動前發生的錯誤。如果發生問題,系統會呼叫 onInstallUpdateError() 並提供錯誤代碼。

裝置重新啟動後,DPC 需要使用版本 API (例如 Build.FINGERPRINT) 確認安裝成功。如果更新失敗,請向 IT 管理員回報。

EAP Wi-Fi 佈建

在 Android 10 中,用於佈建裝置的 QR code 和 NFC 資料可以包含 EAP 設定和憑證 (包括憑證)。當使用者掃描 QR code 或輕觸 NFC 標記時,裝置會透過 EAP 自動驗證本機 Wi-Fi 網路,然後啟動佈建程序,而不需進行任何輸入。

如要使用 EAP 驗證 Wi-Fi,請新增值為 "EAP"EXTRA_PROVISIONING_WIFI_SECURITY_TYPE 額外項目。如要指定 EAP 驗證,您可以將下列佈建額外項目新增至意圖:

私人 DNS 支援

機構可以使用透過傳輸層安全標準 (TLS) 的 DNS (在 Android 裝置上稱為「私人 DNS」),以免 DNS 查詢 (包括內部主機名稱) 外洩。全代管裝置的管理員元件可以控制裝置的私人 DNS 設定。如要設定私人 DNS 模式,請呼叫:

當您的 DPC 呼叫上述任一方法時,如果呼叫成功,系統會傳回 PRIVATE_DNS_SET_NO_ERROR。否則會傳回錯誤。

如要擷取裝置上的私人 DNS 模式和主機,請呼叫 getGlobalPrivateDnsMode()getGlobalPrivateDnsHost()。您可以新增 DISALLOW_CONFIG_PRIVATE_DNS 使用者限制,防止使用者變更私人 DNS 設定。

免除 VPN 鎖定模式

VPN 鎖定模式可讓 DPC 封鎖任何未使用 VPN 的網路流量。全代管裝置和工作資料夾的管理員可將應用程式免於鎖定模式。豁免的應用程式預設使用 VPN,但如果無法使用 VPN,則會自動連線至其他網路。遭豁免且明確拒絕存取 VPN 的應用程式,只會使用其他網路。

如要將應用程式不受鎖定模式限制,請呼叫新的 DevicePolicyManager 方法 setAlwaysOnVpnPackage(),接受豁免的應用程式套件清單。呼叫方法時,裝置上必須安裝 DPC 新增的所有應用程式套件。如果應用程式解除安裝後又重新安裝,則必須再次豁免該應用程式。如要讓應用程式先前免除鎖定模式,請呼叫 getAlwaysOnVpnLockdownWhitelist()

為了協助全代管裝置和工作資料夾的管理員取得鎖定模式狀態,Android 10 新增了 isAlwaysOnVpnLockdownEnabled() 方法。

新增委派範圍

Android 10 將 DPC 可委派給其他更專門應用程式的功能清單。Android 會將工作所需的 API 方法分為「範圍」。如要委派範圍,請呼叫 setDelegatedScopes(),並傳遞下列一或多個範圍:

Android 10 推出了適用於委派應用程式的新類別 DelegatedAdminReceiver。系統會使用此廣播接收器傳送類似 DPC 的回呼,以便委派應用程式。已委派網路活動記錄和憑證選取的應用程式應實作此類別。如要將此元件新增至委派應用程式,請按照下列步驟操作:

  1. DelegatedAdminReceiver 的子類別新增至委派應用程式。
  2. 在應用程式資訊清單中宣告 <receiver>,並為每個回呼新增意圖篩選器動作。例如 ACTION_NETWORK_LOGS_AVAILABLEACTION_CHOOSE_PRIVATE_KEY_ALIAS
  3. 使用 BIND_DEVICE_ADMIN 權限保護廣播接收器。

以下程式碼片段顯示單一委派應用程式的應用程式資訊清單,該應用程式可處理網路記錄和憑證選取作業:

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

網路活動記錄功能

為協助機構偵測及追蹤惡意軟體,DPC 可以系統記錄 TCP 連線和 DNS 查詢。在 Android 10 中,全代管裝置的管理員可以將網路記錄委派給特殊應用程式。

如要在系統啟用批次後擷取網路記錄,委派應用程式應先建立子類別 DelegatedAdminReceiver (如前所述)。在子類別中,按照擷取記錄檔的指南實作 onNetworkLogsAvailable() 回呼。

委派應用程式可以呼叫下列 DevicePolicyManager 方法 (為 admin 引數傳遞 null):

為避免遺失記錄,如果打算委派給其他應用程式,DPC 不應啟用網路記錄功能。委派應用程式應啟用及收集網路記錄。DPC 委派網路記錄後,不會再收到任何 onNetworkLogsAvailable() 回呼。

如要瞭解如何從委派應用程式回報網路活動記錄,請參閱開發人員指南的網路活動記錄

選取憑證

在 Android 10 中,全代管裝置、工作資料夾和次要使用者的管理員可以將憑證選取作業委派給特殊應用程式。

如要選取憑證別名,委派應用程式必須先建立子類別 DelegatedAdminReceiver (如前所述)。在子類別中,實作 onChoosePrivateKeyAlias() 回呼並傳回偏好憑證的別名,或是傳回 null

裝置管理員政策即將淘汰

Android 10 會禁止應用程式和裝置政策控制器 (DPC) 套用舊版裝置管理政策。建議客戶和合作夥伴改用全代管裝置或工作資料夾。下列政策會在指定 Android 10 的裝置管理員叫用時擲回 SecurityException

有些應用程式會使用裝置管理員進行消費者裝置的管理作業。例如,鎖定遺失的裝置並抹除。如欲啟用這項功能,仍可以使用下列政策:

如要進一步瞭解這些變更,請參閱淘汰裝置管理員

應用程式新功能

指定 Android 10 的應用程式可以查詢裝置上設定的螢幕鎖定複雜度,然後才顯示機密資料或啟動重要功能。呼叫 KeyChain API 的應用程式可受益於行為改善,而 VPN 應用程式也提供新功能。

螢幕鎖定品質檢查

自 Android 10 起,如果應用程式的重要功能需要螢幕鎖定,就可以查詢裝置或工作資料夾的螢幕鎖定複雜度。如果應用程式需要更嚴格的螢幕鎖定方式,可將使用者導向系統螢幕鎖定設定,讓使用者能夠更新安全性設定。

如何檢查螢幕鎖定品質:

如要啟動系統螢幕鎖定設定,請使用 ACTION_SET_NEW_PASSWORD 搭配額外的 EXTRA_PASSWORD_COMPLEXITY,也就是不符合意圖額外項目指定複雜度的選項會顯示為灰色。使用者可以選擇可用的螢幕鎖定選項或離開螢幕。

最佳做法:在啟動系統螢幕鎖定頁面之前,先在應用程式中顯示訊息。應用程式重新啟用後,請再次呼叫 DevicePolicyManager.getPasswordComplexity()。如果仍需要更高的螢幕鎖定方式,請限制存取權,而不要重複提示使用者更新安全性設定。

VPN 應用程式的 HTTP Proxy 支援

在 Android 10 中,VPN 應用程式可為 VPN 連線設定 HTTP Proxy。如要新增 HTTP Proxy,VPN 應用程式必須在呼叫 VpnService.Builder.setHttpProxy() 之前,設定具有主機和通訊埠的 ProxyInfo 執行個體。系統和許多網路程式庫會使用這項 Proxy 設定,但系統不會強制應用程式透過 Proxy 處理 HTTP 要求。

如需說明如何設定 HTTP Proxy 的程式碼範例,請參閱 ToyVPN 範例應用程式。

VPN 服務模式

VPN 應用程式可以偵測服務是否因一律開啟 VPN,以及鎖定模式是否運作。Android 10 中新增的方法可協助您調整使用者介面。例如,當永久連線的 VPN 控制服務的生命週期時,您可能會停用中斷連線按鈕。

連線至服務並建立本機介面後,VPN 應用程式可以呼叫下列 VpnService 方法:

服務執行期間的一律開啟狀態將維持不變,但鎖定模式狀態可能會改變。

改善 Keychain 功能

Android 10 推出了幾項與 KeyChain API 相關的改善項目。

當應用程式呼叫 KeyChain.choosePrivateKeyAlias() 時,Android 10 以上版本裝置會根據呼叫中指定的核發者和金鑰演算法,篩選使用者可選擇的憑證清單。

舉例來說,當 TLS 伺服器在 TLS 握手期間傳送憑證要求訊息,且瀏覽器呼叫 KeyChain.choosePrivateKeyAlias() 時,憑證選取提示只會包含與核發者參數相符的選項。如果沒有相符的選項,或裝置上未安裝憑證,系統就不會向使用者顯示選取提示。

此外,KeyChain 不再需要設定螢幕鎖定,才能匯入金鑰或 CA 憑證。