สิทธิ์ของ 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 แสดงให้เห็นว่าแพ็คเกจทั้งสองอยู่ที่ใดใน Android 10

การแยกฟังก์ชันการติดตั้งแพ็คเกจและการควบคุมสิทธิ์สำหรับแอประบบและการใช้งานโดยแอปที่ผู้ใช้ติดตั้ง
รูปที่ 1 ฟังก์ชันการติดตั้งแพ็กเกจและการควบคุมสิทธิ์ใน Android 10

รายการที่อนุญาตและการเข้าถึง

ใน Android 6.0 และสูงกว่า แอปจะขอสิทธิ์เข้าถึงสิทธิ์ที่เป็นอันตรายขณะ รันไทม์ Android 10 เพิ่มการอนุญาตรันไทม์การจดจำกิจกรรม (AR) ซึ่งจะแจ้งให้ผู้ใช้แก้ไขหรืออนุญาตการอนุญาตที่เป็นอันตราย

Android 8.0 กำหนดให้คุณต้องอนุญาตรายการแอปที่ได้รับสิทธิพิเศษอย่างชัดเจนในไฟล์ XML การกำหนดค่าระบบในไดเร็กทอรี /etc/permissions ใน Android 9 ขึ้นไป สิทธิ์พิเศษจะต้องอยู่ ในรายการที่อนุญาต ไม่ เช่นนั้นอุปกรณ์จะบูตไม่ได้

เพื่อจำกัดการมองเห็น API ภายในและป้องกันไม่ให้แอปเข้าถึงไลบรารีแพลตฟอร์มโดยไม่ได้ตั้งใจ Android 7.0 ได้เปิดตัว Namespaces สำหรับ Native Libraries ซึ่งจะแยกไลบรารีระบบออกจากไลบรารีแอปพลิเคชัน และผู้ผลิตอุปกรณ์สามารถเพิ่มไลบรารีดั้งเดิมของตนเองได้

เริ่มต้นในแอป Android 10 จะต้องมีทั้งสิทธิ์ลายเซ็นและความยินยอมของผู้ใช้ในการ เข้าถึงเนื้อหาบนหน้าจอของอุปกรณ์ แอปที่ได้รับสิทธิ์ซึ่งอาศัยฟังก์ชันการถ่ายภาพแบบเงียบ เช่น การจับภาพหน้าจอ ควรใช้คลาส MediaProjection แทน

ความโปร่งใสและความเป็นส่วนตัว

ใน Android 6.0 และสูงกว่า ที่อยู่ MAC จากโรงงานของอุปกรณ์จะได้รับการปกป้องจากการเข้าถึงโดยผู้ให้บริการ Wi-Fi และเครื่องวิเคราะห์แพ็กเก็ต ข้อจำกัดเพิ่มเติมใน Android 10 จะจำกัดแอป ไม่ให้เข้าถึงตัวระบุอุปกรณ์ (ID) ที่ไม่เปลี่ยนรูป เว้นแต่จะ ได้รับอนุญาตจากสิทธิ์พิเศษ (ส่วน การเชื่อมต่อ มีการอภิปรายที่เกี่ยวข้องเกี่ยวกับ ตัวระบุอุปกรณ์ เนื่องจากสิ่งนี้ส่งผลกระทบต่อผู้ให้บริการ)

บน Android 9 และต่ำกว่า ผู้ใช้จะตัดสินใจอย่างต่อเนื่องเมื่อให้สิทธิ์การเข้าถึงตำแหน่งแก่แอป เริ่มตั้งแต่ Android 10 ฟีเจอร์ การอนุญาตตำแหน่งแบบ Tristate จะให้ตัวเลือกแก่ผู้ใช้ 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 daemon ดั้งเดิม ต้องใช้อินเทอร์เฟ ซ USB HAL บนอุปกรณ์ทุกเครื่องที่เปิดตัวบน Android 8.0 ขึ้นไป