Android 10 為企業提供的新功能

本頁概要列出 Android 10 所提供的企業 API、功能和行為變更。

公司裝置的工作資料夾

Android 10 推出新的佈建和驗證功能,適用於僅需工作資料夾的公司裝置。

改良的工作資料夾佈建工具

您可以在使用 QR codeZero-touch 註冊的 Android 10 以上版本裝置上佈建工作資料夾。在佈建公司擁有的裝置時,裝置政策控制器應用程式 (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 即可使用新的 Intent 啟動法規遵循畫面,並強制執行初始政策設定。在工作資料夾裝置上,合規性畫面會顯示在工作資料夾中。即使使用者略過設定流程,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

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

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

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

VPN 鎖定模式豁免

DPC 可透過 VPN 封鎖模式封鎖未使用 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 應用程式必須先使用主機和連接埠設定 ProxyInfo 執行個體,然後再呼叫 VpnService.Builder.setHttpProxy()。系統和許多網路程式庫都會使用這項 Proxy 設定,但系統不會強制應用程式 Proxy HTTP 要求。

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

VPN 服務模式

VPN 應用程式可以偵測服務是否因永久連線 VPN 而執行,以及封鎖模式是否已啟用。Android 10 新增的方法可協助您調整使用者介面。舉例來說,如果永久連線 VPN 控制服務的生命週期,您可能會停用中斷連線按鈕。

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

服務執行期間,永遠開啟狀態會維持不變,但鎖定模式狀態可能會變更。

鑰匙圈功能改善

Android 10 導入了幾項與 KeyChain API 相關的改善項目。

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

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

此外,KeyChain 不再要求裝置必須設定螢幕鎖定,才能匯入金鑰或 CA 憑證。