Tính năng mới dành cho doanh nghiệp trên Android 10

Trang này cung cấp thông tin tổng quan về các tính năng, API mới và các thay đổi về hành vi được giới thiệu trong Android 10.

Hồ sơ công việc cho thiết bị thuộc sở hữu của công ty

Android 10 giới thiệu các tính năng cấp phép và chứng thực mới cho thiết bị thuộc sở hữu của công ty chỉ yêu cầu hồ sơ công việc.

Cải thiện công cụ cấp phép cho hồ sơ công việc

Bạn có thể cung cấp hồ sơ công việc trên các thiết bị chạy Android 10 trở lên được đăng ký bằng Mã QR hoặc tự động đăng ký. Trong quá trình cung cấp một thiết bị thuộc sở hữu của công ty, ý định bổ sung mới sẽ cho phép ứng dụng trình kiểm soát chính sách thiết bị (DPC) để bắt đầu hồ sơ công việc hoặc được quản lý hoàn toàn thiết lập. Sau khi tạo hồ sơ công việc hoặc thiết lập toàn bộ quyền quản lý, DPC phải khởi chạy màn hình tuân thủ chính sách để thực thi mọi chính sách ban đầu.

Trong tệp kê khai của DPC, hãy khai báo bộ lọc ý định mới cho GET_PROVISIONING_MODE trong một hoạt động và thêm BIND_DEVICE_ADMIN để ngăn các ứng dụng tuỳ ý bắt đầu hoạt động. Ví dụ:

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

Trong quá trình cấp phép, hệ thống sẽ khởi chạy hoạt động liên kết với bộ lọc ý định. Mục đích của hoạt động này là chỉ định một chế độ quản lý (hồ sơ công việc hoặc được quản lý toàn bộ).

Có thể bạn nên truy xuất phần bổ sung cấp phép trước khi xác định chế độ quản lý thích hợp cho thiết bị. Hoạt động có thể gọi getIntent() để truy xuất như sau:

DPC cũng có thể tạo một ý định kết quả mới và thêm các tiện ích bổ sung sau vào đó:

Để đặt chế độ quản lý trên thiết bị, hãy gọi putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode), trong đó desiredProvisioningMode là:

  • Hồ sơ công việc: PROVISIONING_MODE_MANAGED_PROFILE
  • Được quản lý hoàn toàn: PROVISIONING_MODE_FULLY_MANAGED_DEVICE

Hoàn tất hồ sơ công việc hoặc cấp phép được quản lý toàn bộ bằng cách gửi cấp phép quay lại thông tin chi tiết để thiết lập qua setResult(RESULT_OK, Intent) và đóng tất cả màn hình đang hoạt động bằng finish().

Sau khi cấp phép xong, DPC sẽ khởi chạy một Ý định mới màn hình tuân thủ và thực thi các chế độ cài đặt chính sách ban đầu. Trên hồ sơ công việc thiết bị, màn hình tuân thủ sẽ được hiển thị trong hồ sơ công việc. DPC của bạn phải đảm bảo rằng người dùng nhìn thấy màn hình tuân thủ của ứng dụng, ngay cả khi người dùng thoát trong quy trình thiết lập.

Trong tệp kê khai của DPC, hãy khai báo bộ lọc ý định mới cho ADMIN_POLICY_COMPLIANCE trong một hoạt động và thêm BIND_DEVICE_ADMIN để ngăn các ứng dụng tuỳ ý bắt đầu hoạt động. Ví dụ:

<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 của bạn phải sử dụng Ý định mới này thay vì lắng nghe ACTION_PROFILE_PROVISIONING_COMPLETE truyền tin.

Hoạt động liên kết với bộ lọc ý định có thể gọi getIntent() để truy xuất thời gian EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE. Sau khi tuân thủ chính sách, ADMIN_POLICY_COMPLIANCE phải trả về setResult(RESULT_OK, Intent) và đóng tất cả màn hình đang hoạt động có finish().

Các thiết bị được quản lý hoàn toàn sẽ đưa người dùng trở lại màn hình chính. Thiết bị có hồ sơ công việc nhắc người dùng thêm tài khoản cá nhân của họ trước khi đưa họ về nhà màn hình.

Chứng thực mã thiết bị cho hồ sơ công việc

