Каталоги, правила и политика безопасности

На этой странице описана структура каталога для устройств под управлением Android 8.0 и более поздних версий, правила VNDK и связанная с ними политика безопасности.

Макет каталога

Вырожденный макет каталогов состоит из следующих каталогов:

  • /system/lib[64] содержит все общие библиотеки платформы, включая LL-NDK, VNDK и библиотеки только для платформы (включая LL-NDK-Private и некоторые библиотеки с теми же именами, что и в VNDK-SP).
  • /system/lib[64]/vndk-sp содержит библиотеки VNDK-SP для HAL одного и того же процесса.
  • /vendor/lib[64] содержит библиотеки VNDK, расширенные поставщиком (библиотеки DXUA или DXUX VNDK), реализации HAL того же процесса и общие библиотеки других поставщиков.
  • /vendor/lib[64]/vndk-sp может содержать библиотеки VNDK-SP, расширенные поставщиком.

Модули поставщиков загружают библиотеки VNDK из /system/lib[64] .

Правила ВНДК

В этом разделе представлен полный список правил VNDK:

  • Процессы платформы не должны загружать общие библиотеки, отличные от SP-HAL, из разделов поставщика (строго соблюдается, начиная с Android 8.1).
  • Процессы поставщика не должны загружать библиотеки, отличные от LL-NDK, не-VNDK-SP и не-VNDK, из системного раздела. (не строго соблюдается в Android O, но будет в будущем выпуске).
  • Установленные библиотеки VNDK должны входить в состав подмножества соответствующих библиотек VNDK, определенных Google.
  • Внешние зависимости SP-HAL и SP-HAL-Dep должны быть ограничены библиотеками LL-NDK или Google VNDK-SP.
    • Зависимости общей библиотеки SP-HAL должны быть ограничены библиотеками LL-NDK, определенными Google библиотеками VNDK-SP, другими библиотеками SP-HAL и/или общими библиотеками других поставщиков, которые могут быть помечены как библиотеки SP-HAL-Dep. .
    • Общая библиотека поставщика может быть помечена как библиотека SP-HAL-Dep только в том случае, если она не является библиотекой AOSP и ее зависимости ограничены библиотеками LL-NDK, определенными Google библиотеками VNDK-SP, библиотеками SP-HAL и/или другие библиотеки SP-HAL-Dep.
  • ВНДК-СП должен быть автономным. libRS_internal.so получает специальную обработку в Android 8.0, но к нему мы вернемся в будущем выпуске.
  • Никакой связи между платформой и поставщиком через интерфейсы, отличные от HIDL, включая (но не ограничиваясь) связующее устройство, сокеты, общую память, файлы и т. д.
  • Размер системного раздела должен быть достаточно большим, чтобы содержать две копии всех подходящих библиотек VNDK и копию неподходящих общих библиотек платформы.

сеполитика

Процессы платформы, описанные в этом разделе, соответствуют coredomain в политиках se, а процессы поставщика соответствуют non-coredomain . Например, /dev/binder доступен только в coredomain , а /dev/vndbinder только в неосновном coredomain .

Подобные политики ограничивают доступ к общим библиотекам в системных и вендорных разделах. В следующей таблице показаны права доступа к общим библиотекам разных категорий:

Категория Раздел Доступно из
основной домен
Доступно из
неосновной домен
ЛЛ-НДК Система Да Да
ЛЛ-НДК-Частный Система Да Да
ВНДК-СП/ВНДК-СП-Частный Система Да Да
ВНДК-СП-Ext Продавец Да Да
ВНДК Система Да Да
ВНДК-Ext Продавец Н Да
ТОЛЬКО FWK Система Да Н
FWK-ТОЛЬКО-RS Система Да Н
СП-ХАЛ Продавец Да Да
SP-HAL-Отдел Продавец Да Да
ТОЛЬКО ВНД Продавец Н Да

LL-NDK-Private и VNDK-SP-Private должны быть доступны из обоих доменов, поскольку неосновной coredomain будет иметь к ним косвенный доступ. Аналогично, SP-HAL-Dep должен быть доступен из coredomain , поскольку SP-HAL полагается на него.

метка same_process_hal_file

В разделе поставщика существуют следующие библиотеки. Сделайте эти библиотеки доступными как из coredomain , так и из неосновного coredomain .

  • VNDK-SP-Ext в /vendor/lib[64]/vndk-sp
  • SP-HAL в /vendor/lib[64] или /vendor/lib[64]/hw
  • SP-HAL-Dep в /vendor/lib[64] или /vendor/lib[64]/hw

Явно пометьте эти файлы как same_process_hal_file , поскольку все в разделе vendor по умолчанию недоступно для coredomain . Добавьте строки, подобные приведенным ниже, в файл file_contexts , зависящий от поставщика.

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0
,

