eBPF là gì? Được sử dụng như thế nào cho Kubernetes

2299
17-09-2024
eBPF là gì? Được sử dụng như thế nào cho Kubernetes

eBPF đang là một trong những công nghệ được nhắc đến nhiều nhất hiện nay, đã và đang chứng minh giá trị và khả năng ứng dụng của mình trong môi trường native cloud. Khả năng cải thiện hiệu quả tính toán và nâng cao năng lực xử lý cho nhiều công cụ và nền tảng của eBPF, đặc biệt là trong bảo mật, khả năng quan sát và kết nối mạng, là điều không thể phủ nhận. Vậy eBPF là gì thì hãy  cùng Bizfly Cloud tìm hiểu ngay 

eBPF là gì và tại sao nó lại quan trọng?

eBPF là viết tắt của bộ lọc gói Berkeley mở rộng. Kiến trúc cho Bộ lọc gói Berkeley mở rộng bao gồm các yếu tố như xác minh chương trình, lời gọi trợ giúp, bản đồ eBPF, hook được xác định trước, hàm và lời gọi đuôi.

Vậy eBPF là gì ngoài một công nghệ native cloud và nó lấy siêu năng lực ở đâu? Sức mạnh của eBPF phần lớn nằm ở hiệu quả tính toán của nó vì nó được liên kết trực tiếp với kernel Linux. Tuy nhiên, việc coi eBPF chỉ đơn thuần là một công cụ dựa trên kernel Linux là sai lệch, vì tác động của nó lan rộng trên toàn bộ ngăn xếp, tác động đến các ứng dụng mà nó được áp dụng.

Một khía cạnh quan trọng trong vẻ đẹp của eBPF là nó đã được sử dụng và áp dụng theo nhiều cách khác nhau thông qua các dự án mã nguồn mở. Trái ngược với các công nghệ khác như WebAssembly, vốn hứa hẹn về hiệu quả tính toán và khả năng khởi tạo lệnh trên các điểm cuối cùng lúc, eBPF đã hiện thực hóa tiềm năng của nó. Các thách thức của WebAssembly với tiêu chuẩn hóa đã cản trở khả năng áp dụng của nó trên các trường hợp sử dụng điểm cuối khác nhau.

eBPF khác biệt như thế nào và cách chuẩn bị cho eBPF?

Để sử dụng biệt ngữ của ngành, nó được đóng hộp cát để chạy và cung cấp nhiều khả năng khác nhau mở rộng cho các quy trình của người dùng, bao gồm các trường hợp sử dụng từ khả năng quan sát, bảo mật, kết nối mạng, theo dõi và hoạt động như một sự thay thế cho sidecar và service mesh.

eBPF là gì và tại sao nó lại quan trọng?

eBPF là gì và tại sao nó lại quan trọng?

Không sử dụng thuật ngữ "đóng hộp cát" được sử dụng quá mức, có thể nói rằng eBPF chạy từ bên trong kernel cho phép thời gian chạy với nó chạy trong một môi trường khép kín. Nói cách khác, nó loại bỏ một vectơ tấn công tiềm ẩn vì những người xấu không thể viết hoặc truy cập nó như khi nó đang chạy trong một vùng chứa, một pod hoặc một nơi nào khác có chung đặc quyền.

eBPF đang được sử dụng theo nhiều cách khác nhau và đã hình thành nên nền tảng của nhiều dự án thương mại thành công. Đối với mục đích bảo mật, nó là một động lực thúc đẩy. Việc vượt qua các trở ngại từng cản trở việc áp dụng eBPF đã mở đường cho nhiều công cụ và nền tảng khác nhau, không chỉ vượt qua những thách thức này mà còn nâng cao hiệu quả trên các ứng dụng bảo mật, khả năng quan sát, kết nối mạng và các ứng dụng khác.

Điều này phần lớn là do các công ty hoặc tổ chức muốn tận dụng eBPF có thể thiếu nguồn lực để phát triển nội bộ quy mô lớn hoặc chuyên môn để khai thác trực tiếp lợi thế của eBPF. Đây là lúc các nhà cung cấp công cụ BPF và nhà cung cấp nền tảng phát huy tác dụng. Chuyên môn của họ lấp đầy khoảng trống, bao gồm hiểu biết về Linux (về mặt kỹ thuật là Unix) để tạo quy trình bằng mã kernel cần thiết để chạy các ứng dụng hoặc thiết bị eBPF. Hơn nữa, một số kernel Linux không hỗ trợ eBPF, nhưng các nhà cung cấp công cụ đã khắc phục hạn chế này.

