רשימת היתרים להרשאות חתימה

אפליקציות שנחתמו על ידי הפלטפורמה הן אפליקציות שמשתפות את אותו אישור חתימה (או אישור חתימה תואם) עם חבילת הפלטפורמה (android). אפליקציה שנחתמה על ידי הפלטפורמה יכולה להיות אפליקציית מערכת (שנמצאת במחיצה של תמונת מערכת) או אפליקציה שאינה אפליקציית מערכת. הרשאות חתימה על ידי הפלטפורמה הן הרשאות שמוגדרות על ידי חבילת הפלטפורמה, ויש להן גם רמת הגנה של signature. גרסאות build שאפשר לבצע בהן ניפוי באגים הן גרסאות build שבהן הפונקציה android.os.Build.isDebuggable() מחזירה true, כמו גרסאות build של userdebug או eng.

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

הוספת רשימת היתרים

אפשר לפרט את רשימות ההיתרים של האפליקציות בקובץ XML אחד או בכמה קובצי XML שנמצאים בספרייה /etc/permissions:

  • /etc/permissions/signature-permissions-OEM_NAME.xml
  • /etc/permissions/signature-permissions-DEVICE_NAME.xml

אין כלל מחמיר לגבי האופן שבו התוכן מאורגן. מטמיעי המכשירים יכולים לקבוע את מבנה התוכן, בתנאי שהאפליקציות המתאימות וההרשאות שלהן נוספו לרשימת ההיתרים.

התאמה אישית של רשימת היתרים

‫AOSP כולל הטמעה של רשימת היתרים שאפשר להתאים אישית לפי הצורך, בדומה לרשימת ההיתרים של הרשאות מיוחדות. לדוגמה:

<!--
  ~ This XML file declares which platform signature permissions to grant to
  ~ platform signed nonsystem apps.
  -->

<permissions>
    <signature-permissions package="com.android.example">
        <permission name="android.permission.READ_DEVICE_CONFIG"/>
        ...
    </signature-permissions>
    ...
</permissions>

איתור הרשאות חסרות

כדי למצוא הרשאות חסרות, מתקינים את האפליקציה החתומה של הפלטפורמה ובודקים ביומני המכשיר אם מופיעות הודעות אזהרה בפורמט הבא:

Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist

המערכת עדיין יכולה להעניק את ההרשאה ב-builds שניתן לבצע בהם ניפוי באגים, אבל לא ב-builds שלא ניתן לבצע בהם ניפוי באגים, כמו build מסוג user.