Bối cảnh và vấn đề nghiên cứu

Trong xu hướng phát triển ứng dụng phân tán hiện đại, công nghệ container hóa (tiêu biểu là Docker) đã tạo ra bước chuyển lớn trong việc đóng gói và triển khai phần mềm. Tuy nhiên, việc vận hành một hệ sinh thái container quy mô lớn trên môi trường sản xuất thuần túy bằng Docker bộc lộ nhiều hạn chế nghiêm trọng:

  • Khó khăn trong việc quản trị đồng thời nhiều máy chủ (host) chứa container.
  • Sự phức tạp trong quy trình cập nhật phiên bản ứng dụng mà không gây gián đoạn dịch vụ.
  • Khả năng mở rộng hoặc thu hẹp hệ thống (scale up/down) linh hoạt theo tải thực tế còn hạn chế.
  • Thiếu hụt cơ chế tự động khởi động lại và phục hồi container khi phát sinh sự cố (self-healing).
  • Hạn chế trong việc cân bằng tải nội bộ và điều phối lưu lượng mạng giữa các dịch vụ.
  • Khó khăn trong việc giám sát, quan sát giao tiếp liên lạc nội bộ giữa các container.
  • Quản lý dữ liệu phân tán, lưu vết nhật ký hoạt động (logging) và chuẩn hóa quy trình làm việc phức tạp.

Hệ thống điều phối Kubernetes (K8s) ra đời nhằm khắc phục các rào cản trên bằng cơ chế tự động hóa, mở rộng linh hoạt và quản lý theo phương thức khai báo (declarative) thông qua các tệp cấu hình YAML. Mặc dù vậy, mô hình mạng mặc định của Kubernetes cho phép toàn bộ các pod giao tiếp tự do với nhau, đặt ra thách thức an ninh rất lớn. Các phương thức bảo vệ mặc định như Network Policy truyền thống phụ thuộc vào bộ lọc địa chỉ IP và bảng iptables của hệ điều hành, vốn bộc lộ độ trễ cao và khó mở rộng trong các cụm máy chủ lớn. Do đó, việc xây dựng một kiến trúc bảo mật chuyên sâu, hỗ trợ kiểm soát lưu lượng vi mô và giám sát toàn diện cho môi trường Kubernetes trở thành yêu cầu cấp thiết.

Tác giả xác định các mục tiêu và nhiệm vụ nghiên cứu cụ thể như sau:

  1. Nâng cao tính bảo mật cho hệ thống Kubernetes có sử dụng kiến trúc Microservice một cách hiệu quả, dễ dàng tiếp cận với người dùng và không đòi hỏi kiến thức bảo mật quá chuyên sâu.
  2. Cải tiến những tính năng quản lý, phân phối lưu lượng mà Kubernetes cung cấp, hỗ trợ quá trình vận hành và kiểm soát hạ tầng tối ưu hơn.
  3. Xây dựng hệ thống quan sát tập trung trong môi trường Kubernetes nhằm phát hiện sớm và xử lý kịp thời các sự cố an toàn thông tin phát sinh.

Đối tượng và phạm vi nghiên cứu của đề tài bao gồm:

  • Đối tượng nghiên cứu: Ứng dụng web xây dựng theo kiến trúc Microservices đa dịch vụ; nền tảng điều phối cụm Kubernetes được thiết lập thông qua công cụ Minikube; các giải pháp an ninh mạng, mã hóa và kiểm soát danh tính của nền tảng Cilium.
  • Phạm vi nghiên cứu: Thiết kế, triển khai thử nghiệm cụm Kubernetes cục bộ trên công cụ Minikube; tích hợp nền tảng bảo mật mạng Cilium và công cụ giám sát Hubble; khảo nghiệm các cơ chế kiểm soát truy cập từ tầng 3 đến tầng 7 (L3/L4/L7), chính sách hạn chế kết nối ngoại vi theo tên miền (DNS egress), mã hóa lưu lượng pod-to-pod bằng WireGuard và xác thực lẫn nhau (mutual authentication) qua khuôn khổ SPIFFE/SPIRE.

