הרשאות של Android

ההרשאות ב-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

הגדרות יעילות יותר

הגדרות ההרשאות עברו אופטימיזציה ב-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 ומעלה.