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

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

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

การกำหนดค่าที่มีประสิทธิภาพยิ่งขึ้น

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