Nhưng vì mã eBPF nằm trong kernel Linux, nên một số người có thể lo ngại về bảo mật:

  • Torsten Volk, nhà phân tích của Enterprise Management Associates (EMA), cho biết: "Việc thực thi mã tùy chỉnh trong kernel, theo định nghĩa, luôn tạo ra bề mặt tấn công để kẻ xấu khai thác. Tuy nhiên, các biện pháp đối phó rất giống với các biện pháp đảm bảo bảo mật cho phần còn lại của ngăn xếp: cập nhật kernel của bạn, đảm bảo giám sát tập trung tất cả các ứng dụng eBPF, áp dụng bộ chính sách bảo mật tập trung và tạo kiểm toán tập trung là một số trụ cột chính của chiến lược này.".
  • Gartner đưa ra các khuyến nghị sau đây cho người dùng:
  • Đối với các tổ chức vẫn đang sử dụng bản phân phối eBPF Linux với hỗ trợ eBPF hạn chế hoặc không có, hãy di chuyển sang các nền tảng hiện đại hơn.
  • Tìm kiếm các giải pháp cơ sở hạ tầng kết nối mạng vùng chứa (CNI) Kubernetes eBBF khi quy mô, hiệu suất, khả năng hiển thị và bảo mật là ưu tiên hàng đầu.
  • Sử dụng các biến thể eBPF Linux cung cấp hỗ trợ eBPF để cho phép hiệu suất mạng, khả năng hiển thị và các sản phẩm bảo mật eBPF.
  • Khám phá xem liệu eBPF có thể giải quyết một cách có ý nghĩa các thách thức về hiệu suất hoặc khả năng hiển thị của tổ chức bằng cách hỗ trợ các doanh nghiệp công nghệ tiên tiến hay không.
  • Đầu tư vào eBPF để cải thiện hiệu suất và khả năng hiển thị, để tránh bị tụt hậu so với đối thủ cạnh tranh, cho các nhà cung cấp mạng và bảo mật mạng.
  • Volk cho biết khả năng giám sát và tương tác trực tiếp với các lệnh gọi hệ thống, luồng và quy trình, kết hợp với quyền truy cập trực tiếp vào các số liệu về độ trễ và mức sử dụng, tất cả đều theo thời gian thực, khiến eBPF trở thành một nền tảng tuyệt vời cho các ứng dụng bảo mật và khả năng quan sát.
  • Nói tóm lại, "eBPF rất phù hợp cho các ứng dụng microservice thay đổi nhanh chóng, vì các nút máy chủ có thể được giám sát trên đám mây và có thể theo dõi độ trễ của các lệnh gọi hàm mà không cần thiết bị đo thủ công, miễn là chúng chạy Linux với hỗ trợ eBPF", Volk nói. "Việc tận dụng các khả năng của eBPF là điều không cần phải bàn cãi, vì công nghệ này có thể được áp dụng dần dần và mà không cần phải từ bỏ các công cụ quan sát, kết nối mạng hoặc bảo mật truyền thống.".

eBPF có 'dựa trên' kernel Linux không? Sự khác biệt giữa BPF và eBPF

Người ta thường viết và nói rằng eBPF "dựa trên" kernel Linux. Điều này không hoàn toàn đúng. Như thường lệ khi từ "dựa trên" được sử dụng để mô tả một công nghệ, việc hiểu cách eBPF và mối quan hệ của nó với các hàm kernel Linux trước tiên yêu cầu một định nghĩa hoặc mô tả về chính kernel Linux.

Kernel Linux được coi là mã cốt lõi hoặc trái tim của hệ điều hành Linux. Ví dụ: kernel xác định quy trình và trình điều khiển của người dùng nào có quyền truy cập hạn chế vào CPU và bộ nhớ để thực hiện các chức năng của chúng.

Nhưng các hàm eBPF không thay đổi kernel; thay vào đó, nó có quyền truy cập trực tiếp vào CPU và bộ nhớ. Hãy nhớ rằng, kernel đóng vai trò là người hòa giải, theo một nghĩa nào đó và như vậy, eBPF không thay đổi mã kernel. Tuy nhiên, nó bỏ qua kernel theo một cách nhất định bằng cách hoạt động hoặc hoạt động trực tiếp và kết nối trực tiếp với CPU và bộ nhớ.

Do đó, một nguồn sức mạnh đáng kể của nó không giống như WebAssembly. Mặc dù có một mối quan hệ nghịch đảo với WebAssembly, vì nó tương tác với CPU tại các điểm cuối mà mã trong mô-đun WebAssembly được phân phối.

Theo cách này, eBPF chạy, thêm vào hoặc thậm chí mở rộng kernel Linux như một tính năng của hệ điều hành hoặc cụ thể hơn là chính kernel. Một lần nữa, vì nó là một phần của chính kernel, nên dự án Linux Foundation này về cơ bản có thể mở rộng bất kỳ nơi nào mà các quy trình và ứng dụng tương thích với Linux chạy. Phần mở rộng này bao gồm từ máy chủ trong trung tâm dữ liệu đến môi trường Kubernetes phân tán cao cho các ứng dụng native cloud.

