Skip to content

Commit f0b8229

Browse files
authored
Merge pull request #3018 from lobkovilya/dev-ru
[ru] Localize ebpf.md
2 parents 1071784 + 85a715f commit f0b8229

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

content/ru/ebpf.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
title: eBPF
3+
status: Completed
4+
category: Technology
5+
tags: ["architecture", "networking", "security"]
6+
---
7+
8+
Технология eBPF (англ. extended Berkley Packet Filter — расширенный фильтр пакетов Беркли)
9+
позволяет небольшим программам или скриптам запускаться в пространстве ядра ОС Linux
10+
без необходимости изменять код ядра или загружать модули ядра.
11+
12+
В ОС Linux есть два пространства: пространство ядра (kernel space) и пространство пользователя (user space).
13+
Ядро представляет основу операционной системы и имеет неограниченный доступ к аппаратному обеспечению.
14+
15+
Приложения находятся в пространстве пользователя.
16+
Когда возникает необходимость в привилегированном доступе, приложения отправляют запрос к ядру.
17+
Для приложений, требующих большей свободы действий, например, прямого доступа к аппаратному обеспечению,
18+
ядро может быть расширено за счёт модулей ядра Linux.
19+
Такой подход расширяет функциональность ядра, доступную по умолчанию, открывая приложениям доступ к более низкоуровневым компонентам.
20+
Однако расширение ядра с помощью модулей влечет за собой риски и потенциально снижает безопасность, что делает eBPF привлекательной альтернативой.
21+
22+
## Какую проблему решает
23+
24+
Как правило, приложения работают в пространстве пользователя.
25+
Если возникает необходимость в привилегированном доступе (например, к аппаратному обеспечению),
26+
приложение отправляет запрос к ядру. такой запрос называется «системный вызов».
27+
В большинстве случает такой подход прекрасно работает.
28+
Однако бывают ситуации, когда разработчики нуждаются в более низкоуровневом доступе к системе.
29+
Такие ситуации, как правило, связаны с наблюдаемостью (observability), безопасностью и работой с сетью.
30+
Использование модулей ядра Linux позволяет решить вышеупомянутую проблему без изменения исходного кода ядра.
31+
К сожалению, у этого подхода есть не только плюсы, но и минусы (в первую очередь, связанные с безопасностью).
32+
Модули ядра работают в пространстве ядра. Это означает, что сбой модуля неминуемо приводит к сбою ядра и, как следствие, падению всей системы.
33+
Кроме того, модули ядра наделены повышенными привилегиями и имеют прямой доступ к системным ресурсам. Если не обеспечить должную защиту, этими свойствами модулей могут воспользоваться злоумышленники.
34+
35+
## Как именно решает проблему
36+
37+
В отличие от модулей ядра, eBPF позволяет запускать пользовательские программы в более контролируемой и ограниченной среде.
38+
eBPF-программа работает в «песочнице» внутри ядра. Тем самым обеспечивается необходимая изоляция и снижаются риски.
39+
Даже если в eBPF-программе обнаружится уязвимость или какой-то изъян, их воздействие ограничится «песочницей».
40+
Более того, прежде чем программа сможет запуститься внутри ядра, она должна пройти процесс верификации.
41+
Верификатор проверяет eBPF-программу на наличие потенциально небезопасного кода: например, доступ к памяти за пределами выделенного буфера, бесконечные циклы и неавторизованный доступ к функциям ядра.
42+
Верификация гарантирует, что eBPF-программа не войдет в бесконечный цикл и не приведет к сбою ядра.
43+
Такие меры безопасности делают eBPF более надежным вариантом запуска приложений в ядре по сравнению с модулями ядра Linux.
44+

0 commit comments

Comments
 (0)