Quyền truy cập trên Android

Quyền cho ứng dụng giúp hỗ trợ quyền riêng tư của người dùng bằng cách bảo vệ quyền truy cập vào các thông tin sau:

  • Dữ liệu bị hạn chế, chẳng hạn như trạng thái hệ thống và thông tin liên hệ của người dùng
  • Thao tác bị hạn chế, chẳng hạn như ghi âm và kết nối với thiết bị đã ghép nối

Trang này cung cấp thông tin tổng quan về cách hoạt động của các quyền trên Android, bao gồm quy trình sử dụng quyền ở cấp cao, thông tin mô tả các loại quyền và một số phương pháp hay nhất để sử dụng quyền trong ứng dụng. Các trang khác giải thích cách giảm thiểu yêu cầu cấp quyền của ứng dụng, khai báo quyền, yêu cầu cấp quyền khi bắt đầu chạyhạn chế cách ứng dụng khác tương tác với các thành phần của ứng dụng.

Để xem danh sách đầy đủ các quyền cho ứng dụng trên Android, hãy truy cập vào trang Tài liệu tham khảo API về quyền.

Để xem một số ứng dụng mẫu minh hoạ quy trình hoạt động của các quyền, hãy truy cập kho lưu trữ mẫu quyền cho Android trên GitHub.

Quy trình sử dụng quyền

Nếu ứng dụng của bạn cung cấp chức năng có thể yêu cầu quyền truy cập dữ liệu bị hạn chế hoặc hành động bị hạn chế, hãy xác định xem bạn có thể lấy thông tin hoặc thực hiện các thao tác đó mà không cần khai báo quyền hay không. Bạn có thể đáp ứng nhiều trường hợp sử dụng trong ứng dụng, chẳng hạn như chụp ảnh, tạm dừng phát nội dung đa phương tiện và hiện quảng cáo phù hợp mà không cần khai báo quyền nào.

Nếu bạn quyết định rằng ứng dụng phải truy cập vào dữ liệu bị hạn chế hoặc thực hiện các hành động bị hạn chế để đáp ứng một trường hợp sử dụng cụ thể, hãy khai báo quyền thích hợp. Một số quyền (còn gọi là quyền khi cài đặt) tự động được cấp khi ứng dụng được cài đặt. Các quyền khác (còn gọi là quyền khi bắt đầu chạy) đòi hỏi ứng dụng thực hiện thêm một bước nữa là yêu cầu cấp quyền trong thời gian chạy.

Hình 1 minh hoạ quy trình sử dụng quyền cho ứng dụng:

Hình 1. Quy trình sử dụng các quyền trên Android ở cấp cao.

Các loại quyền

Android phân quyền thành nhiều loại, trong đó có quyền khi cài đặt, quyền khi bắt đầu chạy và quyền đặc biệt. Mỗi loại quyền cho biết phạm vi dữ liệu bị hạn chế mà ứng dụng có thể truy cập, cũng như phạm vi thao tác bị hạn chế mà ứng dụng có thể thực hiện khi hệ thống cấp quyền đó cho ứng dụng. Mức độ bảo vệ của mỗi quyền dựa trên loại quyền và có trên trang Tài liệu tham khảo API về quyền.

Quyền khi cài đặt

Hình ảnh bên trái là danh sách quyền khi cài đặt của một ứng dụng. Hình ảnh bên phải là một hộp thoại bật lên có 2 tuỳ chọn: cho phép và từ chối.
Hình 2. Danh sách quyền khi cài đặt của một ứng dụng xuất hiện trong cửa hàng ứng dụng.

Quyền khi cài đặt cấp cho ứng dụng quyền truy cập có giới hạn vào dữ liệu bị hạn chế hoặc cho phép ứng dụng thực hiện những thao tác bị hạn chế có ảnh hưởng không đáng kể đến hệ thống hoặc các ứng dụng khác. Khi bạn khai báo quyền khi cài đặt trong ứng dụng, cửa hàng ứng dụng sẽ hiển thị thông báo về quyền khi cài đặt cho người dùng khi họ xem trang chi tiết của ứng dụng, như minh hoạ trong hình 2. Hệ thống sẽ tự động cấp quyền cho ứng dụng của bạn khi người dùng cài đặt ứng dụng đó.

