Trang này cung cấp thông tin tổng quan về API cho doanh nghiệp, các tính năng và hành vi các thay đổi có trong Android 9.
Giao diện người dùng của hồ sơ công việc
Android 9 (API cấp 28) bao gồm các thay đổi về giao diện người dùng trong mặc định trình chạy để giúp người dùng tách riêng ứng dụng cá nhân và ứng dụng công việc. Nhà sản xuất thiết bị Việc hỗ trợ điều này có thể hiển thị cho người dùng chia sẻ ứng dụng trong các thẻ công việc và thẻ cá nhân riêng biệt. Chúng tôi cũng giúp người dùng thiết bị dễ dàng bật và tắt hồ sơ công việc bằng cách bao gồm cả một nút chuyển trong thẻ công việc của trình chạy.
![](https://developer.android.com/static/images/about/versions/pie/p-work-profile.jpg?authuser=8&hl=vi)
Khi cấp phép hồ sơ công việc và thiết bị được quản lý, Android 9 bao gồm hình minh hoạ động để giúp người dùng thiết bị hiểu các tính năng này.
Chuyển đổi ứng dụng giữa các hồ sơ
Android 9 có các API để khởi chạy một thực thể khác của ứng dụng trong một phiên bản khác
để giúp người dùng chuyển đổi giữa các tài khoản. Ví dụ: một ứng dụng email có thể
cung cấp một giao diện người dùng cho phép người dùng chuyển đổi giữa hồ sơ cá nhân và công việc
để truy cập hai tài khoản email. Tất cả ứng dụng đều có thể gọi các API này để khởi chạy
hoạt động chính của cùng một ứng dụng nếu ứng dụng đó đã được cài đặt trong hồ sơ khác. Người nhận
thêm tài khoản chuyển đổi giữa nhiều hồ sơ sang ứng dụng của bạn, hãy làm theo các bước bên dưới để gọi
của
Lớp CrossProfileApps
:
- Gọi
getTargetUserProfiles()
để nhận danh sách các cấu hình khác mà bạn có thể khởi chạy một phiên bản khác của ứng dụng. Phương thức này kiểm tra ứng dụng đó được cài đặt trong hồ sơ. - Gọi
getProfileSwitchingIconDrawable()
để nhận biểu tượng mà bạn có thể dùng để đại diện cho hồ sơ khác. - Gọi
getProfileSwitchingLabel()
để nhận văn bản đã bản địa hoá nhắc người dùng chuyển đổi hồ sơ. - Gọi
startMainActivity()
để khởi chạy một thực thể của ứng dụng của bạn trong một hồ sơ khác.
Kiểm tra để đảm bảo hoạt động chính bạn muốn chạy đã được khai báo trong ứng dụng
tệp kê khai, với thao tác theo ý định ACTION_MAIN
và bao gồm
một danh mục ý định CATEGORY_LAUNCHER
.
Bật hoặc tắt hồ sơ công việc theo phương thức lập trình
Trình chạy mặc định (hoặc các ứng dụng có quyền MANAGE_USERS
hoặc
MODIFY_QUIET_MODE
) có thể bật hoặc tắt hồ sơ công việc bằng cách gọi
UserManager.requestQuietModeEnabled()
. Bạn có thể
hãy kiểm tra giá trị trả về để biết liệu người dùng có cần xác nhận
thông tin xác thực trước khi trạng thái thay đổi. Vì có thể thay đổi này sẽ không xảy ra
ngay lập tức, hãy nghe
ACTION_MANAGED_PROFILE_AVAILABLE
hoặc
ACTION_MANAGED_PROFILE_UNAVAILABLE
truyền tin để biết thời điểm cập nhật giao diện người dùng.
Ứng dụng của bạn có thể kiểm tra trạng thái của hồ sơ công việc bằng cách gọi
UserManager.isQuietModeEnabled()
.
Khoá bất kỳ ứng dụng nào với một thiết bị
Kể từ Android 9, chủ sở hữu thiết bị và chủ sở hữu hồ sơ (của người dùng phụ) có thể khoá bất kỳ ứng dụng nào trên màn hình của thiết bị bằng cách đặt ứng dụng đó ở chế độ khoá tác vụ. Trước đây, nhà phát triển ứng dụng phải thêm tính năng hỗ trợ cho tác vụ khoá trong ứng dụng của họ. Android 9 cũng mở rộng tác vụ khoá Các API để lập hồ sơ chủ sở hữu của người dùng phụ không liên kết. Hãy làm theo các bước dưới đây để khoá một ứng dụng vào màn hình:
- Gọi
DevicePolicyManager.setLockTaskPackages()
tới cho phép các ứng dụng bật chế độ khoá tác vụ. - Gọi
ActivityOptions.setLockTaskEnabled()
để chạy một ứng dụng trong danh sách cho phép ở chế độ khoá tác vụ.
Để dừng một ứng dụng ở chế độ khoá tác vụ, hãy xoá ứng dụng đó khỏi chế độ khoá tác vụ
danh sách cho phép đang sử dụng
DevicePolicyManager.setLockTaskPackages()
.
Bật các tính năng giao diện người dùng hệ thống
Khi chế độ khoá tác vụ được bật, chủ sở hữu thiết bị và chủ sở hữu hồ sơ có thể bật
một số tính năng giao diện người dùng hệ thống trên thiết bị bằng cách gọi
DevicePolicyManager.setLockTaskFeatures()
và truyền một
trường bit của các cờ tính năng sau:
LOCK_TASK_FEATURE_NONE
LOCK_TASK_FEATURE_SYSTEM_INFO
LOCK_TASK_FEATURE_HOME
LOCK_TASK_FEATURE_NOTIFICATIONS
Chỉ có thể sử dụng kết hợp vớiLOCK_TASK_FEATURE_HOME
.LOCK_TASK_FEATURE_KEYGUARD
LOCK_TASK_FEATURE_OVERVIEW
Chỉ có thể sử dụng kết hợp vớiLOCK_TASK_FEATURE_HOME
.LOCK_TASK_FEATURE_GLOBAL_ACTIONS
Bạn có thể gọi DevicePolicyManager.getLockTaskFeatures()
để xem danh sách các tính năng có trên thiết bị khi chế độ khoá tác vụ là
bật. Khi thoát khỏi chế độ khoá tác vụ, thiết bị sẽ trở về trạng thái do
các chính sách thiết bị khác.
Loại bỏ hộp thoại lỗi
Trong một số môi trường, chẳng hạn như các khu trưng bày bán lẻ hoặc thông tin công khai
bạn không nên cho người dùng thấy hộp thoại lỗi. Chính sách thiết bị
bộ điều khiển (DPC) có thể chặn hộp thoại lỗi hệ thống đối với sự cố hoặc không phản hồi
bằng cách thêm
DISALLOW_SYSTEM_ERROR_DIALOGS
người dùng
. Quy định hạn chế này ảnh hưởng đến tất cả các hộp thoại khi chủ sở hữu thiết bị áp dụng
nhưng chỉ các hộp thoại lỗi hiển thị ở người dùng chính hoặc phụ mới bị chặn
khi chủ sở hữu trang doanh nghiệp áp dụng quy định hạn chế. Quy định hạn chế này không
ảnh hưởng đến hồ sơ công việc.
Trong Android 9, các ứng dụng chạy ở chế độ toàn màn hình chìm chế độ không hiển thị bong bóng lời nhắc khi ở trong chế độ khoá tác vụ. Bong bóng lời nhắc là một bảng điều khiển mà người dùng nhìn thấy (trong lần khởi chạy đầu tiên) giải thích cách thoát khỏi chế độ hiển thị tối đa.
Hỗ trợ nhiều người dùng trên các thiết bị chuyên dụng
Android 9 ra mắt khái niệm người dùng tạm thời dành cho thiết bị (trước đây gọi là thiết bị cosU). Người dùng tạm thời người dùng ngắn hạn dành cho trường hợp nhiều người dùng sử dụng chung một trang thiết bị chuyên dụng. Dữ liệu này bao gồm các phiên công khai của người dùng trên các thiết bị như thư viện hoặc các quầy đăng ký nhận phòng của khách sạn cũng như các phiên liên tục giữa nhóm người dùng trên thiết bị, ví dụ: shift worker.
Bạn phải tạo người dùng tạm thời trong nền. Chúng được tạo dưới dạng người dùng phụ trên thiết bị và sẽ bị xoá (cùng với các ứng dụng và dữ liệu) khi chúng bị dừng, chuyển đổi hoặc thiết bị khởi động lại. Để tạo một người dùng tạm thời, chủ sở hữu thiết bị có thể:
- Đặt cờ
MAKE_USER_EPHEMERAL
khi gọiDevicePolicyManager.createAndManageUser()
. - Gọi
DevicePolicyManager.startUserInBackground()
để khởi động người dùng tạm thời trong nền.
Lưu ý: Các ứng dụng nhắm đến Android 9 sẽ nắm bắt
UserManager.UserOperationException
khi gọi
createAndManageUser()
. Gọi các ngoại lệ
getUserOperationResult()
để tìm hiểu lý do
không được tạo.
Nhận thông báo sự kiện
DeviceAdminReceiver
nhận thông báo về
các sự kiện sau:
onUserStarted()
: Được gọi khi người dùng bắt đầu.onUserSwitched()
: Được gọi khi một công cụ chuyển đổi người dùng đã hoàn tất.onUserStopped()
: Được gọi cùng vớionUserRemoved()
khi người dùng dừng hoặc ghi nhật ký .
Hiện thông báo sự kiện cho người dùng
Chủ sở hữu thiết bị có thể định cấu hình các thông báo mà người dùng nhìn thấy khi họ bắt đầu và kết thúc phiên của họ:
- Sử dụng
DevicePolicyManager.setStartUserSessionMessage()
để đặt thông báo hiển thị với người dùng khi phiên của người dùng bắt đầu. Người nhận truy xuất tin nhắn, cuộc gọiDevicePolicyManager.getStartUserSessionMessage()
. - Sử dụng
DevicePolicyManager.setEndUserSessionMessage()
để đặt thông báo hiển thị với người dùng khi phiên của người dùng kết thúc. Người nhận truy xuất tin nhắn, cuộc gọiDevicePolicyManager.getEndUserSessionMessage()
.
Đăng xuất và ngăn người dùng
Chủ sở hữu thiết bị có thể sử dụng
DevicePolicyManager.setLogoutEnabled()
để chỉ định xem
tính năng đăng xuất được bật đối với người dùng phụ. Để kiểm tra xem tính năng đăng xuất đã được bật hay chưa, hãy gọi
DevicePolicyManager.isLogoutEnabled()
.
Chủ sở hữu hồ sơ của người dùng phụ có thể gọi
DevicePolicyManager.logoutUser()
để ngăn người dùng phụ và
chuyển về người dùng chính.
Chủ sở hữu thiết bị có thể sử dụng DevicePolicyManager.stopUser()
để dừng
người dùng phụ đã chỉ định.
Lưu gói vào bộ nhớ đệm
Để đơn giản hoá việc cấp phép người dùng trên các thiết bị dùng chung với một nhóm người dùng cố định, chẳng hạn như thiết bị cho shift worker có thể lưu vào bộ nhớ đệm các gói cần thiết cho phiên nhiều người dùng:
Gọi điện
DevicePolicyManager.setKeepUninstalledPackages()
để chỉ định danh sách các gói được giữ lại dưới dạng APK. Để truy xuất danh sách các lựa chọn này gói hàng, gọiDevicePolicyManager.getKeepUninstalledPackages()
.Gọi
DevicePolicyManager.installExistingPackage()
để cài đặt một gói đã được lưu giữ sau khi xoá quasetKeepUninstalledPackages()
.
Phương thức và hằng số bổ sung
Android 9 cũng bao gồm các phương thức và hằng số sau để hỗ trợ thêm phiên hoạt động của người dùng trên các thiết bị dùng chung:
DevicePolicyManager.getSecondaryUsers()
nhận danh sách tất cả người dùng phụ trên một thiết bị.DISALLOW_USER_SWITCH
là một giới hạn đối với người dùng mà bạn có thể bật bằng cách gọiDevicePolicyManager.addUserRestriction()
để chặn chuyển đổi người dùng.LEAVE_ALL_SYSTEM_APPS_ENABLED
là một cờ có sẵn choDevicePolicyManager.createAndManageUser()
. Khi đặt, ứng dụng hệ thống không bị tắt trong quá trình cấp phép người dùng.UserManager.UserOperationException
được gửi bởiDevicePolicyManager.createAndManageUser()
khi không thể tạo người dùng — tức là ngoại lệ chứa lý do không thành công.
Xoá dữ liệu gói và loại bỏ tài khoản
Chủ sở hữu thiết bị và chủ sở hữu hồ sơ có thể gọi
clearApplicationUserData()
để xoá dữ liệu người dùng
cho một gói cụ thể. Để xoá tài khoản khỏi
AccountManager
, chủ sở hữu thiết bị và hồ sơ có thể gọi
removeAccount()
.
Các hạn chế đối với người dùng và tăng cường quyền kiểm soát đối với chế độ cài đặt
Android 9 đưa ra một bộ hạn chế người dùng đối với DPC cũng như khả năng định cấu hình APN, thời gian và múi giờ cũng như các chế độ cài đặt hệ thống trên thiết bị.
Định cấu hình APN
Chủ sở hữu thiết bị có thể sử dụng các phương thức sau trong
Lớp DevicePolicyManager
để định cấu hình APN trên
thiết bị:
addOverrideApn()
updateOverrideApn()
removeOverrideApn()
getOverrideApns()
setOverrideApnEnabled()
isOverrideApnEnabled()
Định cấu hình thời gian và múi giờ
Chủ sở hữu thiết bị có thể sử dụng các phương thức sau trong
Lớp DevicePolicyManager
để đặt giờ và múi giờ
trên một thiết bị:
Thực thi các hạn chế đối với người dùng đối với các chế độ cài đặt quan trọng
Android 9 bổ sung một số hạn chế đối với người dùng để tắt các tính năng và chế độ cài đặt của hệ thống. Người nhận
thêm một hạn chế, gọi
DevicePolicyManager.addUserRestriction()
bằng một trong
hằng số UserManager
sau đây:
DISALLOW_AIRPLANE_MODE
DISALLOW_AMBIENT_DISPLAY
DISALLOW_CONFIG_BRIGHTNESS
DISALLOW_CONFIG_DATE_TIME
DISALLOW_CONFIG_LOCATION
DISALLOW_CONFIG_SCREEN_TIMEOUT
DISALLOW_PRINTING
Nếu DISALLOW_CONFIG_BRIGHTNESS
và
DISALLOW_CONFIG_SCREEN_TIMEOUT
được thực thi
trên một thiết bị, chủ sở hữu thiết bị vẫn có thể đặt màn hình
độ sáng, độ sáng màn hình
chế độ và thời gian chờ khoá màn hình
trên thiết bị bằng API
DevicePolicyManager.setSystemSetting()
.
Dữ liệu có đo lượng dữ liệu
Chủ sở hữu thiết bị và chủ sở hữu hồ sơ có thể ngăn các ứng dụng dùng
mạng dữ liệu có đo lượng dữ liệu. Mạng được coi là có đo lượng dữ liệu khi người dùng
nhạy cảm với việc sử dụng nhiều dữ liệu do chi phí, giới hạn dữ liệu hoặc pin và
các vấn đề về hiệu suất. Để ngăn các ứng dụng sử dụng mạng có đo lượng dữ liệu, hãy gọi
DevicePolicyManager.setMeteredDataDisabledPackages()
truyền danh sách tên gói. Để truy xuất các ứng dụng hiện bị hạn chế, hãy gọi
DevicePolicyManager.getMeteredDataDisabledPackages()
.
Để tìm hiểu thêm về dữ liệu có đo lượng dữ liệu trong Android, hãy đọc bài viết Tối ưu hoá dữ liệu mạng Mức sử dụng.
Di chuyển DPC
Trình kiểm soát chính sách thiết bị (DPC) có thể chuyển quyền sở hữu của họ đối với một thiết bị hoặc hồ sơ công việc sang DPC khác. Bạn có thể chuyển quyền sở hữu để di chuyển một số đối tượng vào ứng dụng Quản lý Android API để di chuyển thiết bị từ DPC cũ hoặc giúp quản trị viên CNTT di chuyển sang EMM của bạn. Vì bạn chỉ khi thay đổi quyền sở hữu DPC, bạn không thể sử dụng tính năng này để thay đổi loại quản lý, ví dụ: di chuyển từ một thiết bị được quản lý sang một hồ sơ công việc hoặc ngược lại.
Bạn có thể sử dụng tài nguyên XML chính sách quản trị thiết bị để
cho biết rằng phiên bản DPC này của bạn có hỗ trợ di chuyển. DPC mục tiêu
cho biết phần tử có thể nhận quyền sở hữu bằng cách bao gồm một phần tử có tên
<support-transfer-ownership>
. Ví dụ bên dưới cho thấy cách bạn có thể thực hiện điều này trong
tệp XML quản trị thiết bị của DPC:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<support-transfer-ownership />
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
</uses-policies>
</device-admin>
DPC muốn di chuyển quyền sở hữu sang ứng dụng DPC mới có thể kiểm tra xem
phiên bản hỗ trợ di chuyển bằng cách gọi phương thức DeviceAdminInfo
supportsTransferOwnership()
. Trước khi chuyển
quyền sở hữu, bạn chịu trách nhiệm của DPC nguồn trong việc xác minh DPC mục tiêu bằng
so sánh chữ ký ứng dụng. Lớp PackageManager
bao gồm
để hoạt động với chữ ký ký mã.
Android duy trì hệ thống và chính sách người dùng của DPC nguồn thông qua quyền sở hữu
chuyển giao—DPC không cần phải di chuyển các trình xử lý này. DPC nguồn có thể truyền dữ liệu tuỳ chỉnh đến
DPC mục tiêu bằng cách sử dụng các cặp khoá-giá trị trong PersistableBundle
. Sau một
chuyển thành công, DPC mục tiêu có thể truy xuất dữ liệu này bằng cách gọi
DevicePolicyManager.getTransferOwnershipBundle()
.
Các bước để chuyển quyền sở hữu một thiết bị được quản lý hoặc hồ sơ công việc là: tương tự:
- DPC nguồn kiểm tra để đảm bảo rằng phiên bản của DPC mục tiêu hỗ trợ di chuyển và xác nhận rằng chữ ký ứng dụng của DPC mục tiêu khớp với giá trị dự kiến.
- DPC nguồn gọi
transferOwnership()
để bắt đầu chuyển. - Hệ thống đặt DPC mục tiêu làm quản trị viên đang hoạt động và đặt thiết bị đó với tư cách là chủ sở hữu của thiết bị hoặc hồ sơ công việc được quản lý.
- DPC mục tiêu nhận lệnh gọi lại
onTransferOwnershipComplete()
và có thể định cấu hình bằng cách sử dụng các giá trị từ đối sốbundle
. - Nếu có vấn đề trong quá trình chuyển, hệ thống sẽ chuyển quyền sở hữu về
DPC nguồn. Nếu DPC nguồn của bạn cần xác nhận rằng việc chuyển quyền sở hữu
đã thành công, hãy gọi
isAdminActive()
để kiểm tra nhằm đảm bảo rằng DPC nguồn không còn là quản trị viên đang hoạt động.
Tất cả ứng dụng chạy trong hồ sơ công việc đều nhận được
ACTION_PROFILE_OWNER_CHANGED
phát đi khi
chủ sở hữu trang doanh nghiệp thay đổi. Ứng dụng chạy trên thiết bị được quản lý sẽ nhận được
ACTION_DEVICE_OWNER_CHANGED
phát đi khi
chủ sở hữu thiết bị thay đổi.
Hồ sơ công việc trên các thiết bị được quản lý đầy đủ
Chuyển hai phiên bản của DPC đang chạy với tư cách là chủ sở hữu thiết bị và chủ sở hữu hồ sơ diễn ra theo hai giai đoạn. Khi hồ sơ cá nhân và hồ sơ công việc được được liên kết, hãy hoàn tất quá trình chuyển theo thứ tự sau:
- Trước tiên, hãy chuyển quyền sở hữu hồ sơ công việc.
- Chờ lệnh gọi lại
DeviceAdminReceiver
onTransferAffiliatedProfileOwnershipComplete()
để xác nhận rằng hồ sơ công việc đã được chuyển sang DPC mục tiêu. - Cuối cùng, chuyển quyền sở hữu thiết bị được quản lý sang DPC mục tiêu.
Trì hoãn bản cập nhật qua mạng không dây (OTA)
Chủ sở hữu thiết bị có thể trì hoãn việc cập nhật hệ thống qua mạng không dây cho thiết bị trong tối đa 90 ngày để cố định phiên bản hệ điều hành chạy trên các thiết bị này trong khoảng thời gian quan trọng (chẳng hạn như ngày lễ). Hệ thống thực thi vùng đệm 60 ngày bắt buộc sau bất kỳ vùng đệm nào được xác định thời gian treo để tránh làm treo thiết bị vô thời hạn.
Trong thời gian bị treo:
- Thiết bị không nhận được thông báo nào về các bản cập nhật OTA đang chờ xử lý.
- Thiết bị không cài đặt bản cập nhật OTA cho hệ điều hành.
- Người dùng thiết bị không thể tự kiểm tra bản cập nhật OTA trong phần Cài đặt.
Để đặt khoảng thời gian cố định, hãy gọi
SystemUpdatePolicy.setFreezePeriods()
. Do thời tiết đóng băng
chu kỳ lặp lại hàng năm, ngày bắt đầu và ngày kết thúc của kỳ được biểu thị
theo số nguyên đếm số ngày kể từ đầu năm. Ngày bắt đầu phải
bắt đầu ít nhất 60 ngày sau khi kết thúc khoảng thời gian tạm ngưng trước đó. Thiết bị
chủ sở hữu có thể gọi SystemUpdatePolicy.getFreezePeriods()
để
lấy danh sách khoảng thời gian đóng băng đã đặt trước đó trên đối tượng chính sách cập nhật hệ thống.
DevicePolicyManager.getSystemUpdatePolicy()
đã được
để trả về khoảng thời gian đóng băng bất kỳ do chủ sở hữu thiết bị đặt.
Hạn chế chia sẻ trong hồ sơ công việc
Chủ sở hữu hồ sơ có thể ngăn người dùng chia sẻ dữ liệu cá nhân vào hồ sơ công việc
trên thiết bị này bằng cách thêm giới hạn người dùng
DISALLOW_SHARE_INTO_MANAGED_PROFILE
.
Quy định hạn chế này ngăn cản việc xử lý và chia sẻ ý định sau đây:
- Ứng dụng hồ sơ cá nhân chia sẻ dữ liệu và tệp với ứng dụng hồ sơ công việc.
- Ứng dụng hồ sơ công việc chọn các mục trong hồ sơ cá nhân (ví dụ: ảnh hoặc tệp.
Sau khi đặt hạn chế này, DPC của bạn vẫn có thể cho phép Hoạt động trên nhiều hồ sơ
ý định bằng cách gọi
addCrossProfileIntentFilter()
.
Khoá được bảo mật phần cứng và chứng chỉ máy
Android 9 thêm các API để giúp bạn làm việc với các khoá và chứng chỉ mà bạn có thể kết hợp để nhận dạng các thiết bị một cách an toàn. DPC đang chạy trong thiết bị hoặc chủ sở hữu hồ sơ chế độ chủ sở hữu hoặc trình cài đặt chứng chỉ được uỷ quyền có thể hoàn thành các nhiệm vụ sau:
- Tạo khoá và chứng chỉ trong 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) của thiết bị Android. Chiến lược phát hành đĩa đơn
các khoá đã tạo không bao giờ rời khỏi phần cứng bảo mật và có thể được dùng trong gói Android
KeyChain. Gọi điện
DevicePolicyManager.generateKeyPair()
cung cấp thuật toán (xemKeyPairGenerator
) và mọi mã phần cứng mà bạn muốn chứng thực, chẳng hạn như số sê-ri hoặc IMEI. Để tìm hiểu thêm về các tính năng bảo mật các thay đổi về phần cứng, hãy xem phần Bảo mật của Android 9 các tính năng nâng cao. - Liên kết chứng chỉ với một khoá hiện có do thiết bị tạo. Gọi điện
DevicePolicyManager.setKeyPairCertificate()
cung cấp bí danh của khoá hiện có và chuỗi chứng chỉ – bắt đầu bằng lá và bao gồm chuỗi tin cậy theo thứ tự. - Trước khi sử dụng, hãy kiểm tra để đảm bảo phần cứng bảo mật đã bảo vệ khoá. Để kiểm tra cơ chế bảo vệ khoá, hãy làm theo các bước trong phần Khoá Chứng thực.
- Chủ sở hữu thiết bị và trình cài đặt chứng chỉ được uỷ quyền có thể nhận được
bảng sao kê của các thiết bị ID phần cứng với các phiên bản hệ thống Android. Gọi điện
DevicePolicyManager.generateKeyPair()
truyền một hoặc nhiều trong tổng sốID_TYPE_BASE_INFO
,ID_TYPE_SERIAL
,ID_TYPE_IMEI
hoặcID_TYPE_MEID
trongidAttestationFlags
đối số. Chứng chỉ được trả về bao gồm phần cứng Mã nhận dạng trong bản ghi chứng thực. Nếu bạn không muốn thêm mã phần cứng, hãy truyền0
. Chủ sở hữu hồ sơ chỉ có thể nhận được thông tin về nhà sản xuất (bằng cách chuyểnID_TYPE_BASE_INFO
). Để kiểm tra xem thiết bị có thể chứng thực mã nhận dạng hay không, hãy gọiisDeviceIdAttestationSupported()
. - Ngăn người dùng thiết bị sử dụng khoá doanh nghiệp sai mục đích (trong các tác vụ không phải của doanh nghiệp)
bằng cách bỏ chọn các chứng chỉ chính. Hệ thống này không bao gồm
các chứng chỉ không thể bỏ chọn trong bảng điều khiển bộ chọn. Trong
DeviceAdminReceiver.onChoosePrivateKeyAlias()
hãy trả về bí danh cho khoá doanh nghiệp của bạn để hệ thống tự động chọn chứng chỉ thay mặt cho người dùng. Để tạo một khoá không thể bỏ chọn, hãy gọi các phương thứcDevicePolicyManager
sau:setKeyPairCertificate()
và truyềnfalse
cho đối sốisUserSelectable
.installKeyPair (ComponentName, PrivateKey, Certificate[], String, int)
và bỏINSTALLKEY_SET_USER_SELECTABLE
khỏi đối sốflags
.
Bằng cách kết hợp các API này, doanh nghiệp có thể xác định thiết bị và xác nhận một cách an toàn tính toàn vẹn của mình trước khi cấp quyền truy cập:
- Thiết bị Android tạo một khoá riêng tư mới trong phần cứng bảo mật. Vì khoá riêng tư không bao giờ rời khỏi phần cứng bảo mật, nên khoá vẫn sẽ ở chế độ bí mật.
- Thiết bị sử dụng khoá này để tạo và gửi yêu cầu ký chứng chỉ (CSR) đến máy chủ. CSR bao gồm bản ghi chứng thực chứa mã thiết bị.
- Máy chủ xác thực chuỗi chứng chỉ (được can thiệp vào hệ thống theo một chứng chỉ của Google) và trích xuất siêu dữ liệu của thiết bị từ bản ghi chứng thực.
- Máy chủ xác nhận rằng phần cứng bảo mật bảo vệ khoá riêng tư và để đảm bảo mã thiết bị khớp với bản ghi của doanh nghiệp. Máy chủ cũng có thể kiểm tra hệ thống và các phiên bản bản vá của Android đáp ứng mọi yêu cầu.
- Máy chủ tạo một chứng chỉ từ CSR và gửi chứng chỉ đến thiết bị.
- Thiết bị ghép nối chứng chỉ với khoá riêng tư (chứng chỉ vẫn còn trong phần cứng bảo mật) cho phép các ứng dụng kết nối với các dịch vụ dành cho doanh nghiệp.
Các thay đổi, tính năng và API bảo mật khác
Mã nhận dạng của nhật ký bảo mật và nhật ký mạng
Android 9 có mã nhận dạng trong nhật ký bảo mật và nhật ký hoạt động mạng. Mã nhận dạng dạng số tăng đơn điệu cho mỗi sự kiện, giúp quản trị viên CNTT dễ dàng phát hiện lỗ hổng trong nhật ký của họ. Vì nhật ký bảo mật và nhật ký mạng tách biệt với nhau tập hợp, hệ thống sẽ duy trì các giá trị mã nhận dạng riêng biệt.
Gọi SecurityEvent.getId()
,
DnsEvent.getId()
hoặc
ConnectEvent.getId()
để nhận giá trị mã nhận dạng. Hệ thống
đặt lại mã nhận dạng này mỗi khi DPC bật tính năng ghi nhật ký hoặc khi thiết bị khởi động lại.
Nhật ký bảo mật được tìm nạp bằng cách gọi
DevicePolicyManager.retrievePreRebootSecurityLogs()
không bao gồm các mã này.
Ghi nhật ký bảo mật
Tính năng ghi nhật ký bảo mật sẽ chỉ định một cấp độ nhật ký cho mỗi SecurityEvent
. Để biết cấp độ nhật ký,
gọi getLogLevel()
. Phương thức này trả về một giá trị cấp độ nhật ký
có thể là một trong các trạng thái sau: LEVEL_INFO
, LEVEL_WARNING
hoặc
LEVEL_ERROR
.
Android 9 ghi lại các sự kiện được liệt kê trong bảng dưới đây vào chế độ bảo mật
nhật ký. Để kiểm tra thẻ của một sự kiện, hãy gọi getTag()
. Người nhận
truy xuất dữ liệu sự kiện, hãy gọi getData()
.
Thẻ | Nội dung mô tả sự kiện |
---|---|
TAG_CERT_AUTHORITY_INSTALLED |
Cố gắng cài đặt chứng chỉ gốc mới vào bộ nhớ thông tin xác thực của hệ thống. |
TAG_CERT_AUTHORITY_REMOVED |
Thao tác xoá chứng chỉ gốc khỏi bộ nhớ thông tin xác thực của hệ thống. |
TAG_CERT_VALIDATION_FAILURE |
Chứng chỉ Wi-Fi không vượt qua được quy trình kiểm tra xác thực trong khi kết nối. |
TAG_CRYPTO_SELF_TEST_COMPLETED |
Hệ thống đã hoàn tất quá trình tự kiểm tra mật mã. |
TAG_KEYGUARD_DISABLED_FEATURES_SET |
Một ứng dụng quản trị đã tắt các tính năng của màn hình khoá của thiết bị hoặc hồ sơ công việc. |
TAG_KEY_DESTRUCTION |
Hành động xoá một khoá mã hoá. |
TAG_KEY_GENERATED |
Cố gắng tạo một khoá mã hoá mới. |
TAG_KEY_IMPORT |
Nỗ lực nhập một khoá mã hoá mới. |
TAG_KEY_INTEGRITY_VIOLATION |
Android phát hiện thấy một khoá mã hoá hoặc xác thực bị hỏng. |
TAG_LOGGING_STARTED |
Tính năng ghi nhật ký bảo mật đã bắt đầu ghi. |
TAG_LOGGING_STOPPED |
Tính năng ghi nhật ký bảo mật đã dừng ghi. |
TAG_LOG_BUFFER_SIZE_CRITICAL |
Vùng đệm nhật ký bảo mật đã đạt 90% dung lượng. |
TAG_MAX_PASSWORD_ATTEMPTS_SET |
Một ứng dụng quản trị đặt số lần nhập sai mật khẩu được phép. |
TAG_MAX_SCREEN_LOCK_TIMEOUT_SET |
Ứng dụng quản trị đặt thời gian chờ khoá màn hình tối đa. |
TAG_MEDIA_MOUNT |
Thiết bị đã gắn phương tiện lưu trữ di động. |
TAG_MEDIA_UNMOUNT |
Thiết bị đã tháo phương tiện bộ nhớ di động. |
TAG_OS_SHUTDOWN |
Tắt hệ thống Android. |
TAG_OS_STARTUP |
Hệ thống Android đã khởi động. |
TAG_PASSWORD_COMPLEXITY_SET |
Các yêu cầu về độ phức tạp của chế độ cài đặt mật khẩu trong ứng dụng quản trị. |
TAG_PASSWORD_EXPIRATION_SET |
Một ứng dụng quản trị đặt khoảng thời gian hết hạn mật khẩu. |
TAG_PASSWORD_HISTORY_LENGTH_SET |
Ứng dụng quản trị viên đặt độ dài cho nhật ký mật khẩu để ngăn người dùng sử dụng lại mật khẩu cũ. |
TAG_REMOTE_LOCK |
Ứng dụng quản trị đã khoá thiết bị hoặc hồ sơ công việc. |
TAG_USER_RESTRICTION_ADDED |
Một ứng dụng quản trị đã thiết lập giới hạn đối với người dùng. |
TAG_USER_RESTRICTION_REMOVED |
Ứng dụng quản trị đã xoá một chế độ hạn chế người dùng. |
TAG_WIPE_FAILURE |
Không xoá được thiết bị hoặc hồ sơ công việc. |
Thử thách trên màn hình khoá hồ sơ công việc
Kể từ Android 9, chủ sở hữu hồ sơ có thể yêu cầu người dùng đặt một phương thức khoá riêng
thử thách trên màn hình cho hồ sơ công việc của họ bằng cách sử dụng
Giới hạn người dùng DISALLOW_UNIFIED_PASSWORD
. Người nhận
kiểm tra xem người dùng có đặt cùng một thử thách màn hình khoá cho thiết bị của họ hay không và
hồ sơ công việc, cuộc gọi
DevicePolicyManager.isUsingUnifiedPassword()
.
Nếu thiết bị có màn hình khoá hồ sơ công việc riêng biệt,
DevicePolicyManager.setMaximumTimeToLock()
chỉ đặt
thay vì hết thời gian chờ khoá màn hình cho hồ sơ công việc thay vì cho toàn bộ thiết bị.
Quyền truy cập vào công cụ dành cho nhà phát triển
Để giúp duy trì dữ liệu công việc trong hồ sơ công việc, công cụ Cầu gỡ lỗi Android (adb) không thể truy cập vào các thư mục và tệp trong hồ sơ công việc.
Hỗ trợ thêm nhiều lựa chọn về sinh trắc học
Android 9 bổ sung khả năng kiểm soát chi tiết đối với phương thức xác thực phần cứng sinh trắc học trong một
màn hình khoá của hồ sơ công việc. Gọi phương thức hiện có
DevicePolicyManager.setKeyguardDisabledFeatures()
bằng KEYGUARD_DISABLE_FACE
và
KEYGUARD_DISABLE_IRIS
.
Để tắt tất cả các phương thức xác thực bằng sinh trắc học do thiết bị cung cấp, hãy thêm KEYGUARD_DISABLE_BIOMETRICS
.
Ngừng sử dụng các chính sách dành cho quản trị viên thiết bị
Android 9 đánh dấu các chính sách được liệt kê dưới đây là không dùng nữa đối với DPC sử dụng thiết bị quản trị viên. Các chính sách này sẽ tiếp tục hoạt động trong Android 9 như họ đã làm trước đây. Kể từ bản phát hành Android 10, chính sách tương tự sẽ gửi ra một SecurityException khi quản trị viên thiết bị gọi.
USES_POLICY_DISABLE_CAMERA
USES_POLICY_DISABLE_KEYGUARD_FEATURES
USES_POLICY_EXPIRE_PASSWORD
USES_POLICY_LIMIT_PASSWORD
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. Các chính sách sau đây sẽ tiếp tục hoạt động có sẵn để bật tính năng này:
Để 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.
Đơn giản hoá quy trình đăng ký mã QR
Thư viện mã QR tích hợp sẵn
Android 9 đi kèm với một thư viện QR để đơn giản hoá thiết bị mã QR cấp phép. Quản trị viên CNTT không còn phải nhập thông tin Wi-Fi để thiết lập theo cách thủ công một thiết bị. Thay vào đó, với Android 9, bạn có thể thêm những thông tin chi tiết này về Wi-Fi trong mã QR. Khi quản trị viên CNTT quét mã QR bằng mã của công ty thiết bị sẽ tự động kết nối với Wi-Fi và chuyển vào cấp phép mà không có bất kỳ thông tin đầu vào thủ công nào khác.
Phương thức cấp phép mã QR hỗ trợ các tính năng cấp phép bổ sung sau đây cho chỉ định thông tin chi tiết về Wi-Fi:
EXTRA_PROVISIONING_WIFI_HIDDEN
EXTRA_PROVISIONING_WIFI_PAC_URL
EXTRA_PROVISIONING_WIFI_PASSWORD
EXTRA_PROVISIONING_WIFI_PROXY_BYPASS
EXTRA_PROVISIONING_WIFI_PROXY_HOST
EXTRA_PROVISIONING_WIFI_PROXY_PORT
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
EXTRA_PROVISIONING_WIFI_SSID
Đặt ngày và múi giờ bằng cách sử dụng phần bổ sung cấp phép
Phương thức cấp phép mã QR hỗ trợ cấp phép bổ sung để đặt thời gian và múi giờ trên một thiết bị:
Đang xoá tuỳ chọn dữ liệu
Quản trị viên thiết bị có thể hiện thông báo dành riêng cho người dùng khi xoá một công việc
hoặc người dùng phụ. Thông báo này giúp người dùng thiết bị hiểu rằng
Quản trị viên CNTT đã xoá hồ sơ công việc hoặc người dùng phụ này. Gọi điện
wipeData(int, CharSequence)
và cung cấp một
nội dung giải thích. Khi người dùng chính hoặc chủ sở hữu thiết bị gọi, hệ thống
không hiển thị thông báo và bắt đầu đặt lại thiết bị về trạng thái ban đầu.
Để xoá dữ liệu gói thuê bao khỏi một SIM eUICC được nhúng, hãy gọi
wipeData()
và thêm WIPE_EUICC
vào flags
đối số.
Phương thức cho chủ sở hữu hồ sơ được liên kết
Bạn có thể sử dụng các phương thức sau cho trang doanh nghiệp được liên kết chủ sở hữu:
DevicePolicyManager.setKeyguardDisabled()
DevicePolicyManager.setStatusBarDisabled()
PackageInstaller.createSession()