Các quyền của Android

Các quyền trên Android cung cấp những 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ị vô hiệu hoá, 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 đưa vào danh sách cho phép đúng cách sẽ không khởi động.

Android 10 giới thiệu khái niệm về 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 các ứ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.
  • Người dùng kiểm soát 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 các 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 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 2 gói này trong Android 10.

Tách biệt các chức năng kiểm soát quyền và cài đặt gói cho các ứng dụng hệ thống và các ứng dụng do người dùng cài đặt

Hình 1. 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, các ứng dụng 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 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 đư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. Trong Android 9 trở lên, các quyền đặc biệt phải được đưa vào danh sách cho phép hoặc 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 đã giới thiệu Không gian tên cho thư viện gốc. Thao tác này tách các thư viện hệ thống khỏi các thư viện ứng dụng và nhà sản xuất thiết bị có thể thêm các thư viện gốc của riêng họ.

Kể từ Android 10, các ứ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ị. Các ứng dụng đặc quyền dựa vào chức năng chụp ảnh màn hình ở chế độ nền (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 đưa vào danh sách cho phép một cách rõ ràng các quyền chữ ký nền tảng do ứng dụng không phải hệ thống yêu cầu hoặc do các bản cập nhật mới yêu cầu đối với ứng dụng hệ thống, 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ư

Trong Android 6.0 trở lên, địa chỉ MAC của nhà máy trên 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à 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 mã nhận dạng (ID) thiết bị bất biến, trừ phi ứng dụng đó được đưa vào danh sách cho phép đối với các quyền đặc biệt. (Mục Khả năng 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 cố định khi cấp quyền truy cập thông tin vị trí cho các ứng dụng. Kể từ Android 10, tính năng quyền truy cập vị trí có 3 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 khác về tính minh bạch và quyền riêng tư bắt đầu từ Android 10

Cấu hình đơn giản

Cấu hình quyền đã được tinh giản cho Android 6.0 trở lên.

  • Các chức năng xung quanh cho các dịch vụ do init khở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 .rc duy nhất. Khi thiết lập các chức năng cho những dịch vụ không do init khởi chạy, hãy định cấu hình các chức năng của hệ thống tệp bằng fs_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.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 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 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 đã được chuyển ra khỏi các 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 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.