Trên Android, quyền khi cài đặt được chia thành một số loại nhỏ hơn như quyền thông thường và quyền chữ ký.

Quyền thông thường

Các quyền này cho phép truy cập vào dữ liệu và thao tác vượt ra khỏi hộp cát (sandbox) của ứng dụng, nhưng gây ra rất ít rủi ro đối với quyền riêng tư của người dùng và hoạt động của các ứng dụng khác.

Hệ thống sẽ chỉ định cấp độ bảo vệ normal cho các quyền thông thường.

Quyền chữ ký

Hệ thống chỉ cấp quyền chữ ký cho một ứng dụng khi ứng dụng này được ký bằng cùng một chứng chỉ với ứng dụng hoặc hệ điều hành khai báo quyền đó.

Những ứng dụng triển khai các dịch vụ đặc quyền, chẳng hạn như dịch vụ tự động điền hoặc VPN, cũng sử dụng quyền chữ ký. Các ứng dụng này yêu cầu cấp quyền chữ ký liên kết dịch vụ để chỉ có hệ thống mới liên kết được với dịch vụ.

Hệ thống sẽ chỉ định cấp độ bảo vệ signature cho các quyền chữ ký.

Quyền khi bắt đầu chạy

Hộp thoại bật lên có 2 tuỳ chọn: cho phép và từ chối.
Hình 3. Lời nhắc về quyền hệ thống xuất hiện khi ứng dụng yêu cầu cấp quyền khi bắt đầu chạy.

Quyền khi bắt đầu chạy (còn gọi là quyền nguy hiểm) cấp cho ứng dụng thêm quyền truy cập vào dữ liệu bị hạn chế hoặc cho phép ứng dụng thực hiện những thao tác bị hạn chế có ảnh hưởng đáng kể đến hệ thống và các ứng dụng khác. Do đó, bạn cần yêu cầu cấp quyền khi bắt đầu chạy trong ứng dụng rồi mới có thể truy cập vào dữ liệu bị hạn chế hoặc thực hiện những thao tác bị hạn chế. Đừng cho rằng các quyền này đã được cấp trước đó. Hãy kiểm tra và yêu cầu cấp quyền trước mỗi lần truy cập (nếu cần).

Khi ứng dụng yêu cầu cấp quyền khi bắt đầu chạy, hệ thống sẽ hiện lời nhắc cấp quyền khi bắt đầu chạy, như minh hoạ trong hình 3.

Nhiều quyền khi bắt đầu chạy sẽ truy cập vào dữ liệu riêng tư của người dùng, một loại dữ liệu đặc biệt bị hạn chế, bao gồm cả thông tin có thể mang tính nhạy cảm. Có thể kể đến một số loại dữ liệu riêng tư của người dùng như thông tin vị trí và thông tin liên hệ.

Micrô và camera cung cấp quyền truy cập vào thông tin đặc biệt nhạy cảm. Chính vì vậy mà hệ thống sẽ giúp bạn giải thích lý do vì sao ứng dụng cần truy cập vào thông tin này.

Hệ thống sẽ chỉ định cấp độ bảo vệ dangerous cho các quyền khi bắt đầu chạy.

Quyền đặc biệt

Các quyền đặc biệt tương ứng với các thao tác cụ thể trong ứng dụng. Chỉ nền tảng và nhà sản xuất thiết bị gốc (OEM) mới có thể khai báo các quyền đặc biệt. Ngoài ra, nền tảng và OEM thường khai báo các quyền đặc biệt khi muốn bảo vệ quyền truy cập vào những thao tác đặc biệt có ảnh hưởng đáng kể, chẳng hạn như vẽ lên các ứng dụng khác.

Trang Quyền truy cập đặc biệt trong phần cài đặt hệ thống chứa một tập hợp các thao tác mà người dùng có thể bật/tắt. Nhiều thao tác trong số này được triển khai dưới dạng quyền đặc biệt.

Tìm hiểu thêm về cách yêu cầu cấp quyền đặc biệt.

Hệ thống sẽ chỉ định cấp độ bảo vệ appop cho các quyền đặc biệt.

Nhóm quyền

Các quyền có thể thuộc về nhóm quyền. Các nhóm quyền bao gồm một tập hợp các quyền có liên quan về mặt logic. Ví dụ: quyền gửi và nhận tin nhắn SMS có thể thuộc cùng một nhóm, vì cả hai quyền này đều liên quan đến hoạt động tương tác của ứng dụng với SMS.

