פריסה

הפריסה של קובץ מדיניות ההרשאה מגדירה את מיקום האחסון המיועד לקובץ המדיניות שספציפי לכל שירות של רכב מוגדר תוכנה (SDV). מנגנון הפריסה משתנה בין פלטפורמות הליבה של SDV לבין פלטפורמות ה-IVI של SDV.

פלטפורמת הליבה של SDV

פלטפורמת הליבה של SDV משתמשת בקובצי APEX לאריזת חבילות שירותים ולהגדרת חבילות שירותים. רכיב הרישום של חבילות השירות מאחזר את מדיניות ההרשאות של חבילות שירות SDV שמאוחסנות בקובצי APEX.

‫APEX היא חבילה חתומה עם שם ייחודי שנקרא שם חבילה. כל חבילת APEX יכולה להכיל כמה חבילות שירות. המטא-נתונים של כל חבילת שירותים מוצהרים בקובץ המניפסט ב-APEX.

למטא-נתונים של חבילת שירות יש נתיב לקובץ מדיניות ההרשאות, שצריך להיות ממוקם באותו APEX.

מפרסים את מדיניות ההרשאות לשירות SDV עם הזהות {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} ב-SDV באופן הבא:

  1. ממקמים את קובץ מדיניות ההרשאות ב-package.name APEX.
  2. מעדכנים את הרשומה ServiceBundle בקובץ המניפסט של חבילות השירות ב-package.name APEX. לשם כך, מוסיפים את הנתיב של מדיניות ההרשאה המתאימה לשדה authorization_policy_path.
  3. מפעילים את package.name APEX במכונה הווירטואלית sdv-vm-name.

דוגמה

(apex_root) sdv_service_bundles_manifest.textproto

sdv_service_bundle_metadata {
  name: "SampleRpcServer"
  version_number: 0
  version_name: "0.1 Alpha"
  native_library_path: "lib64/libsdv_sample_rpc.so"
  # Path to the authorization policy file.
  # Warning: Must be a relative path to the APEX root directory.
  authorization_policy_path: "etc/authz/sample_rpc/permissions.textproto"
}

ממקמים את קובץ מדיניות ההרשאות ב-etc/authz/sample_rpc/permissions.textproto באותו APEX שבו נמצא sdv_service_bundles_manifest.textproto.

SDV IVI platform

יש כמה הבדלים בין פלטפורמת SDV IVI לבין ליבת SDV. בפלטפורמת SDV IVI:

  • אין רישום של חבילות שירות.
  • האפליקציות מבוססות על Java והן מועברות בקובצי APK.
  • הסוכנים לא נמצאים ב-APEX.

בגלל הגורמים האלה, הפריסה בפלטפורמת SDV שונה.

מפרסים את מדיניות ההרשאות לשירות SDV עם הזהות {ivi-vm-name}:{package.name}.{ServiceBundle}/{instance-name} ב-SDV IVI באופן הבא:

  1. מגדירים את נתיב מדיניות ההרשאות בהתאם לתבנית {policy-dir}/{package.name}/{ServiceBundle}.textproto.
    • כאשר policy-dir הוא אחד מהבאים:
      • /product/etc/sdv_authz_policies
      • /system/etc/sdv_authz_policies
      • /system_ext/etc/sdv_authz_policies
      • /vendor/etc/sdv_authz_policies
    • לדוגמה, /vendor/etc/sdv_authz_policies/com.sdv.pkg/WindowManager.textproto הוא נתיב תקין למדיניות הרשאות.
  2. מציבים את מדיניות ההרשאות בנתיב של מדיניות ההרשאות במכונה הווירטואלית ivi-vm-name.

נציגים ותמיכה בבדיקה

סוכני SDV פורסים את אותה מדיניות הרשאות גם ב-SDV core וגם ב-SDV IVI. אם לסוכן אין APEX, מדיניות ההרשאות המתאימה שלו צריכה להיות ממוקמת ב-APEX נלווה שמיועד להגדרות בלבד.

דוגמה

(apex_root) sdv_service_bundles_manifest.textproto

sdv_service_bundle_metadata {
   # Should match the bundle name in the FQIN registered by the SOME/IP broker agent
   name: "SomeIpBroker"
   # Version number of the config APEX
   version_number: 1
   # Version name of the config APEX
   version_name: "1"

   # Reference the manifest itself to mark the metadata as a config-only
   # declaration.
   native_library_path: "etc/sdv_service_bundles_manifest.textproto"

   # Path to the authorization policy file for SOME/IP broker.
   authorization_policy_path: "etc/config/access_control/someip_authz_policy.textproto"
}

מדיניות הרשאות ברמת מכונה וירטואלית

מציבים את המדיניות ברמת המכונה הווירטואלית ב-APEX עם שם החבילה com.oem.sdv.authz. משתמשים בקובץ ייעודי עם השם המתאים <vm_name>.textproto.

אם קובץ ה-<vm_name>.textproto התואם לא קיים, מסגרת ההרשאות מחפשת גם קובץ .default.textproto באותו APEX.

הסבר לגבי ההנחיה

התכונה .default.textproto מוצגת משתי סיבות:

  • הגדרה פשוטה יותר: יכול להיות שחלק מיצרני הציוד המקורי יצטרכו להגדיר את הערך default.textproto לכל המכונות הווירטואליות של SDV, ולספק רק את הערך המיוחד <vm-name>.textproto למכונה הווירטואלית של IVI.
  • אפשרות עדכון: אם מכונה וירטואלית חדשה מופיעה אחרי עדכון של הרכב, יכול להיות שדי יהיה בערך סביר של default.textproto כדי להימנע מעדכון של כל המכונות הווירטואליות.

לוגיקת הפתרון

כשבודקים הרשאות של נושא ממכונה וירטואלית בשם <vm-name>, מסגרת ההרשאות מחפשת מדיניות בסדר הבא:

  1. <vm-name>.textproto: אם הוא קיים, הבדיקה מתבצעת על פיו. אם הוא לא קיים, המערכת תחזור לקובץ ברירת המחדל.
  2. .default.textproto: אם הוא קיים, הבדיקה מתבצעת על פיו. אם הוא לא קיים, הגישה נדחית.

הגדרת מודול Soong עם הרשאות ברמת המכונה הווירטואלית

המודול צריך להיות APEX עם שם חבילה com.oem.sdv.authz.

מוסיפים את הערך לקובץ .mk:

SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}