ההרשאות ב-Android מספקות אמצעי בקרה שמגבירים את המודעות של המשתמשים ומגבילים את הגישה של האפליקציה למידע אישי רגיש. הגדרת הרשאות ב-Android 8.0 ובגרסאות קודמות כוללת הוספה לרשימת ההיתרים. בלי זה, אפליקציות עם הרשאות מיוחדות מושבתות, גם אם הן בנתיב priv-app. ב-Android מגרסה 9 ואילך, מכשיר שמנסה להשתמש באפליקציות שלא הוכנסו לרשימת ההיתרים בצורה תקינה לא יופעל.
ב-Android 10 הוצג המושג תפקיד, שהוא שם ייחודי במערכת שמשויך לדרישות ולהרשאות מסוימות. מקצים תפקידים לאפליקציות כדי לתת להן הרשאות למטרה ספציפית, ומגדירים תפקידי ברירת מחדל באמצעות משאבי הגדרת פלטפורמה.
ההגנה המשופרת מפני אפליקציות שעלולות להזיק (PHAs) משפרת את:
- שקיפות לגבי התנהגות של אפליקציות שעלולות להזיק.
- שליטה של המשתמשים בהתנהגות האפליקציה.
- למפתחי האפליקציות יש שיקול דעת לגבי השימוש בנתונים פרטיים, שמוגנים על ידי הרשאות.
התקנת חבילות והרשאות
ב-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 הושק מרחבי שמות לספריות Native. כך ספריות המערכת מופרדות מספריות האפליקציות, ויצרני המכשירים יכולים להוסיף ספריות Native משלהם.
החל מ-Android 10, אפליקציות חייבות לקבל גישה לתוכן המסך של המכשיר באמצעות הרשאות חתימה והסכמת המשתמש. אפליקציות עם הרשאות מיוחדות שמסתמכות על הפונקציונליות של צילום מסך שקט, צריכות להשתמש במקום זאת במחלקה MediaProjection.
ב-Android 15, צריך להוסיף לרשימת ההיתרים באופן מפורש הרשאות חתימה של פלטפורמה שמבוקשות על ידי אפליקציות שאינן אפליקציות מערכת, או שמבוקשות מחדש על ידי עדכונים לאפליקציות מערכת, בקובצי ה-XML של הגדרות המערכת בספרייה /etc/permissions.
שקיפות ופרטיות
ב-Android מגרסה 6.0 ומעלה, כתובת ה-MAC של המכשיר מוגנת מפני גישה של ספקי שירותי Wi-Fi ומנתחי חבילות. הגבלות נוספות החל מ-Android 10 מגבילות את הגישה של אפליקציות למזהי מכשיר (ID) שלא ניתן לשנות, אלא אם הן נכללות ברשימת ההיתרים להרשאות מיוחדות. (בקטע קישוריות יש דיון בנושא מזהי מכשירים, כי זה משפיע על ספקי הסלולר).
ב-Android 9 ובגרסאות קודמות, המשתמשים בוחרים אפשרויות קבועות כשהם מעניקים לאפליקציות גישה למיקום. החל מ-Android 10, התכונה הרשאות מיקום עם שלושה מצבים מאפשרת למשתמשים לבחור מתוך שלוש אפשרויות כדי לאפשר לאפליקציה גישה למיקום של המכשיר. דרישות ההרשאה האלה חלות על אפליקציות ב-Android 10, ללא קשר ל-SDK היעד.
הגדרת הרשאות לתכונות נוספות של שקיפות ופרטיות החל מ-Android 10
- התזכורת
גישה למיקום ברקע מוצגת למשתמשים כשאפליקציה ניגשת למיקום המכשיר שלהם באמצעות הרשאה
ACCESS_FINE_LOCATIONברקע. - הגישה לנתונים שקשורים לקרבה לאנשי קשר, שמנוהלים על ידי רכיב ספק אנשי הקשר, מתבצעת באופן שונה: לאפליקציות אין אפשרות לכתוב לנתונים של הקרבה לאנשי קשר במסד הנתונים או לקרוא מהם. השינוי הזה משפיע על ממשקי API שקשורים למתקשר.
הגדרות יעילות יותר
הגדרות ההרשאות עברו אופטימיזציה ב-Android 6.0 ומעלה.
- יכולות סביבתיות לשירותים שהופעלו על ידי
initשומרות את כל ההיבטים של הגדרת השירות בקובץ.rcיחיד. כשמגדירים יכולות לשירותים שלא מופעלים על ידיinit, צריך להגדיר את היכולות של מערכת הקבצים באמצעותfs_config.c. - ב-Android מגרסה 7.x ומגרסאות קודמות, מנגנון מזהי Android (AID) מורחב באמצעות קובץ
android_filesystem_config.hספציפי למכשיר כדי לציין יכולות של מערכת קבצים ו/או מזהי Android מותאמים אישית של יצרן המכשיר. Android מגרסה 8.0 ואילך תומך בשיטה חדשה להרחבת היכולות של מערכת הקבצים. - ב-Android 8.0, הטיפול בפקודות USB הועבר מסקריפטים ספציפיים למכשיר (תחליף לשכבות HAL) אל שד USB מקורי.
initממשק USB HAL חייב להיות מוטמע בכל מכשיר עם Android מגרסה 8.0 ומעלה.