بعد دمج المستوى الأساسي من وظائف SELinux تحليل النتائج بدقة، يمكنك إضافة إعدادات السياسة الخاصة بك لتغطية تخصيصاتك لنظام التشغيل Android. ولا تزال هذه السياسات استيفاء برنامج التوافق مع Android المتطلبات كما يجب عدم إزالة إعدادات SELinux الافتراضية.
على الشركات المصنّعة عدم إزالة سياسة SELinux الحالية. وإلا، فيمكنهم تخاطر بتعطيل تنفيذ نظام Android SELinux والتطبيقات التي يحكم. ويشمل ذلك التطبيقات التابعة لجهات خارجية والتي من المحتمل أن تكون بحاجة إلى وتحسينه ليكون متوافقًا مع التشغيل والتشغيل. يجب ألّا تتطلب التطبيقات التعديل لمواصلة العمل على الأجهزة التي تستخدم SELinux.
عند البدء في تخصيص SELinux، تذكر ما يلي:
- كتابة سياسة SELinux لجميع البرامج الخفيّة الجديدة
- استخدام النطاقات المحدَّدة مسبقًا متى كان ذلك مناسبًا
- تحديد نطاق لأي عملية ناشئة كخدمة
init
- التعرّف على وحدات الماكرو قبل كتابة السياسة
- إرسال التغييرات على السياسة الأساسية إلى AOSP
وتذكر عدم:
- إنشاء سياسة غير متوافقة
- السماح بتخصيص سياسة المستخدم النهائي
- السماح بتخصيصات سياسة إدارة الأجهزة الجوّالة (MDM)
- إرهاب المستخدمين بسبب انتهاكات السياسة
- إضافة مداخل التخفي
يمكنك الاطّلاع على قسم ميزات أمان النواة في أجهزة Android مستند تعريف التوافق لمتطلبات محدّدة
تستخدم SELinux نهج القائمة البيضاء، أي أن جميع عمليات الوصول يجب أن تتم مسموح بها في السياسة ليتم منحها. نظرًا لأن نظام التشغيل SELinux الافتراضي في Android المشروع المفتوح المصدر لنظام Android، لست مطالبًا لتعديل إعدادات SELinux بأي شكل من الأشكال. إذا قمت بتخصيص إعدادات SELinux، فاحرص على ألا تعطّل التطبيقات الحالية. للبدء:
- يمكنك استخدام أحدث إصدار من نظام التشغيل Android kernel.
- استخدام مبادئ بأقل امتياز.
- تعامل مع إضافاتك الخاصة فقط إلى Android. تعمل السياسة التلقائية مع برنامج Android المفتوح المصدر مشروع قاعدة الرموز تلقائيًا.
- تقسيم مكونات البرنامج إلى وحدات تُجري مشروعًا فرديًا المهام.
- إنشاء سياسات SELinux التي تفصل هذه المهام عن المهام غير المرتبطة الأخرى.
- ضَع هذه السياسات في ملفات
*.te
(الامتداد الخاص بنظام SELinux) ملفات مصدر السياسة) داخل/device/manufacturer/device-name/sepolicy
الدليل واستخدام متغيراتBOARD_SEPOLICY
لتضمينها في التصميم الخاص بك. - جعل النطاقات الجديدة متساهلة في البداية. ويتم ذلك من خلال استخدام قاعدة بيانات
في ملف
.te
للنطاق. - تحليل النتائج وتحسين تعريفات نطاقك
- إزالة التعريف المتساهِل في حال عدم ظهور عمليات رفض إضافية في userdebug الإصدارات.
بعد دمج تغيير سياسة SELinux، يمكنك إضافة خطوة إلى لضمان التوافق مع SELinux من الآن فصاعدًا. في مثالي تطوير البرامج، وتتغير سياسة SELinux فقط عندما يتم في النموذج وليس التنفيذ الفعلي.
عند بدء تخصيص SELinux، عليك أولاً تدقيق الإضافات التي أضفتها إلى Android. في حال حذف أضفت مكونًا ينفذ دالة جديدة، فتأكد من أن المكون مع سياسة أمان Android، بالإضافة إلى أي سياسة مرتبطة طوّرتها المصنّع الأصلي للجهاز، قبل تفعيل وضع الفرض.
لمنع المشكلات غير الضرورية، من الأفضل أن تكون مفرطًا في العمل متوافقة للغاية من ملاءمتها بشدة أو غير متوافقة، مما يؤدي إلى تعطُّل وظائف الجهاز. وعلى العكس، إذا كانت تغييراتك ستفيد الآخرين، فيجب عليك إرسال التعديلات إلى سياسة SELinux الافتراضية التصحيح. إذا كانت التصحيح إذا تم تطبيقها على سياسة الأمان التلقائية، فلن تحتاج إلى إجراء هذا التغيير باستخدام لكل إصدار جديد من 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 };
لنحلِّل المثال:
في السطر الأول، يرث البرنامج الخفي لـ DHCP البرنامج الخفي لـ DHCP من
سياسة الأمان الأساسية (domain
). من البيان السابق
الأمثلة، يمكن لبروتوكول DHCP القراءة من /dev/null
والكتابة إليه.
في السطر الثاني، يتم تعريف DHCP على أنه نطاق متساهل.
في سطر init_daemon_domain(dhcp)
، تنص السياسة على أنّ بروتوكول DHCP هو
ناجمة عن init
ويُسمح لها بالاتصال بها.
في سطر net_domain(dhcp)
، تسمح السياسة لبروتوكول DHCP باستخدام
وظائف الشبكة الشائعة من نطاق net
مثل القراءة
وكتابة حزم بروتوكول التحكم بالنقل، والاتصال عبر المقابس، وإجراء نظام أسماء النطاقات
الطلبات.
في السطر allow dhcp proc_net:file write;
، تنص السياسة على
يستطيع بروتوكول DHCP الكتابة إلى ملفات محددة في /proc
. يوضح هذا الخط
تصنيف الملفات الدقيق في SELinux. تستخدم التصنيف proc_net
لقصر إمكانية الوصول للكتابة على الملفات ضمن /proc/sys/net
فقط.
يبدأ الجزء الأخير من المثال
يعرض allow dhcp netd:fd use;
كيفية السماح للتطبيقات
التفاعل مع بعضها البعض. تنص السياسة على أنّ بروتوكول DHCP والشبكة المتصلة بالإنترنت قد تتواصل مع
بعضها البعض باستخدام واصفات الملفات وملفات FIFO ومقابس مخطط البيانات وتدفق UNIX
والمقابس. قد يقوم DHCP بالقراءة والكتابة من مقابس مخطط البيانات وUNIX
ومقابس البث المباشر وعدم إنشائها أو فتحها.
عناصر التحكّم المتاحة
الفئة | الإذن |
---|---|
ملف |
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 |
توسيع |
وغير ذلك |
قواعد NOTallow
تحظر قواعد neverallow
في SELinux السلوك الذي يجب ألا يحدث أبدًا.
من خلال اختبار التوافق،
يتم الآن فرض قواعد SELinux neverallow
على جميع الأجهزة.
تهدف الإرشادات التالية إلى مساعدة الشركات المصنّعة في تجنُّب الأخطاء.
المرتبطة بقواعد neverallow
أثناء التخصيص. أرقام القواعد
المستخدم هنا يتوافق مع الإصدار 5.1 من نظام التشغيل Android وتخضع للتغيير حسب الإصدار.
القاعدة 48: neverallow { domain -debuggerd -vold -dumpstate
-system_server } self:capability sys_ptrace;
الاطّلاع على صفحة الدليل الخاصة بـ "ptrace
" sys_ptrace
تتيح إمكانية ptrace
أي عملية، وهو ما يتيح قدرًا كبيرًا من
من التحكم في العمليات الأخرى، وينبغي أن ينتمي فقط إلى النظام المعين
على النحو الموضّح في القاعدة. غالبًا ما تشير الحاجة إلى هذه الإمكانية
وجود شيء لا يهدف إلى الإنشاءات أو
الوظائف التي لا تحتاج إليها. أزل العنصر غير الضروري.
القاعدة 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
السياسة في المورِّد فقط.
.
في الإصدار 8.0 من نظام التشغيل Android والإصدارات الأحدث، يتم فرض السياسة في المواقع الجغرافية التالية في بروتوكول AOSP:
- system/sepolicy/public. يتضمن السياسة التي تم تصديرها للاستخدام
في السياسة الخاصة بالمورّد يدخل كل شيء في Android 8.0
البنية الأساسية للتوافق.
تهدف السياسة العامة إلى الاستمرار في الإصدارات المختلفة حتى تتمكن من تضمين
أي شيء
/public
في سياستك المخصصة. لهذا السبب، يكون نوع السياسة التي يمكن وضعها في/public
أكثر مقيَّد. ضع في الاعتبار واجهة برمجة التطبيقات للسياسة التي يتم تصديرها للنظام الأساسي: أيّ واجهة تتعامل مع الواجهة بين/system
و/vendor
ينتمي إلى هنا. - system/sepolicy/private: يتضمن السياسة اللازمة عمل صورة النظام، ولكن يجب تحديد سياسة صور البائع ليس لديهم معرفة.
- system/sepolicy/vendor يتضمن سياسة للمكونات التي
سيتم طرحها في
/vendor
ولكنها متضمّنة في شجرة المنصة الأساسية (ليست الأدلة الخاصة بالجهاز). وهذا عبارة عن أداة من أدوات والفرق بين الأجهزة والمكونات العامة؛ من الناحية النظرية، هذا جزءًا من السياسة الخاصة بالجهاز الموضحة أدناه. - device/manufacturer/device-name/sepolicy. يتضمن سياسة خاصة بالجهاز. يتضمّن أيضًا تخصيصات الجهاز من أجل التي تتوافق مع سياسة المكونات في الإصدار Android 8.0 والإصدارات الأحدث على صورة البائع.
في نظام التشغيل Android 11 والإصدارات الأحدث، يمكن أن تتضمن أقسام System_ext والمنتج السياسات الخاصة بالقسم. يتم أيضًا تقسيم مواد عرض إضافات النظام وسياسات المنتجات إلى العامة والخاصة، ويمكن للمورّدين استخدام خيارات النظام الأساسي مثل سياسة النظام.
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 أو الإصدارات الأحدث، يجب أن تكون صورة المورّد متوافقة بصورة نظام المصنّع الأصلي للجهاز والصورة المرجعية لنظام AOSP التي توفّرها Google (واجتياز اختبار CTS على هذه الصورة المرجعية). تضمن هذه المتطلبات إزالة الفصل بين إطار العمل وكود البائع. وتتيح هذه الأجهزة السيناريوهات التالية.
إضافات صور المورّدين فقط
مثال: إضافة خدمة جديدة إلى vndservicemanager
من صورة البائع التي تدعم العمليات من صورة البائع.
كما هو الحال مع الأجهزة التي تعمل بإصدارات Android السابقة، يمكنك إضافة
التخصيص في
device/manufacturer/device-name/sepolicy
سياسة جديدة تحكم كيفية تفاعل مكونات البائعين مع الموردين الآخرين (فقط)
أنواعًا موجودة فقط في
device/manufacturer/device-name/sepolicy
السياسة المكتوبة هنا تسمح للرمز البرمجي الخاص بالمورّد بالعمل، ولن يتم تعديلها كجزءٍ من هذه السياسة.
من تحديث عبر الهواء يستند إلى إطار عمل فقط، وأن تكون متاحة في السياسة المجمّعة على أحد الأجهزة
بصورة نظام AOSP المرجعية.
دعم صورة الموردين للعمل مع بروتوكول AOSP
مثال: إضافة عملية جديدة (تم تسجيلها باستخدام
hwservicemanager
من صورة البائع) تنفّذ
HAL الذي يحدده AOSP.
وكما هو الحال مع الأجهزة التي تعمل بإصدارات Android السابقة، يمكنك إجراء
تخصيص خاص بالجهاز في
device/manufacturer/device-name/sepolicy
تتوفّر السياسة التي يتم تصديرها كجزء من system/sepolicy/public/
للاستخدام، ويتم شحنها كجزء من سياسة البائعين. أنواع وسمات من
فقد يتم استخدام السياسة العامة في القواعد الجديدة التي تفرض التفاعلات مع السياسات
وحدات بت خاصة بالمورّد، وتخضع لمعيار neverallow
المقدَّم
القيود. كما هو الحال مع الحالة المخصّصة للمورّد فقط، لن يتم تعديل السياسة الجديدة هنا
كجزء من وكالات السفر على الإنترنت التي تعمل وفقًا لإطار العمل فقط، وستُطبّق في السياسة المجمّعة بشأن
صورة نظام AOSP المرجعية.
إضافات الصور فقط للنظام
مثال: إضافة خدمة جديدة (مسجَّلة لدى "مدير الخدمة") لا يتم الوصول إليها إلا من خلال عمليات أخرى من صورة النظام.
أضِف هذه السياسة إلى system/sepolicy/private
. يمكنك إضافة المزيد
عمليات أو كائنات لتفعيل الوظائف في صورة نظام شريك، بشرط
لا تحتاج هذه الأجزاء الجديدة إلى التفاعل مع المكونات الجديدة على صورة البائع
(على وجه التحديد، يجب أن تعمل هذه العمليات أو الكائنات بشكل كامل بدون سياسة من
صورة البائع). السياسة التي يتم تصديرها من خلال "system/sepolicy/public
" هي
متاحة هنا، تمامًا كما هو الحال مع إضافات صور البائعين فقط. هذه السياسة
من صورة النظام ويمكن تحديثها عبر اتصال لاسلكي يستند إلى إطار عمل فقط،
لن تكون موجودة عند استخدام صورة نظام AOSP المرجعية.
صورة البائع الإضافات التي تعرض مكونات AOSP الموسّعة
مثال: بروتوكول HAL جديد غير تابع لبرنامج AOSP لاستخدامه من قِبل البرامج الموسّعة التي أيضًا في صورة نظام AOSP (مثل خادم system_server موسع).
يجب إدراج سياسة التفاعل بين النظام والمورد في
device/manufacturer/device-name/sepolicy
الدليل الذي تم شحنه في قسم المورد.
هذا مشابه للسيناريو أعلاه لإضافة دعم صورة البائع للعمل
بصورة AOSP المرجعية، باستثناء مكونات AOSP المعدلة قد تكون أيضًا
تتطلب سياسة إضافية لتعمل بشكل صحيح مع باقي النظام
قسم (لا بأس به طالما أنّه لا يزال يتضمّن نوع AOSP العام
التسميات).
سياسة تفاعل مكونات AOSP العامة مع صور النظام فقط
يجب أن تكون الإضافات في system/sepolicy/private
.
صورة النظام الإضافات التي يمكنها الوصول إلى واجهات AOSP فقط
مثال: يجب أن تصل أي عملية جديدة في النظام لا تتبع AOSP إلى اتفاقية HAL على التي تعتمدها AOSP.
يشبه ذلك واجهة برمجة التطبيقات system-image فقط
مثال للإضافة، باستثناء مكونات النظام الجديدة التي قد تتفاعل عبر
الواجهة "system/vendor
". يجب أن تنطبق سياسة مكون النظام الجديد
يتم الدخول في system/sepolicy/private
، وهو أمر مقبول بشرط أن يكون
من خلال واجهة تم إنشاؤها مسبقًا بواسطة AOSP في
system/sepolicy/public
(أي الأنواع والسمات المطلوبة
الوظائف المتوفرة هنا). في حين أنّه من الممكن تضمين السياسة في السياسات الخاصة بكل جهاز
يتعذَر استخدام سياستَي system/sepolicy/private
الأخرى
الأنواع أو التغييرات (بأي طريقة تؤثر في السياسة) نتيجةً لإيجاد إطار عمل فقط
تحديث. يمكن إجراء تغيير على السياسة في التحديث عبر الهواء المستند إلى إطار العمل فقط، ولكن لن يتم ذلك
تظهر عند استخدام صورة نظام 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
تضيف
من خلال تقديم ضمان توافق جديد يجب تتبُّعه في
ملف الربط ويخضع لقيود أخرى. الأنواع
يمكن إضافة قواعد السماح المقابلة في system/sepolicy/public
.
والسمات وبيانات السياسة الأخرى غير متوافقة. بالإضافة إلى ذلك،
لا يمكن استخدام الأنواع العامة لتصنيف العناصر في
سياسة /vendor
.
سيناريوهات السياسة غير المتوافقة
الأجهزة التي تعمل بالإصدار 8.0 من نظام التشغيل Android والإصدارات الأحدث لا تتوافق مع ما يلي: سيناريو السياسة وأمثلة عنها
معلومات إضافية إضافات إلى صورة النظام التي تحتاج إلى إذن إلى المكونات الجديدة لصور البائعين بعد إجراء اتصال عبر الهواء مستند إلى إطار العمل فقط
مثال: عملية جديدة في نظام لا تتوافق مع بروتوكول AOSP وتتطلّب عملية خاصة بها نطاق جديد في إصدار Android التالي ويحتاج إلى الوصول إلى التي لا تتبع AOSP.
مشابه لـ
جديدة
تفاعل مكوِّنات النظام والمورِّد (التي لا تتوافق مع بروتوكول AOSP)، باستثناء النظام الجديد
النوع في
عبر الهواء وفقًا لإطار العمل فقط. ويمكن إضافة النوع الجديد إلى السياسة في
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
وهذا يعني أنّ أنواع الأنظمة لا يمكنها تغيير
الوصول المسموح به لأنواع البائعين كجزء من وكالات السفر على الإنترنت المستندة إلى إطار العمل فقط.