Microsoft là một trong những người tạo ra eBPF Foundation vào năm 2021, cùng với Google, Isovalent, Meta và Netflix và một lần nữa, nó là một dự án của Linux Foundation. Microsoft hầu như không phải là người ủng hộ chính cho Windows, mặc dù hiệu suất, bảo mật và các vấn đề khác đã được ghi nhận rõ ràng so với hệ điều hành Linux. Điều này giải thích cho sự tồn tại của eBPF cho Windows.

Mặc dù eBPF cho Windows vẫn chưa đạt được sự áp dụng rộng rãi như đối tác eBPF Linux của nó, nhưng Microsoft vẫn tiếp tục đưa ra các minh chứng về việc sử dụng và nhiều hook của nó.

Microsoft mô tả eBPF không nằm trong bối cảnh của kernel Linux, mà là một phần của hệ điều hành nói chung - cụ thể là hệ điều hành Windows.

Rủi ro bảo mật của eBPF là gì? BPF vs. eBPF: Sự khác biệt then chốt

Cách eBPF được tích hợp với Kernel Linux có thể gây ra lo ngại về bảo mật cho một số người. Rốt cuộc, việc có mã độc hại có quyền truy cập trực tiếp vào hệ điều hành và CPU là điều không ai muốn ngoại trừ những kẻ tấn công.

Để giải quyết lo ngại về bảo mật eBPF này, eBPF Verifier sẽ kiểm tra mã và chỉ cấp quyền ghi eBPF sau khi xác minh rằng chương trình được cấp phép theo GPL, để giúp đảm bảo tính bảo mật và khả năng tương thích của nó. Tất nhiên, không có gì là hoàn toàn an toàn, nhưng cho đến nay, các cuộc tấn công lớn được dàn dựng thông qua eBPF ở cấp độ kernel vẫn chưa được báo cáo.

Trường hợp được báo cáo đầu tiên về BPF lúc đó bao gồm Bộ lọc gói Berkeley hợp nhất với trình biên dịch kernel Linux vào năm 2010. Việc sử dụng lần đầu tiên được báo cáo cho mục đích phi mạng được cho là của Kỹ sư phần mềm chính của Google, Will Drewry, người phát hiện ra rằng việc định cấu hình BPF cho lớp mạng đóng vai trò là seccomp phù hợp - chế độ tính toán an toàn cho kernel Linux. Phát hiện được báo cáo này vào năm 2012 là nguồn gốc cho bảo mật và các hook khác sẽ tạo tiền đề cho những phát triển thú vị hơn sắp tới.

Nếu bạn xem xét BPF một cách độc lập, thì đó là về việc xử lý các gói một cách hiệu quả và eBPF mở rộng các khả năng này. Trường hợp đầu tiên của eBFF được cho là xuất hiện vào năm 2014 và sau đó, như bây giờ, vẫn đang được tiến hành. Ban đầu tập trung chủ yếu vào mạng, sau đó nó được mở rộng để bao gồm các lệnh gọi hệ thống và các chức năng khác, đôi khi kết hợp các yếu tố tương tự. Sự mở rộng này dẫn đến thuật ngữ "bộ lọc gói Berkeley được mở rộng hoàn toàn".

Giám đốc điều hành kiêm đồng sáng lập Shauli Rozen của ARMO, công ty cung cấp Nền tảng ARMO, một nền tảng bảo mật Kubernetes cấp doanh nghiệp được hỗ trợ bởi Kubescape, cho biết sự khác biệt về danh pháp từ BPF so với eBPF thậm chí có thể được quy cho tiếp thị.

"Đó là một cách để khơi dậy sự quan tâm đến một thứ gì đó mạnh mẽ mà vẫn chưa đạt được sức hút lớn", Rozen nói. "ARMO đang sử dụng rất nhiều dữ liệu khả năng quan sát từ BPF để tăng thêm giá trị cho các biện pháp bảo mật của bạn và hỗ trợ ưu tiên. Bạn nhận biết được những nỗ lực bảo mật mà bạn đang triển khai để nâng cao môi trường của mình, dựa trên dữ liệu khả năng quan sát được tạo ra.".

Điều gì đặc biệt về những gì eBPF mang lại cho mạng, đặc biệt là trong môi trường native cloud?

eBPF cũng đã được chứng minh là cho phép tăng đáng kể mạng lưới trong năng suất mạng. Điều này phần lớn là do, một lần nữa, thực tế là eBPF nằm trong kernel và do đó trực tiếp điều hướng lưu lượng truy cập đến CPU. Các kỹ thuật như cân bằng tải XDP được thay thế trong nhiều trường hợp bằng các khả năng kết nối mạng này.

Có các tính năng tích hợp sẵn cho khả năng quan sát eBPF, cũng như cho bảo mật eBPF. Điều này cũng được thực hiện thông qua các hook, tất nhiên, được triển khai trước trên toàn bộ mạng. Nhờ các hook được đặt trong đó nằm trong kernel. 

SHARE