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