สิทธิ์ของ 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 6.0 ขึ้นไป ระบบจะปกป้องที่อยู่ MAC ของโรงงานอุปกรณ์จากการเข้าถึงโดยผู้ให้บริการ Wi-Fi และเครื่องมือวิเคราะห์แพ็กเก็ต ข้อจำกัดเพิ่มเติมตั้งแต่ Android 10 จำกัดไม่ให้แอปเข้าถึงตัวระบุอุปกรณ์ (ID) ที่ไม่เปลี่ยนแปลง เว้นแต่จะมีการเพิ่มลงในรายการที่อนุญาตสำหรับสิทธิ์ที่มีสิทธิ์ (ส่วน การเชื่อมต่อ มีการพูดคุยที่เกี่ยวข้องเกี่ยวกับ ตัวระบุ อุปกรณ์ เนื่องจากส่วนนี้ส่งผลต่อผู้ให้บริการเครือข่าย)
ใน 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 ID (AID) โดยใช้ไฟล์
android_filesystem_config.hที่เฉพาะเจาะจงกับอุปกรณ์เพื่อระบุความสามารถของระบบไฟล์และ/หรือ AID ของผู้ผลิตอุปกรณ์ที่กำหนดเอง Android 8.0 และ ขึ้นไปรองรับวิธีการใหม่ ในการขยายความสามารถของระบบไฟล์ - ใน Android 8.0 การจัดการคำสั่ง USB ได้ย้ายออกจากสคริปต์
initที่เฉพาะเจาะจงกับอุปกรณ์ (การแทนที่เลเยอร์ HAL) ไปยังดีมอน USB เนทีฟ ต้องมีการติดตั้งใช้งานอินเทอร์เฟซ USB HAL ในอุปกรณ์ทุกเครื่องที่เปิดตัวใน Android 8.0 และ ขึ้นไป