Quyền trên Android

Quyền của Android cung cấp các biện pháp kiểm soát giúp nâng cao nhận thức của người dùng 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 danh sách cho phép mà không có ứng dụng đặc quyền nào bị tắt, ngay cả khi chúng nằm trong đường dẫn priv-app . Trên Android 9 trở lên, thiết bị cố gắng sử 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 đã đưa ra khái niệm về vai trò , một tên duy nhất trong hệ thống gắn liền với các 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.

Việc tăng cường bảo vệ chống lại Ứng dụng có khả năng gây hại (PHA) được cải thiện

  • Minh bạch về hành vi ứng dụng có thể gây hại.
  • Kiểm soát người dùng đối với hành vi ứng dụng.
  • Nhà phát triển ứng dụng có toàn quyền quyết định khi sử dụng dữ liệu riêng tư, được bảo vệ bởi các quyền.

Cài đặt và cấp phép gói

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, PermissionController ( //packages/apps/PermissionController ). Hình 1 minh họa vị trí của hai gói trong Android 10.

Tách biệt các chức năng cài đặt gói và kiểm soát quyền cho các ứng dụng hệ thống và được sử dụng bởi các ứng dụng do người dùng cài đặt
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

Trong Android 6.0 trở lên, các ứng dụng yêu cầu quyền truy cập vào các quyền nguy hiểm khi chạy . Android 10 bổ sung các 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 liệt kê rõ ràng các ứng dụng có đặc quyền trong 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 đưa vào danh sách cho phép nếu không thiết bị sẽ không thể khởi động.

Để 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 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 biệt 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ọ.

Bắt đầu từ các ứng dụng Android 10 phải có cả quyền chữ ký và sự đồng ý của người dùng để truy cập nội dung màn hình của thiết bị . Thay vào đó, 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 .

Tính minh bạch và quyền riêng tư

Trong Android 6.0 trở lên, địa chỉ MAC của nhà sản xuất thiết bị được bảo vệ khỏi sự truy cập của các nhà cung cấp dịch vụ Wi-Fi và máy phân tích gói. Các hạn chế bổ sung kể từ Android 10 hạn chế các ứng dụng truy cập vào mã nhận dạng thiết bị (ID) bất biến trừ khi chúng nằm trong danh sách cho phép để có các quyền đặc quyền . (Phần Kết nối cung cấp một cuộc thảo luận liên quan về Số nhận dạng thiết bị vì điều này ảnh hưởng đến các nhà cung cấp dịch vụ.)

Trên Android 9 trở xuống, người dùng phải đưa ra các lựa chọn liên tục khi cấp quyền truy cập vị trí cho các ứng dụng. Bắt đầu từ Android 10, tính năng cấp phép vị trí ba trạng thái cung cấp cho người dùng ba tùy 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 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 riêng tư và minh bạch khác bắt đầu từ Android 10

Cấu hình hợp lý

Cấu hình quyền đã được sắp xếp hợp lý cho Android 6.0 trở lên.

  • Khả năng xung quanh dành cho các dịch vụ do init khởi chạy 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. Thay vào đó, khi cài đặt khả năng cho các dịch vụ không được khởi chạy bởi init , hãy định cấu hình khả năng của hệ thống tệp bằng cách sử dụng fs_config.c .
  • Android 7.x trở xuống mở rộng cơ chế Android ID (AID), sử dụng tệp android_filesystem_config.h dà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 tùy chỉnh của nhà sản xuất thiết bị. Android 8.0 trở lên hỗ trợ một phương pháp mới để mở rộng khả năng của hệ thống tệp .
  • Trong Android 8.0, việc xử lý các lệnh USB đã được chuyển ra khỏi các tập lệnh init dành riêng cho thiết bị (sự 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ị chạy Android 8.0 trở lên.