Quyền của Android

Các quyền của Android cung cấp các biện pháp kiểm soát nhằm 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. Định cấu hình quyền trên Android 8.0 trở xuống bao gồm danh sách cho phép, nếu không có ứng dụng đặc quyền nào sẽ bị vô hiệu hóa, ngay cả khi chúng nằm trong đường dẫn priv-app riêng. Trên Android 9 trở lên, một thiết bị cố sử dụng các ứng dụng không được liệt kê trong danh sách cho phép sẽ không khởi động được.

Android 10 đã đưa ra khái niệm về một vai trò , một tên riêng trong hệ thống gắn với các yêu cầu và đặc quyền nhất định. Gán 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 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ải thiện các biện pháp bảo vệ chống lại Ứng dụng có khả năng gây hại (PHA)

  • Minh bạch về hành vi ứng dụng có thể gây hại.
  • Kiểm soát của người dùng đối với hành vi của ứng dụng.
  • Nhà phát triển ứng dụng có 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 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, PermissionController ( //packages/apps/PermissionController ). Hình 1 minh họa vị trí của hai gói trong Android 10.

Tách 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à như được sử dụng bởi các ứng dụng do người dùng cài đặt
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, 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 thời gian chạy nhận dạng hoạt động (AR), điều này 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 cho phép một cách 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 liệt kê trong danh sách cho phép, nếu không thiết bị không thể khởi động.

Để 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 . Điều này tách các thư viện hệ thống khỏi các thư viện ứng dụng và các nhà sản xuất thiết bị có thể thêm các 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ị . 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à sản xuất 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à bộ 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 số nhận dạng thiết bị bất biến (ID) trừ khi chúng được liệt kê cho 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 nhà cung cấp dịch vụ.)

Trên Android 9 trở xuống, người dùng có những 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 quyền vị trí ba giai đoạn 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 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 là gì.

Định cấu hình quyền cho các tính năng bảo mật và minh bạch khác bắt đầu từ Android 10

  • Lời nhắc vị trí truy cập trong nền hiển thị cho người dùng khi một ứng dụng truy cập vào vị trí thiết bị của họ bằng quyền ACCESS_FINE_LOCATION trong nền.
  • Dữ liệu liên quan đến mối quan hệ với người liên hệ, được quản lý bởi thành phần Trình cung cấp danh bạ, được truy cập theo cách khác: Các ứng dụng không thể ghi hoặc đọc từ dữ liệu mối quan hệ của người liên hệ 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.

  • Khả năng môi trường xung quanh 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. Khi thiết lập các khả năng cho các dịch vụ không do init khởi chạy, hãy định cấu hình các khả năng của hệ thống tệp bằng cách sử dụng fs_config.c để thay thế.
  • 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 khả năng của hệ thống tệp và / hoặc AID của nhà sản xuất thiết bị tùy chỉnh. 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à sang 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 trên Android 8.0 trở lên.