На этой странице описана структура каталога для устройств под управлением Android 8.0 и более поздних версий, правила VNDK и связанная с ними политика безопасности.

Макет каталога

Вырожденный макет каталогов состоит из следующих каталогов:

  • /system/lib[64] содержит все общие библиотеки платформы, включая LL-NDK, VNDK и библиотеки только для платформы (включая LL-NDK-Private и некоторые библиотеки с теми же именами, что и в VNDK-SP).
  • /system/lib[64]/vndk-sp содержит библиотеки VNDK-SP для HAL одного и того же процесса.
  • /vendor/lib[64] содержит библиотеки VNDK, расширенные поставщиком (библиотеки DXUA или DXUX VNDK), реализации HAL того же процесса и общие библиотеки других поставщиков.
  • /vendor/lib[64]/vndk-sp может содержать библиотеки VNDK-SP, расширенные поставщиком.

Модули поставщиков загружают библиотеки VNDK из /system/lib[64] .

Правила ВНДК

В этом разделе представлен полный список правил VNDK:

  • Процессы платформы не должны загружать общие библиотеки, отличные от SP-HAL, из разделов поставщика (строго соблюдается, начиная с Android 8.1).
  • Процессы поставщика не должны загружать библиотеки, отличные от LL-NDK, не-VNDK-SP и не-VNDK, из системного раздела. (не строго соблюдается в Android O, но будет в будущем выпуске).
  • Установленные библиотеки VNDK должны входить в состав подмножества соответствующих библиотек VNDK, определенных Google.
  • Внешние зависимости SP-HAL и SP-HAL-Dep должны быть ограничены библиотеками LL-NDK или Google VNDK-SP.
    • Зависимости общей библиотеки SP-HAL должны быть ограничены библиотеками LL-NDK, определенными Google библиотеками VNDK-SP, другими библиотеками SP-HAL и/или общими библиотеками других поставщиков, которые могут быть помечены как библиотеки SP-HAL-Dep. .
    • Общая библиотека поставщика может быть помечена как библиотека SP-HAL-Dep только в том случае, если она не является библиотекой AOSP и ее зависимости ограничены библиотеками LL-NDK, определенными Google библиотеками VNDK-SP, библиотеками SP-HAL и/или другие библиотеки SP-HAL-Dep.
  • ВНДК-СП должен быть автономным. libRS_internal.so получает специальную обработку в Android 8.0, но к нему мы вернемся в будущем выпуске.
  • Никакой связи между платформой и поставщиком через интерфейсы, отличные от HIDL, включая (но не ограничиваясь) связующее устройство, сокеты, общую память, файлы и т. д.
  • Размер системного раздела должен быть достаточно большим, чтобы содержать две копии всех подходящих библиотек VNDK и копию неподходящих общих библиотек платформы.

сеполитика

Процессы платформы, описанные в этом разделе, соответствуют coredomain в политиках se, а процессы поставщика соответствуют non-coredomain . Например, /dev/binder доступен только в coredomain , а /dev/vndbinder только в неосновном coredomain .

Подобные политики ограничивают доступ к общим библиотекам в системных и вендорных разделах. В следующей таблице показаны права доступа к общим библиотекам разных категорий:

Категория Раздел Доступно из
основной домен
Доступно из
неосновной домен
ЛЛ-НДК Система Да Да
ЛЛ-НДК-Частный Система Да Да
ВНДК-СП/ВНДК-СП-Частный Система Да Да
ВНДК-СП-Ext Продавец Да Да
ВНДК Система Да Да
ВНДК-Ext Продавец Н Да
ТОЛЬКО FWK Система Да Н
FWK-ТОЛЬКО-RS Система Да Н
СП-ХАЛ Продавец Да Да
SP-HAL-Отдел Продавец Да Да
ТОЛЬКО ВНД Продавец Н Да

LL-NDK-Private и VNDK-SP-Private должны быть доступны из обоих доменов, поскольку неосновной coredomain будет иметь к ним косвенный доступ. Аналогично, SP-HAL-Dep должен быть доступен из coredomain , поскольку SP-HAL полагается на него.

метка same_process_hal_file

В разделе поставщика существуют следующие библиотеки. Сделайте эти библиотеки доступными как из coredomain , так и из неосновного coredomain .

  • VNDK-SP-Ext в /vendor/lib[64]/vndk-sp
  • SP-HAL в /vendor/lib[64] или /vendor/lib[64]/hw
  • SP-HAL-Dep в /vendor/lib[64] или /vendor/lib[64]/hw

Явно пометьте эти файлы как same_process_hal_file , поскольку все в разделе vendor по умолчанию недоступно для coredomain . Добавьте строки, подобные приведенным ниже, в файл file_contexts , зависящий от поставщика.

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0