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

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

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

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

אפשר להציג רשימת היתרים של הרשאות לאפליקציות בקובץ XML יחיד או בכמה קובצי XML שנמצאים בספרייה frameworks/base/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

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