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

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