สิทธิ์ของแอปช่วยสนับสนุนความเป็นส่วนตัวของผู้ใช้โดยการปกป้องการเข้าถึงสิ่งต่อไปนี้
- ข้อมูลที่ถูกจำกัด เช่น สถานะระบบและข้อมูลติดต่อของผู้ใช้
- การดำเนินการที่จำกัด เช่น การเชื่อมต่อกับอุปกรณ์ที่จับคู่แล้วและการบันทึกเสียง
หน้านี้แสดงภาพรวมเกี่ยวกับวิธีการทำงานของสิทธิ์ Android ซึ่งรวมถึงเวิร์กโฟลว์ระดับสูงสำหรับการใช้สิทธิ์ คำอธิบายสิทธิ์ประเภทต่างๆ และแนวทางปฏิบัติแนะนำบางประการสำหรับการใช้สิทธิ์ในแอปของคุณ หน้าอื่นๆ จะอธิบายวิธีลดคำขอสิทธิ์ของแอป, ประกาศสิทธิ์, ขอสิทธิ์รันไทม์ และจำกัดวิธีที่แอปอื่นๆ สามารถโต้ตอบกับคอมโพเนนต์ของแอปคุณ
หากต้องการดูรายการสิทธิ์ของแอป Android ทั้งหมด โปรดไปที่หน้าเอกสารอ้างอิง API สิทธิ์
หากต้องการดูแอปตัวอย่างที่สาธิตเวิร์กโฟลว์สิทธิ์ โปรดไปที่ที่เก็บตัวอย่างสิทธิ์ของ Android ใน GitHub
เวิร์กโฟลว์สำหรับการใช้สิทธิ์
หากแอปของคุณมีฟังก์ชันการทำงานที่อาจต้องเข้าถึงข้อมูลที่ถูกจำกัดหรือการดำเนินการที่ถูกจำกัด ให้พิจารณาว่าคุณจะรับข้อมูลหรือดำเนินการโดยไม่ต้องประกาศสิทธิ์ได้หรือไม่ คุณสามารถดำเนินการตาม Use Case ต่างๆ ในแอปได้ เช่น การถ่ายภาพ การหยุดเล่นสื่อชั่วคราว และการแสดงโฆษณาที่เกี่ยวข้อง โดยไม่จำเป็นต้องประกาศสิทธิ์ใดๆ
หากคุณตัดสินใจว่าแอปต้องเข้าถึงข้อมูลที่ถูกจำกัดหรือดำเนินการที่ถูกจำกัดเพื่อตอบสนองกรณีการใช้งาน ให้ประกาศสิทธิ์ที่เหมาะสม สิทธิ์บางอย่างที่เรียกว่าสิทธิ์ขณะติดตั้งจะได้รับโดยอัตโนมัติเมื่อติดตั้งแอป สิทธิ์อื่นๆ ที่เรียกว่าสิทธิ์รันไทม์กำหนดให้แอปต้องดำเนินการเพิ่มเติมและขอสิทธิ์ที่รันไทม์
รูปที่ 1 แสดงเวิร์กโฟลว์สำหรับการใช้สิทธิ์ของแอป
ประเภทของสิทธิ์
Android จัดหมวดหมู่สิทธิ์ออกเป็นประเภทต่างๆ ซึ่งรวมถึงสิทธิ์เวลาติดตั้ง สิทธิ์รันไทม์ และสิทธิ์พิเศษ ประเภทของสิทธิ์แต่ละรายการจะระบุขอบเขตของข้อมูลที่ถูกจำกัดซึ่งแอปของคุณสามารถเข้าถึงได้ และขอบเขตของการดำเนินการที่ถูกจำกัดซึ่งแอปของคุณสามารถทำได้เมื่อระบบให้สิทธิ์นั้นแก่แอปของคุณ ระดับการคุ้มครองของสิทธิ์แต่ละรายการจะขึ้นอยู่กับประเภทของสิทธิ์ และจะแสดงในหน้าเอกสารอ้างอิง API ของสิทธิ์
สิทธิ์ขณะติดตั้ง
สิทธิ์ขณะติดตั้งช่วยให้แอปของคุณมีสิทธิ์เข้าถึงข้อมูลที่ถูกจำกัดอย่างจำกัด หรือให้แอปของคุณดำเนินการที่ถูกจำกัดซึ่งส่งผลกระทบต่อระบบหรือแอปอื่นๆ น้อยที่สุด เมื่อคุณประกาศสิทธิ์ขณะติดตั้งในแอป App Store จะแสดงประกาศเกี่ยวกับสิทธิ์ขณะติดตั้งให้ผู้ใช้เห็นเมื่อดูหน้ารายละเอียดของแอป ดังที่แสดงในรูปที่ 2 ระบบจะให้สิทธิ์แก่แอปโดยอัตโนมัติเมื่อผู้ใช้ติดตั้งแอป
Android มีสิทธิ์ขณะติดตั้งหลายประเภทย่อย ซึ่งรวมถึงสิทธิ์ปกติและสิทธิ์ลายเซ็น
สิทธิ์ปกติ
สิทธิ์เหล่านี้อนุญาตให้เข้าถึงข้อมูลและการดำเนินการที่ขยายออกไปนอกแซนด์บ็อกซ์ของแอป แต่มีความเสี่ยงน้อยมากต่อความเป็นส่วนตัวของผู้ใช้และการทำงานของแอปอื่นๆ
ระบบจะกำหนดระดับการป้องกัน normal ให้กับสิทธิ์ปกติ
สิทธิ์ในการลงนาม
ระบบจะให้สิทธิ์ลายเซ็นแก่แอปก็ต่อเมื่อแอปได้รับการรับรองโดยใบรับรองเดียวกันกับแอปหรือระบบปฏิบัติการที่กำหนดสิทธิ์
แอปพลิเคชันที่ใช้บริการที่มีสิทธิ์ เช่น บริการป้อนข้อความอัตโนมัติหรือ VPN ก็ใช้สิทธิ์ลายเซ็นด้วยเช่นกัน แอปเหล่านี้ต้องใช้สิทธิ์ลายเซ็นการผูกบริการเพื่อให้เฉพาะระบบเท่านั้นที่ผูกกับบริการได้
ระบบจะกำหนดระดับการป้องกัน signature ให้กับสิทธิ์ลายเซ็น
สิทธิ์ขณะรันไทม์
สิทธิ์รันไทม์หรือที่เรียกว่าสิทธิ์ที่เป็นอันตรายจะให้สิทธิ์เข้าถึงข้อมูลที่ถูกจำกัดเพิ่มเติมแก่แอปของคุณ หรืออนุญาตให้แอปดำเนินการที่ถูกจำกัดซึ่งส่งผลต่อระบบและแอปอื่นๆ อย่างมีนัยสำคัญมากขึ้น ดังนั้น คุณจึงต้องขอสิทธิ์รันไทม์ในแอปก่อนจึงจะเข้าถึงข้อมูลที่ถูกจำกัดหรือดำเนินการที่ถูกจำกัดได้ อย่าคิดว่าสิทธิ์เหล่านี้ได้รับอนุญาตก่อนหน้านี้แล้ว ให้ตรวจสอบสิทธิ์และขอสิทธิ์ก่อนการเข้าถึงแต่ละครั้งหากจำเป็น
เมื่อแอปขอสิทธิ์รันไทม์ ระบบจะแสดงข้อความแจ้งสิทธิ์รันไทม์ดังที่แสดงในรูปที่ 3
สิทธิ์รันไทม์จำนวนมากจะเข้าถึงข้อมูลส่วนตัวของผู้ใช้ ซึ่งเป็นข้อมูลที่ถูกจำกัดประเภทพิเศษที่มีข้อมูลที่อาจมีความละเอียดอ่อน ตัวอย่างข้อมูลส่วนตัวของผู้ใช้ ได้แก่ ข้อมูลตำแหน่งและข้อมูลติดต่อ
ไมโครโฟนและกล้องช่วยให้เข้าถึงข้อมูลที่ละเอียดอ่อนเป็นพิเศษได้ ดังนั้น ระบบจึงช่วยคุณอธิบายเหตุผลที่แอปเข้าถึงข้อมูลนี้
ระบบจะกำหนดระดับการป้องกัน dangerous ให้กับสิทธิ์รันไทม์
สิทธิ์พิเศษ
สิทธิ์พิเศษจะสอดคล้องกับการดำเนินการบางอย่างของแอป มีเพียงแพลตฟอร์มและ OEM เท่านั้นที่กำหนดสิทธิ์พิเศษได้ นอกจากนี้ แพลตฟอร์มและ OEM มักจะกำหนดสิทธิ์พิเศษเมื่อต้องการปกป้องการเข้าถึงการดำเนินการที่มีประสิทธิภาพเป็นพิเศษ เช่น การวาดทับแอปอื่นๆ
หน้าสิทธิ์เข้าถึงพิเศษของแอปในการตั้งค่าระบบประกอบด้วยชุดการดำเนินการที่ผู้ใช้สลับเปิด/ปิดได้ การดำเนินการเหล่านี้หลายรายการจะใช้เป็นสิทธิ์พิเศษ
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีขอสิทธิ์พิเศษ
ระบบจะกำหนดระดับการปกป้อง appop ให้กับสิทธิ์พิเศษ
กลุ่มสิทธิ์
สิทธิ์อาจอยู่ในกลุ่มสิทธิ์ กลุ่มสิทธิ์ประกอบด้วยชุดสิทธิ์ที่เกี่ยวข้องตามตรรกะ ตัวอย่างเช่น สิทธิ์ในการส่งและรับข้อความ SMS อาจอยู่ในกลุ่มเดียวกัน เนื่องจากทั้ง 2 สิทธิ์เกี่ยวข้องกับการโต้ตอบของแอปพลิเคชันกับ SMS
กลุ่มสิทธิ์ช่วยให้ระบบลดจำนวนกล่องโต้ตอบของระบบที่แสดงต่อผู้ใช้เมื่อแอปขอสิทธิ์ที่เกี่ยวข้องอย่างใกล้ชิด เมื่อผู้ใช้เห็นข้อความแจ้งให้ให้สิทธิ์แก่แอปพลิเคชัน สิทธิ์ที่อยู่ในกลุ่มเดียวกันจะแสดงในอินเทอร์เฟซเดียวกัน อย่างไรก็ตาม สิทธิ์สามารถเปลี่ยนกลุ่มได้โดยไม่ต้องแจ้งให้ทราบ ดังนั้นอย่าคิดว่าสิทธิ์หนึ่งๆ จะจัดกลุ่มรวมกับสิทธิ์อื่นๆ
แนวทางปฏิบัติแนะนำ
สิทธิ์ของแอปสร้างขึ้นจากฟีเจอร์ความปลอดภัยของระบบและช่วยให้ Android รองรับเป้าหมายต่อไปนี้ที่เกี่ยวข้องกับความเป็นส่วนตัวของผู้ใช้
- การควบคุม: ผู้ใช้ควบคุมข้อมูลที่แชร์กับแอปได้
- ความโปร่งใส: ผู้ใช้เข้าใจว่าแอปใช้ข้อมูลใดและเหตุใดแอปจึงเข้าถึงข้อมูลนี้
- ขอบเขตการใช้ข้อมูล: แอปจะเข้าถึงและใช้เฉพาะข้อมูลที่จำเป็นสำหรับงานหรือการดำเนินการที่เฉพาะเจาะจงซึ่งผู้ใช้เรียกใช้
ส่วนนี้จะนำเสนอชุดแนวทางปฏิบัติแนะนำหลักสำหรับการใช้สิทธิ์อย่างมีประสิทธิภาพในแอป ดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีทำงานกับสิทธิ์ใน Android ได้ที่หน้าแนวทางปฏิบัติแนะนำสำหรับสิทธิ์ของแอป
ขอสิทธิ์ให้น้อยที่สุด
เมื่อผู้ใช้ขอการดำเนินการหนึ่งๆ ในแอป แอปควรขอเฉพาะสิทธิ์ที่จำเป็นต่อการดำเนินการดังกล่าวให้เสร็จสมบูรณ์ ทั้งนี้ขึ้นอยู่กับวิธีที่คุณใช้สิทธิ์ต่างๆ อาจมีวิธีอื่นในการตอบสนอง Use Case ของแอปโดยไม่ต้องอาศัยการเข้าถึงข้อมูลที่ละเอียดอ่อน
เชื่อมโยงสิทธิ์รันไทม์กับการดำเนินการที่เฉพาะเจาะจง
ขอสิทธิ์ในช่วงท้ายของขั้นตอนกรณีการใช้งานของแอปให้มากที่สุดเท่าที่จะเป็นไปได้ ตัวอย่างเช่น หากแอปของคุณอนุญาตให้ผู้ใช้ส่งข้อความเสียงถึงผู้อื่น ให้รอจนกว่าผู้ใช้จะไปยังหน้าจอการรับส่งข้อความและกดปุ่มส่งข้อความเสียง หลังจากผู้ใช้กดปุ่มแล้ว แอปของคุณจะขอสิทธิ์เข้าถึงไมโครโฟนได้
พิจารณาการขึ้นต่อกันของแอป
เมื่อรวมไลบรารี คุณจะรับค่าข้อกำหนดสิทธิ์ของไลบรารีนั้นด้วย โปรดระวังสิทธิ์ที่ทรัพยากร Dependency แต่ละรายการต้องการและสิทธิ์เหล่านั้นใช้เพื่ออะไร
มีความโปร่งใส
เมื่อส่งคำขอสิทธิ์ โปรดระบุให้ชัดเจนว่าคุณกำลังเข้าถึงอะไร เพราะเหตุใด และฟังก์ชันการทำงานใดจะได้รับผลกระทบหากมีการปฏิเสธสิทธิ์ เพื่อให้ผู้ใช้มีข้อมูลประกอบการตัดสินใจ
ทำให้การเข้าถึงระบบมีความชัดเจน
เมื่อคุณเข้าถึงข้อมูลหรือฮาร์ดแวร์ที่มีความละเอียดอ่อน เช่น กล้องหรือไมโครโฟน ให้แสดงสัญญาณบอกสถานะอย่างต่อเนื่องในแอปหากระบบยังไม่ได้แสดงสัญญาณบอกสถานะเหล่านี้ การช่วยเตือนนี้ช่วยให้ผู้ใช้เข้าใจได้อย่างชัดเจนว่าแอปของคุณเข้าถึงข้อมูลที่ถูกจำกัดหรือดำเนินการที่ถูกจำกัดเมื่อใด
สิทธิ์ในคอมโพเนนต์ของระบบ
สิทธิ์ไม่ได้มีไว้เพื่อขอฟังก์ชันการทำงานของระบบเท่านั้น คอมโพเนนต์ระบบของแอปสามารถจำกัดแอปอื่นๆ ที่สามารถโต้ตอบกับแอปของคุณได้ ตามที่อธิบายไว้ในหน้าเกี่ยวกับวิธีจำกัดการโต้ตอบกับแอปอื่นๆ