Cơ sở lý thuyết và phương pháp

Nghiên cứu dựa trên các nền tảng lý thuyết và công nghệ cốt lõi trong hạ tầng điện toán đám mây và an toàn thông tin:

  • Kubernetes (K8s): Nền tảng điều phối container phân tán. Kiến trúc bao gồm Master Node (chứa API server, etcd, kube-scheduler, controller manager) giữ vai trò điều khiển và các Worker Node (chứa kubelet, kube-proxy, runtime container) thực thi ứng dụng. Đơn vị triển khai cơ sở là Pod – chứa một hoặc nhiều container dùng chung không gian mạng và địa chỉ IP.
  • eBPF (Extended Berkeley Packet Filter): Công nghệ tiên tiến trong nhân Linux, cho phép lập trình và thực thi các chương trình bytecode an toàn, hiệu năng cao ngay trong không gian kernel mà không cần can thiệp mã nguồn hay nạp thêm module kernel. eBPF đóng vai trò thay thế cơ chế chuyển tiếp iptables truyền thống, giảm thiểu độ trễ xử lý gói tin.
  • Cilium: Giải pháp mạng, bảo mật và quan sát mã nguồn mở xây dựng trên nền tảng eBPF. Thay vì quản lý kết nối dựa trên địa chỉ IP động (vốn liên tục thay đổi và gây quá tải bảng định tuyến), Cilium kiểm soát lưu lượng dựa trên danh tính bảo mật (security identities) gán theo nhãn (labels) và siêu dữ liệu của Pod. Kiến trúc của Cilium bao gồm:
    • Cilium Agent: Tiến trình chạy trên từng node để biên dịch các chính sách an ninh thành chương trình eBPF và nạp vào kernel.
    • Cilium Operator: Thành phần quản lý và đồng bộ các tác vụ mang tính toàn cụm.
    • Cilium CLI: Bộ công cụ dòng lệnh hỗ trợ cài đặt, cấu hình và kiểm tra trạng thái hoạt động.
    • CNI Plugin (Container Network Interface): Điểm tích hợp kích hoạt cấu hình đường truyền dữ liệu (datapath) và áp dụng chính sách cho Pod.
  • Hubble: Nền tảng giám sát mạng và an ninh phân tán xây dựng trên Cilium và eBPF. Hubble gồm máy chủ (Hubble Server) nhúng trong Cilium Agent, thành phần thu thập cụm (Hubble Relay), giao diện dòng lệnh (Hubble CLI) và giao diện trực quan hóa (Hubble UI).
  • WireGuard: Giao thức mạng riêng ảo (VPN) hiện đại tích hợp sẵn từ nhân Linux 5.0, cung cấp khả năng mã hóa trong suốt (transparent encryption) cho lưu lượng liên node trong cụm Kubernetes mà không cần triển khai sidecar proxy phức tạp.
  • SPIFFE / SPIRE (Secure Production Identity Framework for Everyone): Khung tiêu chuẩn mở định danh khối lượng công việc thông qua tài liệu chứng thực danh tính ngắn hạn (SVID), hỗ trợ xác thực lẫn nhau giữa các dịch vụ trong môi trường phân tán.

Về mặt phương pháp luận, tác giả sử dụng phương pháp nghiên cứu thực nghiệm kết hợp đối sánh kỹ thuật. Hệ thống được triển khai trên môi trường giả lập thực tế để thu thập dữ liệu lưu lượng và đánh giá hành vi.

