สิทธิ์ของ Android มีการควบคุมที่เพิ่มความตระหนักรู้ของผู้ใช้และจำกัดการเข้าถึงข้อมูลที่ละเอียดอ่อนของแอป การกำหนดค่าสิทธิ์ใน Android 8.0 และต่ำกว่าจะรวมรายการที่อนุญาตด้วย หากไม่มีรายการที่อนุญาต ระบบจะปิดใช้แอปที่มีสิทธิ์ แม้ว่าจะอยู่ในแทร็ก priv-app
ก็ตาม ใน Android 9 ขึ้นไป อุปกรณ์ที่พยายามใช้แอปที่ไม่ได้อยู่ในรายการที่อนุญาตอย่างถูกต้องจะไม่บูต
Android 10 ได้เปิดตัวแนวคิดบทบาท ซึ่งเป็นชื่อที่ไม่ซ้ำกันภายในระบบที่เชื่อมโยงกับข้อกำหนดและสิทธิ์บางอย่าง มอบหมายบทบาทให้กับแอปเพื่อให้สิทธิ์สำหรับวัตถุประสงค์ที่เฉพาะเจาะจง และกำหนดค่าบทบาทเริ่มต้นโดยใช้ทรัพยากรการกําหนดค่าแพลตฟอร์ม
การป้องกันแอปที่อาจเป็นอันตราย (PHA) ที่เพิ่มขึ้นจะช่วยปรับปรุงสิ่งต่อไปนี้
- ความโปร่งใสเกี่ยวกับลักษณะการทำงานที่อาจเป็นอันตรายของแอป
- ผู้ใช้เป็นผู้ควบคุมลักษณะการทำงานของแอป
- ดุลยพินิจของนักพัฒนาแอปเมื่อใช้ข้อมูลส่วนตัวที่ได้รับการคุ้มครองโดยสิทธิ์
การติดตั้งและสิทธิ์ของแพ็กเกจ
ใน Android 9 และต่ำกว่า ฟังก์ชันการทำงานของการติดตั้งแพ็กเกจและการควบคุมสิทธิ์จะอยู่ในแพ็กเกจ PackageInstaller
(//packages/apps/PackageInstaller
) ใน Android 10 ขึ้นไป ฟังก์ชันการทำงานของการควบคุมสิทธิ์จะอยู่ในแพ็กเกจแยกต่างหาก ซึ่งก็คือ PermissionController
(//packages/apps/PermissionController
) รูปที่ 1แสดงตําแหน่งของ 2 แพ็กเกจใน Android 10
รูปที่ 1 ฟังก์ชันการติดตั้งแพ็กเกจและการควบคุมสิทธิ์ใน Android 10
รายการที่อนุญาตและการเข้าถึง
ใน Android 6.0 ขึ้นไป แอปจะขอสิทธิ์ที่เป็นอันตรายในรันไทม์ Android 10 เพิ่มสิทธิ์รันไทม์ของการตรวจจับกิจกรรม (AR) ซึ่งจะแจ้งให้ผู้ใช้แก้ไขหรืออนุญาตสิทธิ์ที่เป็นอันตราย
Android 8.0 กําหนดให้คุณเพิ่มแอปที่มีสิทธิ์ในรายการที่อนุญาตอย่างชัดเจนในไฟล์ XML การกำหนดค่าระบบในไดเรกทอรี /etc/permissions
ใน Android 9 ขึ้นไป สิทธิ์ที่มีสิทธิ์ต้องอยู่ในรายการที่อนุญาต ไม่เช่นนั้นอุปกรณ์จะบูตไม่ได้
Android 7.0 ได้เปิดตัวเนมสเปซสำหรับไลบรารีแบบเนทีฟเพื่อจำกัดการแสดงผล API ภายในและป้องกันไม่ให้แอปเข้าถึงไลบรารีแพลตฟอร์มโดยไม่ตั้งใจ ซึ่งจะแยกไลบรารีของระบบออกจากไลบรารีของแอป และผู้ผลิตอุปกรณ์จะเพิ่มไลบรารีของตัวเองได้
ตั้งแต่ Android 10 เป็นต้นไป แอปต้องมีทั้งสิทธิ์ลายเซ็นและความยินยอมของผู้ใช้จึงจะ เข้าถึงเนื้อหาบนหน้าจอของอุปกรณ์ได้ แอปที่มีสิทธิ์ซึ่งอาศัยฟังก์ชันการจับภาพแบบเงียบ เช่น การถ่ายภาพหน้าจอ ควรใช้คลาส MediaProjection แทน
Android 15 กําหนดให้คุณเพิ่มลงในรายการที่อนุญาตสิทธิ์ลายเซ็นแพลตฟอร์มที่แอปที่ไม่ใช่ระบบขอหรือที่การอัปเดตแอประบบขอใหม่อย่างชัดเจนในไฟล์ XML การกำหนดค่าระบบในไดเรกทอรี /etc/permissions
ความโปร่งใสและความเป็นส่วนตัว
ใน Android 6.0 ขึ้นไป ที่อยู่ MAC ของอุปกรณ์ที่มาจากโรงงานจะได้รับการปกป้องจากการเข้าถึงโดยผู้ให้บริการ Wi-Fi และเครื่องมือวิเคราะห์แพ็กเก็ต ข้อจำกัดเพิ่มเติมของ Android 10 จำกัดแอปไม่ให้เข้าถึงตัวระบุ (รหัส) ของอุปกรณ์ที่แก้ไขไม่ได้ เว้นแต่ว่าแอปจะอยู่ใน รายการที่อนุญาตสำหรับสิทธิ์ที่มีสิทธิ์ (ส่วน การเชื่อมต่อมีการสนทนาที่เกี่ยวข้องเกี่ยวกับตัวระบุอุปกรณ์ เนื่องจากข้อมูลนี้ส่งผลต่อผู้ให้บริการ)
ใน Android 9 และต่ำกว่า ผู้ใช้จะเลือกตัวเลือกแบบถาวรเมื่อให้สิทธิ์เข้าถึงตำแหน่งแก่แอป ตั้งแต่ Android 10 เป็นต้นไป ฟีเจอร์สิทธิ์เข้าถึงตำแหน่งแบบ 3 สถานะจะให้ผู้ใช้มี 3 ตัวเลือกในการอนุญาตให้แอปเข้าถึงตำแหน่งของอุปกรณ์ ข้อกําหนดด้านสิทธิ์เหล่านี้มีผลกับแอปใน Android 10 โดยไม่คํานึงถึง SDK เป้าหมาย
กำหนดค่าสิทธิ์สำหรับฟีเจอร์อื่นๆ ในด้านความโปร่งใสและความเป็นส่วนตัวตั้งแต่ Android 10 เป็นต้นไป
- การช่วยเตือน
การเข้าถึงตำแหน่งในเบื้องหลังจะแสดงให้ผู้ใช้ทราบเมื่อแอปเข้าถึงตำแหน่งของอุปกรณ์โดยใช้สิทธิ์
ACCESS_FINE_LOCATION
ในเบื้องหลัง - ข้อมูลที่เกี่ยวข้องกับความเกี่ยวข้องของรายชื่อติดต่อซึ่งจัดการโดยคอมโพเนนต์ผู้ให้บริการรายชื่อติดต่อจะเข้าถึงได้แตกต่างกัน โดยแอปจะเขียนหรืออ่านข้อมูลจากความเกี่ยวข้องของรายชื่อติดต่อในฐานข้อมูลไม่ได้ ซึ่งส่งผลต่อ API ที่เกี่ยวข้องกับผู้โทร
การกำหนดค่าที่มีประสิทธิภาพยิ่งขึ้น
การกำหนดค่าสิทธิ์ได้รับการปรับปรุงให้มีประสิทธิภาพมากขึ้นสำหรับ Android 6.0 ขึ้นไป
- ความสามารถแบบแอมเบียนท์สำหรับบริการที่
init
เปิดตัวจะเก็บการกำหนดค่าบริการทุกด้านไว้ในไฟล์.rc
ไฟล์เดียว เมื่อตั้งค่าความสามารถสำหรับบริการที่ไม่ได้เปิดโดยinit
ให้กำหนดค่าความสามารถของระบบไฟล์โดยใช้fs_config.c
แทน - Android 7.x และต่ำกว่าจะขยายกลไกรหัส Android (AID) โดยใช้ไฟล์
android_filesystem_config.h
สำหรับอุปกรณ์แต่ละเครื่องเพื่อระบุความสามารถของระบบไฟล์และ/หรือ AID ที่กำหนดเองของผู้ผลิตอุปกรณ์ Android 8.0 ขึ้นไปรองรับวิธีการใหม่เพื่อขยายความสามารถของระบบไฟล์ - ใน Android 8.0 การจัดการคำสั่ง USB ย้ายออกจากสคริปต์สำหรับอุปกรณ์โดยเฉพาะ
init
(แทนที่เลเยอร์ HAL) ไปยังเดมอน USB ดั้งเดิม ต้องใช้อินเทอร์เฟซ USB HAL ในอุปกรณ์ทุกเครื่องที่เปิดตัวใน Android 8.0 ขึ้นไป