הפריסה של קובץ מדיניות ההרשאה מגדירה את מיקום האחסון המיועד לקובץ המדיניות שספציפי לכל שירות של רכב מוגדר תוכנה (SDV). מנגנון הפריסה משתנה בין פלטפורמות הליבה של SDV לבין פלטפורמות ה-IVI של SDV.
פלטפורמת הליבה של SDV
פלטפורמת הליבה של SDV משתמשת בקובצי APEX לאריזת חבילות שירותים ולהגדרת חבילות שירותים. רכיב הרישום של חבילות השירות מאחזר את מדיניות ההרשאות של חבילות שירות SDV שמאוחסנות בקובצי APEX.
APEX היא חבילה חתומה עם שם ייחודי שנקרא שם חבילה. כל חבילת APEX יכולה להכיל כמה חבילות שירות. המטא-נתונים של כל חבילת שירותים מוצהרים בקובץ המניפסט ב-APEX.
למטא-נתונים של חבילת שירות יש נתיב לקובץ מדיניות ההרשאות, שצריך להיות ממוקם באותו APEX.
מפרסים את מדיניות ההרשאות לשירות SDV עם הזהות {sdv-vm-name}:{package.name}.{ServiceBundle}.{instance-name} ב-SDV באופן הבא:
- ממקמים את קובץ מדיניות ההרשאות ב-
package.nameAPEX. - מעדכנים את הרשומה
ServiceBundleבקובץ המניפסט של חבילות השירות ב-package.nameAPEX. לשם כך, מוסיפים את הנתיב של מדיניות ההרשאה המתאימה לשדהauthorization_policy_path. - מפעילים את
package.nameAPEX במכונה הווירטואלית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 באופן הבא:
- מגדירים את נתיב מדיניות ההרשאות בהתאם לתבנית
{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הוא נתיב תקין למדיניות הרשאות.
- כאשר
- מציבים את מדיניות ההרשאות בנתיב של מדיניות ההרשאות במכונה הווירטואלית
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>, מסגרת ההרשאות מחפשת מדיניות בסדר הבא:
-
<vm-name>.textproto: אם הוא קיים, הבדיקה מתבצעת על פיו. אם הוא לא קיים, המערכת תחזור לקובץ ברירת המחדל. -
.default.textproto: אם הוא קיים, הבדיקה מתבצעת על פיו. אם הוא לא קיים, הגישה נדחית.
הגדרת מודול Soong עם הרשאות ברמת המכונה הווירטואלית
המודול צריך להיות APEX עם שם חבילה com.oem.sdv.authz.
מוסיפים את הערך לקובץ .mk:
SDV_VM_LEVEL_PERMISSIONS_MODULE := {soong.module.name}