Thuộc tính phân định Network Policy tiêu chuẩn của Kubernetes Chính sách mạng của Cilium (CiliumNetworkPolicy)
Đối tượng chọn (Selectors) Giới hạn theo Pod Linh hoạt trên Endpoints (gồm Pod, Node), Services
Hướng lưu lượng (Traffic Direction) Kiểm soát luồng vào (Ingress) và luồng ra (Egress) Kiểm soát luồng vào (Ingress) và luồng ra (Egress)
Phạm vi lọc lưu lượng (Traffic Filtering) Nhãn Pod, nhãn Namespace, dải CIDR, cổng tầng 4 (L4) Nhãn Endpoint/Namespace, dải CIDR, cổng tầng 4 (L4), tầng ứng dụng (L7), tên miền DNS, Thực thể (Entities), Dịch vụ (Services)
Cơ chế phân giải danh tính Dựa trên địa chỉ IP và chuỗi quy tắc iptables Dựa trên danh tính eBPF phân bổ theo nhãn (Identity-based)

Thiết kế và triển khai

Hệ thống thực nghiệm được thiết kế hoàn chỉnh từ việc phân vùng hạ tầng máy chủ ảo đến việc cấu hình các dịch vụ ứng dụng và chính sách mạng chuyên sâu.

Kiến trúc phân vùng hạ tầng cụm

Tác giả sử dụng công cụ Minikube trên nền tảng Linux để khởi tạo một cụm Kubernetes gồm 3 node, được phân định vai trò bằng kịch bản gắn nhãn bash (node_labels.sh) thông qua công cụ dòng lệnh kubectl:

  • Master Node (minikube): Gán nhãn zone=front-end, đảm nhận điều khiển hệ thống và lưu trữ các pod thuộc tầng giao diện người dùng.
  • Worker Node 1 (minikube-m02): Gán nhãn zone=back-end, tiếp nhận và xử lý các dịch vụ tính toán nghiệp vụ.
  • Worker Node 2 (minikube-m03): Gán nhãn zone=database, lưu trữ các hệ thống cơ sở dữ liệu chuyên biệt.

Kiến trúc ứng dụng Microservices

Ứng dụng thử nghiệm được tác giả lựa chọn là hệ thống thương mại điện tử Sock Shop đa ngôn ngữ (microservices-demo), đóng gói qua Docker và triển khai trong namespace độc lập sock-shop:

  • Tầng giao diện (Front-end): Viết bằng NodeJS và ReactJS, đóng gói từ base image node:10-alpine, cấu hình môi trường production, mở cổng mặc định 8079. Dịch vụ tiếp nhận tương tác người dùng và gửi yêu cầu API đến các dịch vụ phía sau.
  • Tầng nghiệp vụ (Back-end): Xây dựng bằng nhiều ngôn ngữ khác nhau nhằm mô phỏng tính không đồng nhất:
    • Dịch vụ Order: Lập trình bằng Java / .NET Core, chịu trách nhiệm xử lý các đơn đặt hàng.
    • Dịch vụ Payment, User, Catalogue: Viết bằng ngôn ngữ Golang.
    • Dịch vụ Cart và Shipping: Xử lý giỏ hàng và vận chuyển hàng hóa, viết bằng Java.
    • Hàng đợi thông điệp (RabbitMQ): Đảm nhận quản lý hàng đợi tiến trình giữa các dịch vụ.
  • Tầng lưu trữ dữ liệu (Database):
    • MongoDB: Lưu trữ dữ liệu cho các dịch vụ Order, User và Cart.
    • MySQL: Quản lý dữ liệu danh mục sản phẩm của dịch vụ Catalogue.

Triển khai Cilium, Hubble và cơ chế bảo mật

