ההרשאות ב-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
- התזכורת
מיקום של גישה ברקע מראה למשתמשים כשאפליקציה ניגשת למיקום המכשיר באמצעות ההרשאה
ACCESS_FINE_LOCATION
ברקע. - הגישה לנתונים שקשורים לקשרים, שמנוהלים על ידי הרכיב 'ספק אנשי הקשר', שונה: אפליקציות לא יכולות לכתוב בנתוני הקשרים במסד הנתונים או לקרוא מהם. השינוי הזה משפיע על ממשקי API שקשורים למבצע הקריאה.
הגדרות פשוטות יותר
הגדרות ההרשאות שונו ב-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 ואילך.