DPC được đặt làm quản trị viên của hồ sơ công việc được cấp phép bằng quy trình thiết lập tự động có thể nhận mã thiết bị đã được chứng thực phần cứng bảo mật, chẳng hạn như IMEI hoặc số sê-ri. Thiết bị phải có phần cứng bảo mật (chẳng hạn như môi trường thực thi (TEE) hoặc Phần tử bảo mật (SE) và hỗ trợ mã thiết bị chứng thực và thiết lập tự động.

Thành phần quản trị viên của hồ sơ công việc có thể gọi DevicePolicyManager.generateKeyPair(), truyền một hoặc nhiều ID_TYPE_SERIAL, ID_TYPE_IMEI hoặc ID_TYPE_MEID cho đối số idAttestationFlags.

Để tìm hiểu thêm về cách trích xuất và xác thực mã thiết bị, hãy xem phần Xác minh cặp khoá dựa trên phần cứng bằng chứng thực khoá.

Cải thiện hồ sơ công việc

Có các API mới để hỗ trợ khả năng hiển thị lịch trên nhiều hồ sơ và chặn lượt cài đặt ứng dụng không rõ nguồn gốc trên toàn thiết bị.

Hồ sơ công việc, nguồn không xác định trên toàn thiết bị

Ứng dụng được tải xuống từ các nguồn không phải là Google Play (hoặc ứng dụng đáng tin cậy khác cửa hàng) được gọi là ứng dụng từ các nguồn không xác định. Trên Android 10, quản trị viên công việc hồ sơ có thể ngăn mọi người dùng hoặc hồ sơ cài đặt ứng dụng không xác định nguồn bất kỳ ở đâu trên thiết bị bằng cách thêm giới hạn người dùng mới DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY. Tuy nhiên, sau khi thêm hạn chế này, người sử dụng thiết bị vẫn có thể cài đặt ứng dụng bằng adb.

Để ngăn người dùng cài đặt nhầm ứng dụng không rõ nguồn gốc, chúng tôi đề xuất thêm giới hạn người dùng này vì không cần đến Google Play các dịch vụ được cài đặt. Nếu muốn hỗ trợ những phiên bản Android cũ hơn, bạn có thể đặt giá trị cấu hình được quản lý cho Google Play.

Chỉ cho phép các thiết bị đầu vào được phép sử dụng hồ sơ công việc

Khi quản trị viên của hồ sơ công việc gọi DevicePolicyManager.setPermittedInputMethods(), người dùng chỉ được dùng các phương thức nhập dữ liệu được cho phép trong công việc của họ thay vì toàn bộ thiết bị, giúp người dùng kiểm soát toàn bộ dữ liệu đầu vào trên thiết bị của họ.

Xoá sạch hồ sơ công việc ở chế độ im lặng

Đã thêm WIPE_SILENTLY gắn cờ DevicePolicyManager.wipeData(). Nếu bạn đặt cờ này, người dùng sẽ không được thông báo sau khi xoá hồ sơ công việc của họ đang sử dụng wipeData().

Các tính năng mới dành cho thiết bị được quản lý hoàn toàn

Android 10 giới thiệu các tính năng và API mới dành cho các thiết bị được quản lý hoàn toàn, bao gồm cả việc cập nhật hệ thống theo cách thủ công, mở rộng mã QR và cấp phép NFC cho bao gồm thông tin đăng nhập cho mạng EAP Wi-Fi và hỗ trợ DNS qua TLS.

Cài đặt bản cập nhật hệ thống theo cách thủ công

Trong Android 10, quản trị viên của các thiết bị được quản lý toàn diện có thể cài đặt bản cập nhật hệ thống thông qua tệp cập nhật hệ thống. Các bản cập nhật hệ thống theo cách thủ công cho phép quản trị viên CNTT làm những việc sau:

  • Bạn có thể kiểm thử bản cập nhật trên một số ít thiết bị trước khi cài đặt rộng rãi.
  • Tránh tải xuống trùng lặp trên các mạng bị giới hạn băng thông.
  • Cài đặt xen kẽ hoặc cập nhật thiết bị chỉ khi không sử dụng thiết bị.

Trước tiên, một quản trị viên CNTT đặt một chính sách cập nhật hệ thống bị hoãn để trì hoãn việc cài đặt tự động (nếu cần). Tiếp theo, DPC của thiết bị sẽ gọi installSystemUpdate() có đường dẫn đến tệp cập nhật hệ thống của nhà sản xuất thiết bị. Truyền InstallSystemUpdateCallback mà hệ thống có thể sử dụng để báo cáo lỗi xảy ra trước khi thiết bị sẽ khởi động lại. Nếu xảy ra lỗi, hệ thống sẽ gọi onInstallUpdateError() có mã lỗi.

Sau khi thiết bị khởi động lại, DPC của bạn cần xác nhận cài đặt thành công bằng cách sử dụng API phiên bản, chẳng hạn như Build.FINGERPRINT. Nếu việc cập nhật không thành công, hãy báo cáo lỗi cho quản trị viên CNTT.

Cấp phép EAP Wi-Fi

Trong Android 10, dữ liệu NFC và mã QR dùng để cấp phép thiết bị có thể chứa Cấu hình EAP và thông tin xác thực, bao gồm cả chứng chỉ. Khi một người quét mã QR hoặc nhấn vào một thẻ NFC, thiết bị sẽ tự động xác thực với một mạng Wi-Fi cục bộ bằng EAP và bắt đầu quy trình cấp phép mà không cần thêm đầu vào thủ công.

Để xác thực Wi-Fi bằng EAP, hãy thêm EXTRA_PROVISIONING_WIFI_SECURITY_TYPE có giá trị "EAP". Để chỉ định xác thực EAP, bạn có thể thêm sau đây là các phần bổ sung cấp phép cho ý định của bạn:

Hỗ trợ DNS riêng

Tổ chức có thể sử dụng DNS qua TLS (được gọi là DNS riêng trên thiết bị Android) để tránh rò rỉ truy vấn DNS, kể cả các thông tin của tên máy chủ nội bộ. Thành phần quản trị của thiết bị được quản lý hoàn toàn có thể kiểm soát chế độ cài đặt DNS riêng của thiết bị. Để đặt chế độ DNS riêng, gọi điện:

Khi DPC của bạn gọi một trong hai phương thức này, hệ thống sẽ trả về PRIVATE_DNS_SET_NO_ERROR nếu cuộc gọi đã thành công. Nếu không, hàm này sẽ trả về lỗi.

Để truy xuất chế độ DNS riêng và chế độ cài đặt máy chủ lưu trữ trên một thiết bị, hãy gọi getGlobalPrivateDnsMode()getGlobalPrivateDnsHost(). Bạn có thể ngăn người dùng thay đổi chế độ cài đặt DNS riêng bằng cách thêm DISALLOW_CONFIG_PRIVATE_DNS giới hạn người dùng.

Miễn trừ chế độ khoá VPN

Chế độ khoá VPN cho phép DPC chặn bất kỳ mạng nào lưu lượng truy cập không sử dụng VPN. Quản trị viên của toàn bộ thiết bị được quản lý và hồ sơ công việc có thể miễn trừ ứng dụng khỏi chế độ khoá. Các ứng dụng được miễn trừ sử dụng VPN theo mặc định nhưng sẽ tự động kết nối với các ứng dụng khác mạng nếu không có VPN. Các ứng dụng được miễn trừ cũng rõ ràng đã từ chối truy cập vào VPN (mạng riêng ảo) sẽ chỉ sử dụng các mạng khác.

Để miễn trừ một ứng dụng khỏi chế độ khoá, hãy gọi phương thức mới Phương thức DevicePolicyManager setAlwaysOnVpnPackage() chấp nhận danh sách các gói ứng dụng được miễn trừ. Mọi gói ứng dụng mà DPC thêm vào phải được cài đặt trên thiết bị khi phương thức này được gọi. Nếu một ứng dụng là bị gỡ cài đặt và cài đặt lại, thì ứng dụng phải được miễn trừ một lần nữa. Để tải các ứng dụng trước đây đã được miễn trừ khỏi chế độ khoá, hãy gọi getAlwaysOnVpnLockdownWhitelist().

Để giúp quản trị viên của các thiết bị được quản lý hoàn toàn và hồ sơ công việc sử dụng chế độ khoá trạng thái, Android 10 thêm isAlwaysOnVpnLockdownEnabled() .

Phạm vi uỷ quyền mới

Android 10 mở rộng danh sách chức năng mà DPC có thể uỷ quyền cho các chức năng khác các ứng dụng chuyên biệt. Android nhóm các phương thức API cần thiết cho một tác vụ thành các nhóm phạm vi. Để uỷ quyền cho một phạm vi, hãy gọi setDelegatedScopes() và chuyển một hoặc nhiều phạm vi sau:

Android 10 ra mắt lớp mới DelegatedAdminReceiver cho các ứng dụng được uỷ quyền. Hệ thống sử dụng broadcast receiver này để gửi các phản hồi giống DPC lệnh gọi lại để uỷ quyền ứng dụng. Ứng dụng đã được ủy quyền hoạt động mạng tính năng ghi nhật ký và lựa chọn chứng chỉ sẽ triển khai lớp này. Để thêm nội dung này cho ứng dụng uỷ quyền, hãy làm theo các bước sau:

  1. Thêm một lớp con của DelegatedAdminReceiver cho ứng dụng uỷ quyền.
  2. Khai báo <receiver> trong tệp kê khai ứng dụng, thêm một thao tác bộ lọc ý định cho mỗi lệnh gọi lại. Ví dụ: ACTION_NETWORK_LOGS_AVAILABLE hoặc ACTION_CHOOSE_PRIVATE_KEY_ALIAS.
  3. Bảo vệ broadcast receiver bằng BIND_DEVICE_ADMIN quyền.

Đoạn mã sau đây cho thấy tệp kê khai ứng dụng của một ứng dụng uỷ quyền duy nhất xử lý cả việc ghi nhật ký mạng và lựa chọn chứng chỉ:

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

Ghi nhật ký hoạt động mạng

Để giúp các tổ chức phát hiện và theo dõi phần mềm độc hại, DPC có thể ghi nhật ký các kết nối TCP và DNS theo hệ thống. Trong Android 10, quản trị viên của thành viên được quản lý toàn bộ có thể uỷ quyền ghi nhật ký mạng cho một ứng dụng chuyên biệt.

Để truy xuất nhật ký mạng sau hệ thống cung cấp một lô, ứng dụng được uỷ quyền phải phân lớp con trước DelegatedAdminReceiver (như mô tả trước đó). Trong lớp con của bạn, hãy triển khai phương thức onNetworkLogsAvailable() bằng cách làm theo hướng dẫn trong phần Truy xuất nhật ký.

Các ứng dụng được uỷ quyền có thể gọi những lệnh sau DevicePolicyManager phương thức (truyền null cho đối số admin):

Để tránh bị mất nhật ký, DPC không được bật tính năng ghi nhật ký mạng nếu bạn định uỷ quyền cho một ứng dụng khác. Ứng dụng uỷ quyền phải bật và thu thập nhật ký mạng. Sau khi DPC uỷ quyền ghi nhật ký mạng, DPC sẽ không nhận được onNetworkLogsAvailable() khác lệnh gọi lại.

Để tìm hiểu cách báo cáo nhật ký hoạt động mạng từ một ứng dụng được uỷ quyền, hãy đọc Ghi nhật ký hoạt động mạng dành cho nhà phát triển.

Lựa chọn chứng chỉ

Trong Android 10, quản trị viên của thiết bị được quản lý toàn bộ, hồ sơ công việc và người dùng phụ có thể uỷ quyền chọn chứng chỉ cho một ứng dụng chuyên biệt.

Để chọn bí danh chứng chỉ, trước tiên, các ứng dụng được uỷ quyền phải là lớp con DelegatedAdminReceiver (như mô tả trước đó). Trong lớp con của bạn, hãy triển khai phương thức Lệnh gọi lại onChoosePrivateKeyAlias() và trả về một email đại diện cho một miền ưu tiên chứng chỉ hoặc để nhắc người dùng chọn một chứng chỉ, hãy trả về null.

Ngừng sử dụng các chính sách dành cho quản trị viên thiết bị

Android 10 ngăn các ứng dụng và DPC áp dụng thiết bị cũ quản trị viên. Chúng tôi đề xuất khách hàng và đối tác chuyển sang sử dụng thiết bị hoặc hồ sơ công việc được quản lý toàn bộ. Nội dung sau đây gửi một SecurityException khi được gọi bởi quản trị viên thiết bị nhắm đến Android 10:

Một số ứng dụng sử dụng tính năng quản trị thiết bị để quản trị thiết bị của người dùng thông thường. Cho ví dụ: khoá và xoá sạch dữ liệu trên thiết bị thất lạc. Để bật chế độ này, tiếp tục có sẵn:

Để biết thêm thông tin về những thay đổi này, hãy đọc bài viết Quản trị viên thiết bị không dùng nữa.

Tính năng mới cho ứng dụng

Ứng dụng nhắm đến Android 10 có thể truy vấn độ phức tạp của phương thức khoá màn hình đã đặt trên một thiết bị trước khi hiển thị dữ liệu bảo mật hoặc khởi chạy các tính năng quan trọng. Ứng dụng gọi điện API KeyChain sẽ được hưởng lợi từ cải tiến về hành vi, đồng thời cung cấp các tính năng mới cho ứng dụng VPN.

Kiểm tra chất lượng khoá màn hình

Kể từ Android 10, các ứng dụng có tính năng quan trọng đòi hỏi phải có phương thức khoá màn hình có thể truy vấn độ phức tạp của phương thức khoá màn hình của một thiết bị hoặc hồ sơ công việc. Ứng dụng cần có phương thức khoá màn hình mạnh hơn có thể chuyển người dùng đến chế độ cài đặt khoá màn hình của hệ thống. cho phép họ cập nhật chế độ cài đặt bảo mật.

Cách kiểm tra chất lượng phương thức khoá màn hình:

Để mở phần cài đặt phương thức khoá màn hình của hệ thống, hãy dùng ACTION_SET_NEW_PASSWORD với EXTRA_PASSWORD_COMPLEXITY bổ sung – các tuỳ chọn không đáp ứng sự phức tạp được chỉ định trong ý định bổ sung sẽ chuyển sang màu xám. Người dùng có thể chọn trong số các lựa chọn phương thức khoá màn hình có sẵn hoặc thoát khỏi màn hình.

Phương pháp hay nhất: Hiển thị thông báo trong ứng dụng trước khi khởi chạy hệ thống trang khóa màn hình. Khi ứng dụng của bạn tiếp tục, hãy gọi DevicePolicyManager.getPasswordComplexity() một lần nữa. Nếu bạn vẫn cần phải có một phương thức khoá màn hình mạnh hơn, hãy hạn chế quyền truy cập thay vì liên tục nhắc người dùng cập nhật chế độ cài đặt bảo mật.

Hỗ trợ proxy HTTP trong các ứng dụng VPN

Trong Android 10, các ứng dụng VPN có thể đặt proxy HTTP để kết nối VPN. Để thêm proxy HTTP, ứng dụng VPN phải định cấu hình Thực thể ProxyInfo có máy chủ và cổng, trước khi gọi VpnService.Builder.setHttpProxy(). Hệ thống và nhiều thư viện mạng sử dụng chế độ cài đặt proxy này nhưng hệ thống không buộc ứng dụng phải chuyển các yêu cầu HTTP qua proxy.

Để xem mã mẫu cho biết cách đặt proxy HTTP, hãy xem ToyVPN ứng dụng mẫu.

Chế độ dịch vụ VPN

Các ứng dụng VPN có thể biết được dịch vụ có đang chạy hay không nhờ chế độ luôn bật Vpn và nếu chặn đang hoạt động. Phương thức mới vào Android 10 có thể giúp bạn điều chỉnh giao diện người dùng. Ví dụ: bạn có thể tắt nút ngắt kết nối khi VPN luôn bật kiểm soát vòng đời dịch vụ của bạn.

Các ứng dụng VPN có thể gọi những VpnService sau sau khi kết nối với dịch vụ và thiết lập giao diện cục bộ:

  • isAlwaysOn() đến tìm hiểu xem hệ thống có khởi động dịch vụ hay không nhờ VPN luôn bật
  • isLockdownEnabled() để tìm hiểu xem hệ thống có chặn kết nối không sử dụng VPN

Trạng thái luôn bật sẽ giữ nguyên khi dịch vụ của bạn đang chạy nhưng trạng thái chế độ khoá có thể thay đổi.

Cải tiến chuỗi khoá

Android 10 giới thiệu một số điểm cải tiến liên quan đến KeyChain.

Khi một ứng dụng gọi KeyChain.choosePrivateKeyAlias(), Android 10 trở lên sẽ lọc danh sách chứng chỉ mà người dùng có thể chọn dựa trên nhà phát hành và các thuật toán chính được chỉ định trong lệnh gọi.

Ví dụ: khi máy chủ TLS gửi một Yêu cầu chứng chỉ như một phần của quá trình bắt tay TLS và trình duyệt gọi KeyChain.choosePrivateKeyAlias(), chỉ lời nhắc chọn chứng chỉ có các lựa chọn khớp với thông số của nhà phát hành. Nếu không có tùy chọn phù hợp nào hoặc không có chứng chỉ nào được cài đặt trên thiết bị, thì người dùng sẽ không thấy lời nhắc lựa chọn.

Ngoài ra, KeyChain không còn yêu cầu thiết bị phải có phương thức khoá màn hình trước khi có thể dùng khoá hoặc chứng chỉ CA đã nhập.