Quy trình triển khai các thành phần bảo mật được tiến hành theo các bước kỹ thuật:

  1. Cài đặt Cilium CLI: Tải và giải nén bản phát hành Cilium CLI cho kiến trúc amd64/arm64, kiểm tra tính toàn vẹn gói tin bằng hàm băm SHA-256 (sha256sum).
  2. Cài đặt Cilium CNI: Thực thi lệnh cilium install --version 1.4 trên cụm Minikube (yêu cầu nhân Linux thỏa mãn điều kiện hỗ trợ eBPF).
  3. Kích hoạt công cụ giám sát Hubble: Thực thi các lệnh cilium hubble enable và cilium hubble enable --ui. Mở cổng chuyển tiếp cục bộ để truy cập giao diện đồ họa Hubble UI qua cổng 12000 (http://localhost:12000).
  4. Cấu hình các định nghĩa tài nguyên tùy biến (CRD):
    • Áp dụng CiliumNetworkPolicy mã nguồn YAML để cấu hình chính sách kiểm soát L3/L4 (tên chính sách: restrict-catalogue-db), cô lập dịch vụ cơ sở dữ liệu catalogue-db, chỉ chấp thuận luồng ingress từ các pod mang nhãn role: back-end.
    • Áp dụng CiliumNetworkPolicy kiểm soát tầng ứng dụng L7 (tên chính sách: l7-policy), chỉ cho phép các kết nối HTTP mang phương thức GET với đường dẫn /login từ pod mang nhãn name: front-end đến pod mang nhãn name: user qua giao thức TCP cổng 80.
    • Thiết lập chính sách kiểm soát luồng ra dựa trên DNS (dns-egress), chỉ cho phép phân giải và gửi gói tin đến các tên miền dịch vụ được định nghĩa trước.
    • Kích hoạt cơ chế mã hóa trong suốt WireGuard giữa các node trong cụm và triển khai SPIRE server để quản lý cấp phát danh tính cho các pod microservice.

Nội dung chính theo từng chương

Mở đầu

Giới thiệu tổng quan về sự phát triển của các nền tảng ứng dụng trực tuyến quy mô lớn và sự dịch chuyển từ kiến trúc đơn khối (monolithic) sang kiến trúc microservices. Tác giả nêu rõ tính cấp thiết của việc bảo vệ môi trường vận hành Kubernetes, xác định 3 mục tiêu nghiên cứu cụ thể, phạm vi thực nghiệm trong khuôn khổ Minikube và cấu trúc 5 chương của khóa luận.

Chương 1. Tổng quan

Đi sâu phân tích thực trạng quản trị hạ tầng phần mềm hiện nay. Chương này làm rõ những bất cập của việc triển khai container thuần túy bằng Docker, sự ưu việt của Kubernetes trong việc tự động hóa vòng đời ứng dụng và những thách thức an ninh mạng khi vận hành Kubernetes ở quy mô lớn. Tác giả trình bày chi tiết về đối tượng, phạm vi nghiên cứu và các kết quả kỳ vọng đạt được sau quá trình thực nghiệm giải pháp bảo mật với Cilium.

Chương 2. Cơ sở lý thuyết

Trình bày hệ thống lý thuyết toàn diện về các công nghệ liên quan:

  • Kiến trúc Kubernetes: Phân tích chức năng của Master node, Worker node, etcd, kubelet, kube-proxy, scheduler, controller manager, cơ chế giao tiếp liên pod trong cùng node và xuyên node qua mạng bridge/veth interface.
  • Mô hình Microservices và ứng dụng web: Đặc tính độc lập, quản lý phi tập trung, khả năng mở rộng ngang và khả năng chịu lỗi.
  • Công nghệ an ninh mạng nâng cao: Giới thiệu giao thức mạng riêng ảo WireGuard; khung định danh SPIFFE và hệ thống cấp phát chứng thực SPIRE; công nghệ eBPF trong không gian nhân Linux; cơ chế bảo vệ mặc định của Kubernetes (Network Policy, Pod Security Policy, securityContext).
  • Nền tảng Cilium và Hubble: Kiến trúc thành phần (Agent, Operator, CLI, CNI Plugin); cơ chế lọc gói dựa trên danh tính pod thay vì IP; bảng đối chiếu tính năng giữa Kubernetes Network Policy và Cilium Network Policy; nguyên lý hoạt động của nền tảng quan sát Hubble.

Chương 3. Phương pháp thực hiện

Trình bày phương pháp luận và các bước cấu hình kỹ thuật cụ thể:

  • Phương pháp khởi tạo cụm Kubernetes 3 node bằng Minikube và gán nhãn phân vùng bằng script bash node_labels.sh.
  • Kỹ thuật xây dựng Dockerfile (tiêu biểu là Dockerfile của dịch vụ Frontend chạy NodeJS trên cổng 8079) và viết các tệp manifest YAML Deployment để phân phối các pod microservice về đúng các node tương ứng thông qua trường nodeSelector.
  • Quy trình cài đặt nền tảng Cilium và kích hoạt nền tảng Hubble (Hubble Server, Relay, Client, UI).
  • Phương pháp xây dựng các chính sách an ninh mạng: chuyển đổi từ Network Policy truyền thống sang CiliumNetworkPolicy; kỹ thuật định nghĩa các quy tắc kiểm soát L3/L4 (restrict-catalogue-db), kiểm soát L7 cho giao thức HTTP (l7-policy), hạn chế kết nối ngoại vi dựa trên phân giải tên miền DNS (dns-egress), phương pháp thiết lập mã hóa dữ liệu đường truyền WireGuard và quy trình xác thực hai chiều thông qua SPIFFE/SPIRE.

Chương 4. Triển khai và thực nghiệm

Tập trung mô tả quá trình kiểm thử thực tế và đánh giá hiệu năng an ninh của các giải pháp đã cấu hình:

  • Triển khai thành công ứng dụng thương mại điện tử Sock Shop, kiểm tra trạng thái hoạt động của các pod trong namespace sock-shop và kiểm tra giao diện người dùng (trang chủ, chi tiết sản phẩm, đăng nhập).
  • Kiểm tra trạng thái triển khai của Cilium và Hubble; thực hiện trích xuất và lọc luồng dữ liệu trên Hubble UI.
  • Kiểm thử các chính sách mạng Cilium:
    • Chính sách L3/L4: Kiểm tra lệnh ping và các kết nối cơ sở dữ liệu; xác nhận hệ thống drop các gói tin không bắt nguồn từ nhãn được cấp quyền.
    • Chính sách L7: Kiểm thử gửi yêu cầu API HTTP đến pod user; chứng minh yêu cầu gọi phương thức GET /login được thông qua, trong khi các yêu cầu không hợp lệ hoặc các phương thức khác bị drop hoàn toàn.
    • Chính sách DNS Egress: Kiểm thử kết nối ra ngoài cụm; xác nhận các kết nối vượt ngoài phạm vi tên miền khai báo bị chặn đứng.
  • Kiểm tra tính năng mã hóa trong suốt WireGuard: Sử dụng công cụ tcpdump bắt gói tin trên giao diện mạng khi gửi các gói ICMP giữa pod front-end và pod carts; xác nhận toàn bộ nội dung gói tin đã được mã hóa ở mức nhân.
  • Kiểm tra cơ chế xác thực danh tính lẫn nhau SPIFFE/SPIRE: Xác minh Identity của các pod trên SPIRE server; tiến hành thực nghiệm xóa danh tính của pod carts và ghi nhận kết nối từ front-end đến carts lập tức bị ngắt bỏ (drop) với thông báo lỗi xác thực trong nhật ký của cilium-agent.

Chương 5. Kết luận

Tổng kết toàn bộ các kết quả nghiên cứu lý thuyết và giá trị kiểm nghiệm thực tế thu được từ khóa luận. Đồng thời, tác giả đề xuất các định hướng phát triển và mở rộng đề tài trong tương lai.


Kết quả và đóng góp

Nghiên cứu mang lại các kết quả thực nghiệm rõ ràng, được chứng minh qua dữ liệu thu thập trực tiếp trên hệ thống:

Hạng mục kiểm thử Kịch bản thực hiện Kết quả thực nghiệm ghi nhận
Kiểm soát truy cập L3/L4 Áp dụng chính sách restrict-catalogue-db cho pod cơ sở dữ liệu MySQL Chỉ cho phép lưu lượng từ các pod mang nhãn role: back-end. Lệnh kiểm tra ping và các truy cập từ những pod khác bị chặn hoàn toàn.
Kiểm soát giao thức ứng dụng L7 Áp dụng chính sách l7-policy cho pod user trên cổng 80/TCP Yêu cầu GET /login từ pod front-end được chấp thuận. Các yêu cầu sai đường dẫn hoặc sai phương thức HTTP bị hệ thống drop ngay lập tức.
Kiểm soát luồng ra qua DNS Áp dụng chính sách dns-egress giới hạn truy cập ngoại vi Các kết nối đến địa chỉ bên ngoài nằm ngoài danh sách tên miền DNS được phê duyệt đều bị ngăn chặn thành công.
Mã hóa lưu lượng đường truyền Bật WireGuard trên Cilium Agent; gửi gói ICMP từ pod front-end sang carts Kiểm tra bằng công cụ tcpdump cho thấy toàn bộ dữ liệu gói tin lưu thông giữa hai node đều ở trạng thái mã hóa, bảo vệ tuyệt đối dữ liệu truyền tải.
Xác thực danh tính công việc Tích hợp máy chủ SPIRE cấp phát SVID; thử nghiệm hủy Identity của pod carts Kết nối từ front-end đến carts bị từ chối và ghi nhận trạng thái drop trong logs của cilium-agent do thiếu danh tính mã hóa hợp lệ.
Quan sát hệ thống tập trung Kích hoạt nền tảng Hubble và mở giao diện Hubble UI tại cổng 12000 Bản đồ phụ thuộc dịch vụ hiển thị trực quan các luồng giao tiếp giữa các pod, phát hiện nhanh các kết nối bị từ chối theo thời gian thực.

Đóng góp của khóa luận so với các phương thức truyền thống:

  • Đã xây dựng thành công quy trình tích hợp toàn diện giữa công nghệ eBPF (Cilium) với môi trường Kubernetes, giải quyết triệt để vấn đề nghẽn cổ chai và độ trễ của iptables/kube-proxy khi số lượng quy tắc mạng tăng cao.
  • Thiết lập mô hình bảo mật nhiều lớp hoàn chỉnh: kiểm soát phân quyền kết nối vi mô từ tầng mạng đến tầng ứng dụng (L3-L7), mã hóa bảo vệ kênh truyền pod-to-pod không cần sidecar, và xác thực định danh Zero-Trust thông qua SPIFFE/SPIRE.
  • Cung cấp giải pháp quan sát hạ tầng trực quan bằng Hubble, giúp quản trị viên theo dõi lưu lượng và chẩn đoán sự cố an toàn thông tin mà không làm suy giảm hiệu năng hệ thống.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên phạm vi và nội dung văn bản khóa luận, các hạn chế và định hướng phát triển được xác định như sau:

  • Hạn chế của đề tài:
    • Mô hình thực nghiệm chỉ mới được thiết lập và kiểm thử trên môi trường giả lập Minikube với quy mô 3 node cục bộ, chưa triển khai đánh giá trên các cụm máy chủ vật lý phân tán hoặc hạ tầng đám mây công cộng quy mô lớn (AWS, GCP, Azure).
    • Chưa thực hiện các bài đo tải chuyên sâu (stress test, benchmark) để định lượng chính xác độ trễ mạng (latency overhead) và mức tiêu hao tài nguyên phần cứng (CPU, RAM) của Cilium và WireGuard khi xử lý hàng nghìn yêu cầu mỗi giây.
    • Các chính sách tầng ứng dụng (L7) mới chỉ dừng lại ở việc kiểm thử một số API mẫu (như /login), chưa bao quát toàn bộ các endpoint và các giao thức phức tạp khác (gRPC, Kafka).
  • Hướng phát triển tiếp theo:
    • Mở rộng triển khai mô hình giải pháp lên các môi trường điện toán đám mây chuyên nghiệp như Google Kubernetes Engine (GKE), Amazon EKS hoặc Azure AKS.
    • Nghiên cứu và thử nghiệm tính năng kết nối đa cụm (Cilium ClusterMesh) để thiết lập chính sách an ninh đồng nhất cho các cụm Kubernetes phân tán địa lý.
    • Tích hợp sâu hơn công cụ Hubble với các hệ thống giám sát và cảnh báo tập trung phổ biến như Prometheus và Grafana để tự động hóa phát hiện tấn công mạng.
    • Xây dựng cơ chế tự động phân tích hành vi lưu lượng để sinh tự động các tệp chính sách CiliumNetworkPolicy, giảm thiểu thao tác cấu hình thủ công cho quản trị viên.

Giá trị tham khảo

Báo cáo khóa luận mang lại giá trị học thuật và thực tiễn cao cho nhiều nhóm đối tượng:

  • Sinh viên chuyên ngành An toàn Thông tin và Mạng máy tính: Tài liệu cung cấp cơ sở lý thuyết chi tiết về cơ chế giao tiếp liên container, kiến trúc nhân eBPF và phương pháp áp dụng các tiêu chuẩn an ninh tiên tiến (Zero-Trust, SPIFFE/SPIRE, WireGuard) trên môi trường ảo hóa.
  • Kỹ sư vận hành hệ thống (DevOps / DevSecOps / Cloud Engineer): Khóa luận cung cấp tài liệu hướng dẫn thực hành từng bước từ khâu cài đặt Cilium CNI, phân vùng node Kubernetes, thiết lập Hubble UI đến việc viết các bản kê khai YAML định nghĩa chính sách mạng từ tầng 3 đến tầng 7.
  • Các nhà nghiên cứu về bảo mật hạ tầng đám mây: Cung cấp mô hình tham chiếu thực nghiệm về việc thay thế bộ lọc iptables bằng eBPF, làm tiền đề để phát triển các giải pháp phát hiện xâm nhập và phòng chống tấn công nội bộ trong kiến trúc microservices.

Các phần có giá trị tham khảo chuyên sâu nhất trong văn bản:

  • Bảng so sánh cấu trúc giữa Kubernetes Network Policy và Cilium Network Policy (Bảng 2.1).
  • Mẫu cấu hình YAML định nghĩa chính sách mạng tầng 7 (l7-policy.yaml) và chính sách mạng giới hạn theo tên miền DNS (dns-egress).
  • Quy trình cấu hình và kiểm chứng cơ chế mã hóa đường truyền bằng WireGuard kết hợp công cụ bắt gói tin tcpdump.
  • Kỹ thuật xác thực định danh dịch vụ phân tán sử dụng SPIRE server tích hợp với Cilium agent.

Câu hỏi thường gặp

1. Tại sao Cilium sử dụng công nghệ eBPF lại vượt trội hơn cơ chế iptables truyền thống trong Kubernetes?

Trong Kubernetes truyền thống, kube-proxy sử dụng các chuỗi quy tắc iptables để định tuyến và áp dụng chính sách mạng. Mỗi khi pod được tạo mới hoặc xóa bỏ, hệ thống phải cập nhật tuần tự hàng nghìn quy tắc iptables trên toàn bộ các node, dẫn đến tình trạng trễ mạng, tiêu tốn tài nguyên và khó mở rộng. Cilium giải quyết triệt để vấn đề này bằng cách tận dụng eBPF chạy trực tiếp trong không gian kernel của Linux. Cilium gán cho mỗi pod một danh tính bảo mật (security identity) dựa trên nhãn, giúp kiểm tra và lọc gói tin qua các bảng băm (hash tables) với độ phức tạp $O(1)$, đạt hiệu năng xử lý cao và độ trễ tối thiểu.

2. Chính sách mạng tầng 7 (l7-policy) trong khóa luận thực hiện kiểm soát những tham số cụ thể nào?

Trong văn bản khóa luận, tệp cấu hình l7-policy.yaml được áp dụng cho các pod mang nhãn name: user trong namespace sock-shop. Chính sách chỉ cho phép luồng lưu lượng đến từ các pod có nhãn name: front-end đi qua cổng 80 với giao thức TCP. Đặc biệt ở tầng ứng dụng (HTTP), chính sách quy định chặt chẽ: chỉ chấp thuận các yêu cầu sử dụng phương thức GET truy cập vào chính xác đường dẫn /login. Toàn bộ các yêu cầu HTTP mang phương thức khác (như POST, PUT, DELETE) hoặc truy cập vào các đường dẫn tài nguyên khác đều bị hệ thống phát hiện và hủy bỏ (drop).

3. Phương pháp mã hóa trong suốt (Transparent Encryption) trong hệ thống được cấu hình như thế nào và kiểm tra bằng cách nào?

Khóa luận sử dụng giải pháp WireGuard được tích hợp sẵn trong nhân Linux và hỗ trợ bởi Cilium để thực hiện mã hóa trong suốt lưu lượng giữa các pod mà không cần cài đặt các proxy sidecar. Quá trình kiểm chứng tính hiệu quả được tác giả thực hiện bằng cách mở giao diện dòng lệnh bash bên trong pod cilium-agent để xác nhận trạng thái hoạt động của WireGuard, sau đó sử dụng công cụ tcpdump để bắt các gói tin truyền tải trên giao diện mạng khi gửi lệnh ping (ICMP) từ pod front-end sang pod carts. Kết quả bắt gói cho thấy toàn bộ nội dung dữ liệu và tiêu đề gói tin lưu thông giữa các node đều đã được mã hóa an toàn.

4. Vai trò của SPIFFE/SPIRE trong mô hình bảo mật của đề tài là gì và hiện tượng gì xảy ra khi pod mất danh tính?

SPIFFE cung cấp bộ tiêu chuẩn định danh bảo mật cho các workload trong môi trường động, còn SPIRE là phần mềm triển khai thực thi việc cấp phát và quản lý các tài liệu danh tính mã hóa (SVID). Trong khóa luận, SPIRE được tích hợp với Cilium để thiết lập cơ chế xác thực lẫn nhau (mutual authentication) giữa các pod. Trong kịch bản thực nghiệm, khi tác giả kiểm tra và xóa bỏ Identity của pod carts trên SPIRE server, kết nối từ pod front-end tới pod carts ngay lập tức bị ngắt (drop). Nhật ký của cilium-agent ghi nhận lỗi từ chối kết nối do bên nhận không cung cấp được danh tính hợp lệ, chứng minh tính năng phòng thủ Zero-Trust hoạt động chính xác.

5. Công cụ Hubble hỗ trợ những phương thức quan sát nào cho hệ thống Kubernetes?

Hubble cung cấp hai phương thức quan sát chính:

  • Quan sát qua giao diện dòng lệnh (Hubble CLI): Kết nối trực tiếp vào API gRPC của hubble-relay để trích xuất dữ liệu luồng sự kiện chi tiết của các gói tin mạng theo thời gian thực.
  • Quan sát qua giao diện đồ họa (Hubble UI): Chạy trên nền tảng web tại cổng 12000 (http://localhost:12000). Giao diện này cung cấp bản đồ biểu diễn mối quan hệ phụ thuộc giữa các microservice theo từng namespace, trực quan hóa luồng dữ liệu truyền tải và hiển thị tức thời trạng thái gói tin được chuyển tiếp (forwarded) hoặc bị chặn (dropped).

Kết luận

Khóa luận tốt nghiệp của tác giả Bạch Văn Xuân Thông đã nghiên cứu và triển khai thành công giải pháp bảo mật toàn diện cho hệ thống Kubernetes dựa trên nền tảng Cilium và công nghệ eBPF. Bằng việc kết hợp các chính sách lọc gói đa tầng từ L3 đến L7, cơ chế mã hóa kênh truyền WireGuard và hệ thống xác thực định danh Zero-Trust qua SPIFFE/SPIRE, đề tài đã giải quyết hiệu quả các lỗ hổng bảo mật và hạn chế về mặt hiệu năng của hạ tầng mạng Kubernetes truyền thống. Kết quả thực nghiệm trên ứng dụng thương mại điện tử Sock Shop cùng hệ thống giám sát trực quan Hubble chứng minh tính khả thi, độ tin cậy và giá trị ứng dụng thực tiễn cao của giải pháp trong việc bảo vệ các hệ thống phần mềm microservices hiện đại.