אחרי שמשלבים את רמת הבסיס של הפונקציונליות SELinux ניתוח מעמיק של התוצאות, תוכל להוסיף הגדרות מדיניות משלך את ההתאמות האישיות למערכת ההפעלה Android. כללי המדיניות האלה עדיין לעמוד בתוכנית התאימות של Android ואסור להסיר את הגדרות ברירת המחדל של SELinux.
יצרנים לא צריכים להסיר את המדיניות הקיימת של SELinux. אחרת, הן לפרוץ את היישום של Android SELinux ואת האפליקציות שהוא קובעת. הדבר כולל אפליקציות של צד שלישי שסביר להניח שיהיה צורך כדי לעמוד בדרישות ולאפשר תפעול טוב יותר. אסור לדרוש מכל אפליקציה בוצע שינוי במטרה להמשיך לפעול במכשירים שתומכים ב-SELinux.
כשאתם יוצאים להתאמה אישית של SELinux, חשוב לזכור:
- כתיבת מדיניות SELinux לכל הדימונים החדשים
- שימוש בדומיינים מוגדרים מראש לפי הצורך
- הקצאת דומיין לכל תהליך שנוצר בתור שירות
init
- חשוב להכיר את פקודות המאקרו לפני כתיבת המדיניות
- שליחת השינויים במדיניות הליבה אל AOSP
וחשוב לזכור:
- יצירת מדיניות לא תואמת
- התאמה אישית של המדיניות למשתמשי קצה
- אישור להתאמה אישית של מדיניות MDM (ניהול מכשירים ניידים)
- הפחדת משתמשים באמצעות הפרות מדיניות
- הוספת דלתות אחוריות
אפשר לקרוא מידע נוסף בקטע תכונות אבטחה של ליבה (Kernel) Android מסמך הגדרת התאימות לדרישות ספציפיות.
SELinux משתמש בגישה לרשימת היתרים, כלומר כל הגישה חייבת להיות מוגדרת באופן מפורש מאושר במדיניות כדי שיוענק לו. מאז ברירת המחדל של Android ל-SELinux המדיניות כבר תומכת בפרויקט הקוד הפתוח של Android, אתם לא נדרשים כדי לשנות את הגדרות SELinux בכל דרך שהיא. אם בכל זאת מתאימים אישית את ההגדרות של SELinux, צריך להיזהר מאוד לא לשבור אפליקציות קיימות. כדי להתחיל:
- משתמשים ב גרסת Android העדכנית ביותר ליבה (kernel).
- ליישם עיקרון הרשאות מינימליות.
- מציינים רק את התוספות שלכם ל-Android. מדיניות ברירת המחדל פועלת עם קוד המקור הפתוח של Android ה-codebase של הפרויקט באופן אוטומטי.
- בצעו השוואה בין רכיבי תוכנה למודולים בעלי יחיד למשימות סיווג.
- ליצור כללי מדיניות SELinux שמבודדים את המשימות האלה מאלה שלא קשורות למשימות ספציפיות.
- צריך למקם את כללי המדיניות האלה ב-
*.te
קבצים (התוסף ל-SELinux) קובצי מקור של המדיניות) בתוך/device/manufacturer/device-name/sepolicy
את הספרייה ולהשתמש במשתנים ב-BOARD_SEPOLICY
כדי לכלול אותם את ה-build שלך. - ודאו שדומיינים חדשים יהיו מותרים בהתחלה. לשם כך, נדרשת
הצהרה בקובץ
.te
של הדומיין. - ניתוח התוצאות וצמצום הגדרות הדומיין.
- הסרת ההצהרה המתקנת אם לא מופיעות דחיות נוספות ב-Userdebug לבנות.
אחרי שילוב השינוי במדיניות SELinux, מוסיפים שלב של הפיתוח כדי להבטיח תאימות ל-SELinux בהמשך. באופן אידיאלי תהליך פיתוח התוכנה, מדיניות SELinux משתנה רק כשהתוכנה את השינויים שבוצעו במודל ולא את ההטמעה בפועל.
כשמתחילים להתאים אישית את SELinux, קודם צריך לבדוק את התוספות ל-Android. אם המיקום הוספתם רכיב שמבצע פונקציה חדשה, ודאו שהרכיב שעומד במדיניות האבטחה של Android, וגם בכל מדיניות משויכת שנוצרה על ידי ה-OEM, לפני שמפעילים את מצב האכיפה.
כדי למנוע בעיות מיותרות, עדיף להשתמש ביותר מדי תואם מדי מאשר מגביל מדי ולא תואם, וגורם לשיבושים של המכשיר. לעומת זאת, אם השינויים שלך יועילו לאחרים, לשלוח את השינויים למדיניות ברירת המחדל של SELinux בתור patch. אם התיקון הוחלה על מדיניות האבטחה המוגדרת כברירת מחדל, לא יהיה צורך לבצע את השינוי הזה באמצעות בכל מהדורה חדשה של Android.
הצהרות מדיניות לדוגמה
SELinux מבוסס על M4 במחשב שלכם, ולכן היא תומכת במגוון פקודות מאקרו כדי לחסוך זמן.
בדוגמה הבאה, כל הדומיינים מקבלים גישה לקריאה מ- או
לכתוב אל /dev/null
ולקרוא מ-/dev/zero
.
# Allow read / write access to /dev/null allow domain null_device:chr_file { getattr open read ioctl lock append write}; # Allow read-only access to /dev/zero allow domain zero_device:chr_file { getattr open read ioctl lock };
אפשר לכתוב את ההצהרה הזו באמצעות SELinux *_file_perms
פקודות מאקרו (קיצור):
# Allow read / write access to /dev/null allow domain null_device:chr_file rw_file_perms; # Allow read-only access to /dev/zero allow domain zero_device:chr_file r_file_perms;
מדיניות לדוגמה
לפניכם דוגמה מלאה למדיניות של DHCP, שאותה נבחן כאן:
type dhcp, domain; permissive dhcp; type dhcp_exec, exec_type, file_type; type dhcp_data_file, file_type, data_file_type; init_daemon_domain(dhcp) net_domain(dhcp) allow dhcp self:capability { setgid setuid net_admin net_raw net_bind_service }; allow dhcp self:packet_socket create_socket_perms; allow dhcp self:netlink_route_socket { create_socket_perms nlmsg_write }; allow dhcp shell_exec:file rx_file_perms; allow dhcp system_file:file rx_file_perms; # For /proc/sys/net/ipv4/conf/*/promote_secondaries allow dhcp proc_net:file write; allow dhcp system_prop:property_service set ; unix_socket_connect(dhcp, property, init) type_transition dhcp system_data_file:{ dir file } dhcp_data_file; allow dhcp dhcp_data_file:dir create_dir_perms; allow dhcp dhcp_data_file:file create_file_perms; allow dhcp netd:fd use; allow dhcp netd:fifo_file rw_file_perms; allow dhcp netd:{ dgram_socket_class_set unix_stream_socket } { read write }; allow dhcp netd:{ netlink_kobject_uevent_socket netlink_route_socket netlink_nflog_socket } { read write };
ננתח את הדוגמה:
בשורה הראשונה, הצהרת הסוג, הדימון (daemon) של DHCP יורש
מדיניות אבטחה בסיסית (domain
). מההצהרה הקודמת
לדוגמה, DHCP יכול לקרוא ולכתוב ב-/dev/null
.
בשורה השנייה, DHCP מזוהה כדומיין מתירני.
בשורה init_daemon_domain(dhcp)
, במדיניות מצוין שה-DHCP הוא
מומצא מ-init
ומותר לתקשר איתו.
בשורה net_domain(dhcp)
, המדיניות מאפשרת ל-DHCP להשתמש
פונקציונליות רשת נפוצה מהדומיין net
, כמו קריאה
וכתיבת חבילות TCP, תקשורת באמצעות שקעים ועריכת DNS
בקשות.
בשורה allow dhcp proc_net:file write;
כתובה המדיניות
DHCP יכול לכתוב לקבצים ספציפיים ב-/proc
. הקו הזה מדגים
הוספת תוויות פרטנית לקבצים של SELinux. היא משתמשת בתווית proc_net
כדי להגביל את גישת הכתיבה לקבצים שנמצאים מתחת לגיל /proc/sys/net
בלבד.
הבלוק האחרון של הדוגמה מתחיל ב-
allow dhcp netd:fd use;
מתאר איך אפליקציות יכולות לקבל הרשאה
יוצרים אינטראקציה אחד עם השני. לפי המדיניות, DHCP ו-Netd עשויים לתקשר עם
אחד מהשני באמצעות תיאורי קבצים, קובצי FIFO, שקעי Datagram וזרם UNIX
שקעים. DHCP יכול לקרוא ולכתוב רק משקעי ה-datagram ומ-UNIX
sockets ולא ליצור או לפתוח אותם.
אמצעי בקרה זמינים
דרגה | הרשאה |
---|---|
קובץ |
ioctl read write create getattr setattr lock relabelfrom relabelto append unlink link rename execute swapon quotaon mounton |
מאגר |
add_name remove_name reparent search rmdir open audit_access execmod |
שקע |
ioctl read write create getattr setattr lock relabelfrom relabelto append bind connect listen accept getopt setopt shutdown recvfrom sendto recv_msg send_msg name_bind |
מערכת קבצים |
mount remount unmount getattr relabelfrom relabelto transition associate quotamod quotaget |
תהליך דיפוזיה הפוך |
fork transition sigchld sigkill sigstop signull signal ptrace getsched setsched getsession getpgid setpgid getcap setcap share getattr setexec setfscreate noatsecure siginh setrlimit rlimitinh dyntransition setcurrent execmem execstack execheap setkeycreate setsockcreate |
אבטחה |
compute_av compute_create compute_member check_context load_policy compute_relabel compute_user setenforce setbool setsecparam setcheckreqprot read_policy |
יכולת |
chown dac_override dac_read_search fowner fsetid kill setgid setuid setpcap linux_immutable net_bind_service net_broadcast net_admin net_raw ipc_lock ipc_owner sys_module sys_rawio sys_chroot sys_ptrace sys_pacct sys_admin sys_boot sys_nice sys_resource sys_time sys_tty_config mknod lease audit_write audit_control setfcap |
עוד |
ועוד |
כללים שאף פעם לא מאפשרים
כללי neverallow
של SELinux אוסרים התנהגות שלא אמורה להתרחש אף פעם.
בעזרת בדיקת תאימות,
כללי neverallow
של SELinux נאכפים עכשיו בכל המכשירים.
ההנחיות הבאות נועדו לעזור ליצרנים להימנע משגיאות
קשור לכללים neverallow
במהלך ההתאמה האישית. מספרי הכללים
המשמשים כאן תואמים ל-Android 5.1 והם עשויים להשתנות בהתאם לגרסה.
כלל 48: neverallow { domain -debuggerd -vold -dumpstate
-system_server } self:capability sys_ptrace;
הצגת דף הגבר של ptrace
. sys_ptrace
מעניקה את היכולת ptrace
לכל תהליך, וכך
שליטה על תהליכים אחרים והם צריכים להיות שייכים רק למערכת ייעודית
הרכיבים המתוארים בכלל. הצורך ביכולות האלה בדרך כלל מצביע על
את הנוכחות של משהו שלא מיועד לגרסאות build שניתנות למשתמשים או
פונקציונליות שלא נחוצה לה. מסירים את הרכיב הלא נחוץ.
כלל 76: neverallow { domain -appdomain -dumpstate
-shell -system_server -zygote } { file_type -system_file -exec_type }:file execute;
הכלל הזה נועד למנוע הפעלה של קוד שרירותי במערכת.
באופן ספציפי, היא מצהירה שרק קוד ב-/system
מופעל,
שמאפשר להבטיח אבטחה באמצעות מנגנונים כמו הפעלה מאומתת.
בדרך כלל, הפתרון הטוב ביותר כאשר נתקלים בבעיה
הכלל neverallow
הוא להעביר את הקוד הפוגעני
מחיצה /system
.
התאמה אישית של SEPolicy ב-Android מגרסה 8.0 ואילך
בקטע הזה מפורטות הנחיות למדיניות SELinux של הספק ב-Android 8.0. גבוהה יותר, כולל פרטים על SEPolicy בפרויקט קוד פתוח של Android (AOSP) תוספי SEPolicy. מידע נוסף על אופן השמירה של המדיניות של SELinux שתואמים למחיצות ולגרסאות Android שונות. תאימות.
מיקום המדיניות
ב-Android 7.0 ובגרסאות קודמות, יצרני מכשירים יכולים להוסיף מדיניות
BOARD_SEPOLICY_DIRS
, כולל מדיניות שנועדה להרחיב את מדיניות AOSP
בסוגים שונים של מכשירים. ב-Android מגרסה 8.0 ואילך, הוספת מדיניות ל
BOARD_SEPOLICY_DIRS
מציבה את המדיניות רק אצל הספק
תמונה.
ב-Android מגרסה 8.0 ואילך, המדיניות חלה במיקומים הבאים ב-AOSP:
- system/sepolicy/public. כולל מדיניות שמיוצאת לשימוש
במדיניות הספציפית לספק. הכול מגיע אל Android 8.0
תשתית תאימות.
המדיניות הציבורית צריכה להיות קבועה בגרסאות שונות, לכן אפשר לכלול
את כל
/public
במדיניות המותאמת אישית. לכן, סוג המדיניות שניתן להציב ב/public
הוא יותר מוגבלת. כדאי לקחת בחשבון את ה-API הזה של מדיניות הייצוא של הפלטפורמה: כל מתייחסת לממשק בין/system
/vendor
שייך לכאן. - system/sepolicy/private. כולל מדיניות שנדרשת כדי התפקוד של תמונת המערכת, אבל המדיניות של הספק לגבי תמונות אין כל ידע עליהם.
- system/sepolicy/ספק. כוללת מדיניות בנושא רכיבים
עוברים ב-
/vendor
אבל נמצאים בעץ הפלטפורמה המרכזית (לא ספריות ספציפיות למכשיר). זהו פריט מידע שנוצר בתהליך הפיתוח (Artifact) של מערכת ה-build הבחנה בין מכשירים ורכיבים גלובליים; מבחינה רעיונית, חלק מהמדיניות הספציפית למכשיר שמתוארת בהמשך. - device/manufacturer/device-name/sepolicy. כולל מדיניות ספציפית למכשיר. כולל גם התאמות אישיות של מכשירים עבור , אשר ב-Android 8.0 ואילך תואמת למדיניות בנושא רכיבים בתמונת הספק.
ב-Android מגרסה 11 ואילך, מחיצות system_ext ומחיצות מוצרים יכולות לכלול גם כללי מדיניות ספציפיים למחיצות. System_ext, וכללי מדיניות מוצרים מתחלקים גם הם ציבורי ופרטי, וספקים יכולים להשתמש ברכיבים הציבוריים של system_ext ושל product כללי מדיניות, למשל מדיניות המערכת.
SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS
כולל מדיניות שיוצאו עבור לשימוש במדיניות ספציפית לספק. הותקן במחיצת system_ext.SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS
כולל מדיניות הנדרשת לתפקוד של תמונת system_ext, אבל איזו תמונה של ספק ולא אמורים להיות מודעים למדיניות. הותקן במחיצת system_ext.PRODUCT_PUBLIC_SEPOLICY_DIRS
כולל מדיניות שיוצאו עבור לשימוש במדיניות ספציפית לספק. מותקן בקטגוריית המוצרים.PRODUCT_PRIVATE_SEPOLICY_DIRS
כולל מדיניות שנדרשת כדי התפקוד של תמונת המוצר, אבל לגבי המדיניות בנושא תמונות של הספק לא אמור להיות ידע כלל. מותקן בקטגוריית המוצרים.
תרחישים נתמכים במדיניות
במכשירים עם Android מגרסה 8.0 ואילך, התמונה של הספק צריכה לפעול עם תמונת המערכת של ה-OEM ותמונת מערכת ה-AOSP שסופקה על ידי Google (ולהעביר CTS בתמונת ההפניה הזו). הדרישות האלה מבטיחות הפרדה בין ה-framework לבין קוד הספק. מכשירים כאלה תומכים התרחישים הבאים.
תוספי תמונות בלבד של ספקים
לדוגמה: הוספת שירות חדש אל vndservicemanager
מתמונת הספק שתומכת בתהליכים בתמונת הספק.
כמו במכשירים שמושקים עם גרסאות Android קודמות, מוסיפים גרסאות ספציפיות למכשיר
התאמה אישית של
device/manufacturer/device-name/sepolicy
מדיניות חדשה שקובעת את האינטראקציות של רכיבים של ספקים עם ספק אחר (רק)
חייבים לכלול סוגים שקיימים רק
device/manufacturer/device-name/sepolicy
המדיניות שכתובה כאן מאפשרת לקוד של הספק לעבוד, אבל היא לא תעודכן כחלק מהמדיניות
של OTA רק ל-framework, והוא יופיע במדיניות המשולבת במכשיר
עם קובץ האימג' של מערכת ה-AOSP.
תמיכה בתמונות של ספקים עם AOSP
דוגמה: הוספת תהליך חדש (נרשמת באמצעות
hwservicemanager
מתמונת הספק) שמטמיע
HAL בהגדרת AOSP.
בדומה למכשירים שמושקים עם גרסאות Android קודמות, מבצעים
התאמה אישית ספציפית למכשיר
device/manufacturer/device-name/sepolicy
המדיניות שמיוצאת כחלק מ-system/sepolicy/public/
זמינה
לשימוש והוא נשלח כחלק ממדיניות הספק. סוגים ומאפיינים מ-
אפשר להשתמש במדיניות הציבורית בכללים חדשים שמכתיבים את האינטראקציות עם
ביטים ספציפיים לספק, בכפוף ל-neverallow
שצוין
ההגבלות. בדומה למקרה של ספק בלבד, המדיניות החדשה כאן לא תעודכן
כחלק ממדיניות OTA של מסגרת בלבד, והם יופיעו במדיניות המשולבת
מכשיר עם תמונת מערכת AOSP.
תוספים של תמונות מערכת בלבד
דוגמה: הוספת שירות חדש (שנרשם באמצעות servicemanager) שרק תהליכים אחרים יכולים לגשת אליו מתמונת המערכת.
צריך להוסיף את המדיניות הזו אל system/sepolicy/private
. אפשר להוסיף עוד
כדי להפעיל פונקציונליות בתמונת מערכת של שותף, בתנאי
הביטים החדשים האלה לא צריכים לקיים אינטראקציה עם רכיבים חדשים בתמונת הספק
(באופן ספציפי, תהליכים או אובייקטים כאלה חייבים לפעול באופן מלא ללא מדיניות
את תמונת הספק). המדיניות שמיוצאת על ידי system/sepolicy/public
היא
זמינות כאן בדיוק כמו לתוספים עם תמונות מספקים בלבד. המדיניות הזו
חלק מתמונת המערכת, ואפשר לעדכן אותו ב-OTA של המסגרת בלבד, אבל
לא נמצאים כשמשתמשים בתמונת המערכת של ההפניה ל-AOSP.
תמונה של ספק תוספים שמציגים רכיבי AOSP מורחבים
דוגמה: תוסף HAL חדש, שאינו AOSP, לשימוש על ידי לקוחות מורחבים קיימים גם בתמונת מערכת ה-AOSP (למשל, system_server מורחב).
יש לכלול את מדיניות האינטראקציה בין המערכת לספק
device/manufacturer/device-name/sepolicy
נשלח במחיצת הספק.
האפשרות הזו דומה לתרחיש שלמעלה של הוספת תמיכה בתמונות של ספק כדי לעבוד
באמצעות תמונת ה-AOSP, למעט רכיבי ה-AOSP שהשתנתו עשויים להיות
נדרשת מדיניות נוספת כדי לפעול באופן תקין עם שאר המערכת
(וזה בסדר, כל עוד יש להם עדיין את סוג ה-AOSP הציבורי
).
מדיניות לאינטראקציה של רכיבי AOSP ציבוריים עם תמונות מערכת בלבד
התוספים צריכים להיות בsystem/sepolicy/private
.
תמונת מערכת תוספים שניגשים רק לממשקי AOSP
דוגמה: תהליך מערכת חדש שאינו AOSP צריך לגשת ל-HAL שעליו מסתמך AOSP.
היא דומה למודל של תמונת המערכת בלבד
של התוסף, אלא שרכיבי מערכת חדשים עשויים לקיים אינטראקציה
ממשק system/vendor
. המדיניות עבור רכיב המערכת החדש חייבת
להיכנס ל-system/sepolicy/private
, וזה קביל בתנאי
באמצעות ממשק שכבר הוגדר על ידי AOSP
system/sepolicy/public
(כלומר, הסוגים והמאפיינים שנדרשים עבור
הקיימות). אומנם אפשר לכלול את המדיניות במדיניות הספציפית למכשיר
המדיניות לא יכולה להשתמש בsystem/sepolicy/private
סוגים או שינוי (בכל דרך שמשפיעה על המדיניות) כתוצאה ממסגרת בלבד
אפשר לשנות את המדיניות ב-OTA של המסגרת בלבד, אבל היא לא
קיימים כשמשתמשים בתמונת מערכת AOSP (שלא תכלול את המערכת החדשה
רכיב אחד).
תמונה של ספק תוספים שמציגים רכיבי מערכת חדשים
דוגמה: הוספת מדד HAL חדש שאינו AOSP לשימוש בתהליך לקוח ללא אנלוגי AOSP (ולכן נדרש דומיין משלו).
בדומה לתוספי AOSP
לדוגמה, מדיניות לגבי אינטראקציות בין המערכת לספק חייבת להיכלל
device/manufacturer/device-name/sepolicy
הספרייה נשלחת במחיצת הספק
(כדי לוודא שמדיניות המערכת לא מודעת לפרטים ספציפיים לספק). שלך
יכולים להוסיף סוגים ציבוריים חדשים להרחבת המדיניות
system/sepolicy/public
; יש לעשות את זה רק בנוסף
ממדיניות ה-AOSP הקיימת, כלומר, לא להסיר את המדיניות הציבורית של AOSP. הציבור החדש
לאחר מכן ניתן להשתמש בסוגים מסוימים של מדיניות ב-system/sepolicy/private
וב-
device/manufacturer/device-name/sepolicy
.
חשוב לזכור שכל הוספה ל-system/sepolicy/public
מוסיפה
את המורכבות שלו באמצעות חשיפת אחריות תאימות חדשה שצריך לעקוב אחריה
של מפות Google, ושכפוף להגבלות נוספות. רק סוגים חדשים
אפשר להוסיף כללי הרשאה תואמים ב-system/sepolicy/public
;
אין תמיכה במאפיינים ובהצהרות אחרות של המדיניות. בנוסף, חדשות
לא ניתן להשתמש בסוגים ציבוריים כדי לתייג אובייקטים באופן ישיר
המדיניות בנושא /vendor
.
תרחישים של מדיניות שלא נתמכים
מכשירים שמושקים עם Android 8.0 ואילך לא תומכים ודוגמאות.
פרטים נוספים תוספים לתמונת המערכת שצריכים הרשאה לרכיבי תמונה חדשים של ספק אחרי שירות OTA של המסגרת בלבד
דוגמה: תהליך מערכת חדש שאינו AOSP, שדורש נוסף בגרסה הבאה של Android וזקוק לגישה ללא AOSP HAL.
דומה ל-
חדש
(שאינם AOSP) ורכיבי ספק, מלבד המערכת החדשה
מוכנס
OTA רק ב-framework. למרות שניתן להוסיף את הסוג החדש למדיניות בנושאים
system/sepolicy/public
, מדיניות הספק הקיימת לא מבוססת על ידע
מהסוג החדש, כי הוא עוקב רק אחרי המדיניות הציבורית של מערכת Android 8.0.
שירות AOSP מטפל בכך באמצעות מאפיין (למשל, את המשאבים שסופקו על ידי הספק),
hal_foo
), אבל מכיוון שתוספי שותף לא נחשבים כמאפיינים,
נתמכת ב-system/sepolicy/public
, השיטה הזו לא זמינה ל-
מדיניות הספק. צריכה להיות גישה מסוג ציבורי שכבר היה קיים.
דוגמה: שינוי בתהליך מערכת (AOSP או לא AOSP) משנה את האינטראקציה שלו עם רכיב ספק חדש שאינו AOSP.
המדיניות על תמונת המערכת חייבת להיכתב ללא ידע
והתאמות אישיות לספקים. לכן, המדיניות בנוגע לממשקים ספציפיים ב-AOSP
נחשפות דרך מאפיינים במערכת/במדיניות Sepolicy/ציבורית, כדי שמדיניות הספק
להביע הסכמה למדיניות מערכת עתידית שמשתמשת במאפיינים האלה. אבל, לפעמים
תוספי מאפיינים ב-system/sepolicy/public
לא
יש תמיכה, לכן כל כללי המדיניות שקובעים את האינטראקציה בין רכיבי המערכת
ברכיבי ספק חדשים (ושלא מטופלות באמצעות מאפיינים שכבר מטופלים
שנמצאים ב-AOSP system/sepolicy/public
) חייבים להיות
device/manufacturer/device-name/sepolicy
המשמעות היא שלא ניתן לשנות את סוגי המערכות
הרשאת הגישה שמותרת לסוגי ספקים כחלק מ-OTA של מסגרת בלבד.