הרשאות של 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 הפנימיים ולמנוע מאפליקציות לגשת בטעות לספריות הפלטפורמה, בגרסה 7.0 של Android הושק מרחב שמות לספריות מקומיות. כך אפשר להפריד בין ספריות המערכת לספריות האפליקציות, וגם יצרני המכשירים יכולים להוסיף ספריות מקוריות משלהם.

החל מגרסה 10 של Android, אפליקציות צריכות לקבל גם הרשאות חתימה וגם הסכמה מהמשתמשים כדי לגשת לתוכן המסך של המכשיר. אפליקציות עם הרשאות שמסתמכות על הפונקציונליות של צילום ללא הודעה, כמו צילום מסך, צריכות להשתמש במקום זאת בכיתה MediaProjection.

ב-Android 15 צריך להוסיף באופן מפורש לרשימת ההיתרים הרשאות לחתימה על פלטפורמה שנדרשות על ידי אפליקציות שאינן מערכתיות או שנדרשו לאחרונה על ידי עדכונים לאפליקציות מערכת, בקובצי ה-XML של הגדרות המערכת בתיקייה /etc/permissions.

שקיפות ופרטיות

ב-Android מגרסה 6.0 ואילך, כתובת ה-MAC של המכשיר שמוגדרת במפעל מוגנת מפני גישה של ספקי שירותי Wi-Fi ומנתחי חבילות. הגבלות נוספות ב-Android 10 מגבילות את הגישה של אפליקציות למזהי המכשיר (המזהים) שלא ניתן לשנות, אלא אם הן מופיעות ברשימת ההיתרים להרשאות עם הרשאות גישה. (בקטע קישוריות מופיעה דיון קשור בנושא מזהי מכשירים, כי הנושא הזה משפיע על ספקי הסלולר).

במכשירים עם 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 ספציפי למכשיר כדי לציין את יכולות מערכת הקבצים ו/או מזהי AID מותאמים אישית של יצרן המכשיר. ב-Android 8.0 ואילך יש שיטה חדשה להרחבת היכולות של מערכת הקבצים.
  • ב-Android 8.0, הטיפול בפקודות USB הועבר מסקריפטים init ספציפיים למכשיר (החלפה לשכבות HAL) ל-daemon USB מקומי. ממשק USB HAL חייב להיות מוטמע בכל מכשיר שיושקו עם Android 8.0 ואילך.