Các quyền trên Android cung cấp các chế độ kiểm soát giúp tăng mức độ nhận biết của người dùng và giới hạn quyền truy cập của ứng dụng vào dữ liệu nhạy cảm. Việc định cấu hình quyền trên Android 8.0 trở xuống bao gồm cả việc thêm vào danh sách cho phép. Nếu không có danh sách này, các ứng dụng đặc quyền sẽ bị tắt, ngay cả khi chúng nằm trong đường dẫn priv-app
. Trên Android 9 trở lên, một thiết bị cố gắng dùng các ứng dụng không nằm trong danh sách cho phép đúng cách sẽ không khởi động được.
Android 10 đã giới thiệu khái niệm về vai trò, một tên duy nhất trong hệ thống liên kết với một số yêu cầu và đặc quyền nhất định. Chỉ định vai trò cho ứng dụng để cấp cho ứng dụng các quyền cho một mục đích cụ thể và định cấu hình các vai trò mặc định bằng cách sử dụng tài nguyên cấu hình nền tảng.
Các biện pháp bảo vệ tăng cường chống lại Ứng dụng có khả năng gây hại (PHA) giúp cải thiện:
- Thông tin minh bạch về hành vi có khả năng gây hại của ứng dụng.
- Người dùng kiểm soát hành vi của ứng dụng.
- Nhà phát triển ứng dụng có thể tuỳ ý sử dụng dữ liệu riêng tư, được bảo vệ bằng quyền.
Cài đặt gói và quyền
Trong Android 9 trở xuống, chức năng cài đặt gói và kiểm soát quyền nằm trong gói PackageInstaller
(//packages/apps/PackageInstaller
). Trong Android 10 trở lên, chức năng kiểm soát quyền nằm trong một gói riêng biệt, PermissionController
(//packages/apps/PermissionController
). Hình 1 minh hoạ vị trí của hai gói này trong Android 10.
Hình 1. Chức năng cài đặt gói và kiểm soát quyền trong Android 10
Danh sách cho phép và quyền truy cập
Trên Android 6.0 trở lên, ứng dụng sẽ yêu cầu quyền truy cập vào các quyền nguy hiểm trong thời gian chạy. Android 10 thêm các quyền khi bắt đầu chạy tính năng nhận dạng hoạt động (AR), nhắc người dùng sửa đổi hoặc cho phép các quyền nguy hiểm.
Android 8.0 yêu cầu bạn phải đưa các ứng dụng đặc quyền vào danh sách cho phép một cách rõ ràng trong các tệp XML cấu hình hệ thống trong thư mục /etc/permissions
.
Trên Android 9 trở lên, các quyền đặc quyền phải được đưa vào danh sách cho phép, nếu không thiết bị sẽ không khởi động được.
Để hạn chế khả năng hiển thị API nội bộ và ngăn các ứng dụng vô tình truy cập vào thư viện nền tảng, Android 7.0 đã ra mắt Không gian tên cho Thư viện gốc. Việc này giúp tách biệt thư viện hệ thống với thư viện ứng dụng và nhà sản xuất thiết bị có thể thêm thư viện gốc của riêng họ.
Kể từ Android 10, ứng dụng phải có cả quyền chữ ký và sự đồng ý của người dùng để truy cập vào nội dung trên màn hình của thiết bị. Thay vào đó, các ứng dụng có đặc quyền dựa vào chức năng chụp ảnh im lặng, chẳng hạn như chụp ảnh màn hình, nên sử dụng lớp MediaProjection.
Android 15 yêu cầu bạn phải thể hiện rõ ràng các quyền chữ ký của nền tảng danh sách cho phép mà các ứng dụng không phải hệ thống yêu cầu hoặc quyền chữ ký của các bản cập nhật ứng dụng hệ thống mới được yêu cầu trong các tệp XML cấu hình hệ thống trong thư mục /etc/permissions
.
Tính minh bạch và quyền riêng tư
Trên Android 6.0 trở lên, địa chỉ MAC gốc của thiết bị được bảo vệ khỏi quyền truy cập của các nhà cung cấp dịch vụ Wi-Fi và trình phân tích gói. Các hạn chế bổ sung của Android 10 giới hạn ứng dụng truy cập vào mã nhận dạng thiết bị (ID) không thể thay đổi, trừ phi ứng dụng đó được đưa vào danh sách cho phép đối với các quyền đặc quyền. (Mục Kết nối cung cấp nội dung thảo luận liên quan về Giá trị nhận dạng thiết bị, vì điều này ảnh hưởng đến các nhà mạng.)
Trên Android 9 trở xuống, người dùng đưa ra lựa chọn liên tục khi cấp quyền truy cập thông tin vị trí cho ứng dụng. Kể từ Android 10, tính năng quyền truy cập thông tin vị trí cho ba trạng thái sẽ cung cấp cho người dùng 3 lựa chọn để cho phép ứng dụng truy cập vào thông tin vị trí của thiết bị. Các yêu cầu về quyền này được áp dụng cho các ứng dụng trong Android 10 bất kể SDK mục tiêu.
Định cấu hình quyền cho các tính năng minh bạch và quyền riêng tư khác bắt đầu từ Android 10
- Lời nhắc
quyền truy cập thông tin vị trí ở chế độ nền cho người dùng biết khi một ứng dụng truy cập vào thông tin vị trí của thiết bị bằng quyền
ACCESS_FINE_LOCATION
ở chế độ nền. - Dữ liệu liên quan đến mối quan hệ liên kết với danh bạ, do thành phần Trình cung cấp danh bạ quản lý, được truy cập theo cách khác: Ứng dụng không thể ghi vào hoặc đọc từ dữ liệu mối quan hệ liên kết với danh bạ trong cơ sở dữ liệu. Điều này ảnh hưởng đến các API liên quan đến phương thức gọi.
Cấu hình tinh giản
Cấu hình quyền đã được đơn giản hoá cho Android 6.0 trở lên.
- Các tính năng môi trường xung quanh cho các dịch vụ do
init
khởi chạy sẽ lưu giữ tất cả các khía cạnh của cấu hình dịch vụ trong một tệp.rc
duy nhất. Khi thiết lập các tính năng cho các dịch vụ không doinit
khởi chạy, hãy định cấu hình các tính năng hệ thống tệp bằngfs_config.c
. - Android 7.x trở xuống mở rộng cơ chế ID Android (AID), sử dụng tệp
android_filesystem_config.h
dành riêng cho thiết bị để chỉ định các tính năng của hệ thống tệp và/hoặc AID tuỳ chỉnh của nhà sản xuất thiết bị. Android 8.0 trở lên hỗ trợ một phương thức mới để mở rộng chức năng của hệ thống tệp. - Trong Android 8.0, việc xử lý các lệnh USB đã chuyển ra khỏi tập lệnh
init
dành riêng cho thiết bị (thay thế cho các lớp HAL) và chuyển vào trình nền USB gốc. Bạn phải triển khai giao diện USB HAL trên mọi thiết bị chạy Android 8.0 trở lên.