Các nhóm quyền giúp hệ thống giảm thiểu số lượng hộp thoại hệ thống mà người dùng nhìn thấy khi ứng dụng yêu cầu cấp quyền có liên quan chặt chẽ. Khi người dùng nhìn thấy lời nhắc cấp quyền cho một ứng dụng, các quyền thuộc cùng một nhóm sẽ hiển thị trên cùng một giao diện. Tuy nhiên, quyền có thể thay đổi nhóm mà không cần thông báo, vì vậy, đừng cho rằng một quyền cụ thể được nhóm với bất kỳ quyền nào khác.

Các phương pháp hay nhất

Quyền cho ứng dụng được xây dựng dựa trên các tính năng bảo mật hệ thống và giúp Android hỗ trợ các mục tiêu sau đây liên quan đến quyền riêng tư của người dùng:

  • Quyền kiểm soát: Người dùng có quyền kiểm soát dữ liệu mà họ chia sẻ với ứng dụng.
  • Tính minh bạch: Người dùng hiểu được dữ liệu mà một ứng dụng sử dụng và lý do truy cập.
  • Giảm tối đa việc thu thập dữ liệu: Một ứng dụng chỉ truy cập và sử dụng dữ liệu cần thiết cho một tác vụ hoặc thao tác cụ thể mà người dùng yêu cầu.

Phần này trình bày một tập hợp các phương pháp cốt lõi hay nhất để sử dụng hiệu quả các quyền trong ứng dụng. Để biết thêm thông tin về cách bạn có thể sử dụng quyền trên Android, hãy truy cập trang các phương pháp hay nhất về quyền cho ứng dụng.

Yêu cầu số lượng quyền tối thiểu

Khi người dùng yêu cầu một hành động cụ thể trong ứng dụng, thì ứng dụng chỉ nên yêu cầu những quyền cần thiết để hoàn thành hành động đó. Tuỳ thuộc vào cách bạn sử dụng quyền, có thể có một cách thay thế để đáp ứng trường hợp sử dụng ứng dụng mà không cần đến quyền truy cập vào thông tin nhạy cảm.

Liên kết quyền khi bắt đầu chạy với các thao tác cụ thể

Yêu cầu quyền cho trường hợp sử dụng của ứng dụng càng muộn càng tốt. Ví dụ: nếu ứng dụng cho phép người dùng gửi tin nhắn thoại cho người khác, hãy chờ cho đến khi người dùng chuyển đến màn hình nhắn tin và nhấn nút Send audio message (Gửi tin nhắn thoại). Sau khi người dùng nhấn nút đó, ứng dụng có thể yêu cầu cấp quyền truy cập vào micrô.

Xem xét các phần phụ thuộc của ứng dụng

Khi thêm một thư viện, bạn cũng kế thừa các yêu cầu về quyền của thư viện đó. Hãy lưu ý về những quyền mà mỗi phần phụ thuộc yêu cầu và mục đích sử dụng những quyền đó.

Minh bạch

Khi bạn yêu cầu cấp quyền, hãy giải thích rõ ràng về dữ liệu bạn sẽ truy cập, lý do truy cập và các chức năng sẽ bị ảnh hưởng nếu quyền đó bị từ chối, nhờ vậy, người dùng có thể đưa ra quyết định sáng suốt.

Nêu rõ ràng các quyền truy cập hệ thống

Khi bạn truy cập vào phần cứng hoặc dữ liệu nhạy cảm, chẳng hạn như máy ảnh hoặc micrô, hãy cung cấp chỉ báo liên tục trong ứng dụng nếu hệ thống chưa đưa ra các chỉ báo như vậy. Lời nhắc này giúp người dùng biết chính xác thời điểm ứng dụng truy cập vào dữ liệu bị hạn chế hoặc thực hiện các hành động bị hạn chế.

Quyền trong các thành phần hệ thống

Quyền không chỉ có tác dụng yêu cầu chức năng của hệ thống. Các thành phần hệ thống của ứng dụng có thể hạn chế những ứng dụng nào khác có thể tương tác với ứng dụng của bạn, như mô tả trên trang về cách hạn chế hoạt động tương tác với ứng dụng khác.