Алексей Буданков: "О модели контроля доступа к возможностям мониторинга производительности на Линуксе"
О модели контроля доступа к возможностям мониторинга производительности на Линуксе
Использование счетчиков производительности на Линуксе (perf_events API) сопряжено с риском утечки конфиденциальных данных, в случае использования этих счетчиков в мониторинге производительности процессов, обрабатывающих такие данные. Риск зависит от типов источников данных, из которых perf_events API и утилита Perf собирают данные для анализа производительности процесса и системы в целом. Значения, собранные из регистров общего назначения, архитектурных MSR-регистров, памяти процесса могут содержать конфиденциальные данные. Таким образом, если API или утилита в своих режимах работы зачитывают содержимое упомянутых регистров или памяти анализируемого процесса доступ к этим режимам необходимо контролировать и упорядочивать 1). В текущей реализации ядра 5.8 используется комбинация механизмов контроля доступа к perf_events API:
настройки sysctl (perf_event_paranoid), механизм DAC (Linux capabilities), LSM перехватчики системных вызовов для реализации механизма MAC (SELinux etc.). В своем докладе Алексей расскажет о модели контроля доступа к perf_events API, актуальной для версии ядра 5.8 1), 2), 3). Будут рассмотрены типичные примеры конфигурации доступа к API для мониторинга активности собственных пользовательских процессов и мониторинга целой системы выделенной группой пользователей 4). Так же будут представлены возможности использования механизма MAC для контроля доступа к perf_events API на примере реализации SELinux в дистрибутиве Fedora.
1) https://www.kernel.org/doc/html/latest/admin-guide/perf-security.html
2) https://lwn.net/Articles/812719/
3) https://lore.kernel.org/lkml/20191014170308.70668-1-joel@joelfernandes.org/
4) https://software.intel.com/content/www/us/en/develop/documentation/vtune-cookbook/top/configuration-recipes/profiling-hardware-without-sampling-drivers.html
Алексей Буданков
Ведущий инженер по программному обеспечению
Intel Russia
Алексей является ведущим инженером по программному обеспечению корпорации Intel и занимается разработкой и созданием программных инструментов для анализа производительности кода на архитектуре Intel. Алексей является архитектором и контрибьютором функциональности, расширяющей возможности perf_events API, утилиты Perf и других подсистем Линукс для нужд основного профилировщика от Intel (Intel VTune Profiler). В область экспертизы Алексея входят особенности функционирования микроархитектуры x86 и построения операционных систем, профилирование, динамическая инструментация и трассирование кода.