สิทธิ์ของ Android

สิทธิ์ของ 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 จำกัดไม่ให้แอปเข้าถึงตัวระบุอุปกรณ์ (ID) ที่ไม่เปลี่ยนแปลง เว้นแต่จะมีการเพิ่มลงในรายการที่อนุญาตสำหรับสิทธิ์ที่มีสิทธิ์ (ส่วน การเชื่อมต่อ มีการพูดคุยที่เกี่ยวข้องเกี่ยวกับ ตัวระบุ อุปกรณ์ เนื่องจากส่วนนี้ส่งผลต่อผู้ให้บริการเครือข่าย)

ใน Android 9 ลงไป ผู้ใช้จะเลือกตัวเลือกแบบถาวรเมื่อให้สิทธิ์เข้าถึงตำแหน่งที่ตั้งแก่แอป ตั้งแต่ Android 10 เป็นต้นไป ฟีเจอร์สิทธิ์เข้าถึงตำแหน่งที่ตั้งแบบ 3 สถานะจะให้ตัวเลือก 3 ตัวเลือกแก่ผู้ใช้ในการอนุญาตให้แอปเข้าถึง ตำแหน่งที่ตั้งของอุปกรณ์ ข้อกำหนดด้านสิทธิ์เหล่านี้จะมีผลกับแอปใน Android 10 ไม่ว่า SDK เป้าหมายจะเป็นเวอร์ชันใดก็ตาม

กำหนดค่าสิทธิ์สำหรับฟีเจอร์ความโปร่งใสและความเป็นส่วนตัวอื่นๆ ตั้งแต่ Android 10 เป็นต้นไป

การกำหนดค่าที่คล่องตัว

การกำหนดค่าสิทธิ์ได้รับการปรับปรุงให้คล่องตัวขึ้นสำหรับ 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 และ ขึ้นไป