Quyền Android cung cấp các chế độ kiểm soát giúp người dùng nhận biết rõ hơn và hạn chế 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 sử dụng các ứng dụng không được thêm đúng cách vào danh sách cho phép sẽ không khởi động được.
Android 10 giới thiệu khái niệm về a vai trò, một tên duy nhất trong hệ thống được 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 chúng quyền cho một mục đích cụ thể và định cấu hình 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:
- Tính minh bạch về hành vi của ứng dụng có khả năng gây hại.
- Quyền kiểm soát của người dùng đối với hành vi của ứng dụng.
- Quyền quyết định của nhà phát triển ứng dụng khi 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, các chức năng kiểm soát quyền và cài đặt gói
được chứa 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 2 gói trong Android 10.
Hình 1. Các chức năng kiểm soát quyền và cài đặt gói trong Android 10
Danh sách cho phép và quyền truy cập
Trong Android 6.0 trở lên, ứng dụng yêu cầu quyền truy cập vào các quyền nguy hiểm tại thời gian chạy. Android 10 thêm quyền trong thời gian chạy 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 thêm rõ ràng các ứng dụng đặc quyền vào danh sách cho phép trong các tệp XML cấu hình hệ thống trong thư mục /etc/permissions.
Trong Android 9 trở lên, các quyền đặc quyền phải được
thêm 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 ứng dụng vô tình truy cập vào các thư viện nền tảng, Android 7.0 đã giới thiệu Không gian tên cho thư viện gốc. Điều này tách các thư viện hệ thống khỏ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 màn hình của thiết bị. Các ứng dụng đặc quyền dựa vào chức năng chụp im lặng, chẳng hạn như chụp ảnh màn hình, nên sử dụng lớp MediaProjection thay thế.
Tính minh bạch và quyền riêng tư
Trong Android 6.0 trở lên, địa chỉ MAC của nhà máy thiết bị được bảo vệ khỏi quyền truy cập của 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 kể từ Android 10 giới hạn quyền truy cập của ứng dụng vào các mã nhận dạng thiết bị bất biến (ID) trừ phi chúng được thêm vào danh sách cho phép đối với các quyền đặc quyền. (Phần Kết nối cung cấp thông tin thảo luận liên quan về Mã nhận dạng thiết bị, vì điều này ảnh hưởng đến nhà mạng.)
Trên Android 9 trở xuống, người dùng đưa ra lựa chọn lâu dài khi cấp quyền truy cập vào vị trí cho ứng dụng. Kể từ Android 10, tính năng quyền vị trí 3 trạng thái cung cấp cho người dùng 3 lựa chọn để cho phép ứng dụng truy cập vào vị trí của thiết bị. Các yêu cầu về quyền này được áp dụng cho ứ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 khác về tính minh bạch và quyền riêng tư kể từ Android 10
- Lời nhắc về quyền truy cập vào vị trí ở chế độ nền cho người dùng biết khi một ứng dụng truy cập vào vị trí thiết bị của họ bằng quyền ở chế độ nền.
ACCESS_FINE_LOCATION - Dữ liệu liên quan đến mức độ thân thiết với danh bạ, do thành phần 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 về mức độ thân thiế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 người gọi.
Cấu hình được sắp xếp hợp lý
Cấu hình quyền đã được sắp xếp hợp lý cho Android 6.0 trở lên.
- Các chức năng xung quanh
cho các dịch vụ do
initkhởi chạy sẽ giữ tất cả các khía cạnh của cấu hình dịch vụ trong một tệp.rcduy nhất. Khi thiết lập các chức năng cho các dịch vụ không doinitkhởi chạy, hãy định cấu hình các chức năng của hệ thống tệp bằngfs_config.c. - Android 7.x trở xuống mở rộng cơ chế Mã nhận dạng Android (AID), sử dụng tệp
android_filesystem_config.hdành riêng cho thiết bị để chỉ định các chức 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 and trở lên hỗ trợ một phương thức mới để mở rộng các 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 các tập lệnh
initdành riêng cho thiết bị (thay thế cho các lớp HAL) và vào một trình nền USB gốc. Giao diện USB HAL phải được triển khai trên mọi thiết bị khởi chạy trên Android 8.0 và trở lên.