NetworkPolicy L3/L4 và Cilium L7
Phân biệt timeout vì packet drop với HTTP 403 từ proxy.
Nắm bản chất
Kubernetes NetworkPolicy dựa trên labels/selectors, namespace selectors và ports. Các rules có tính cho phép cộng dồn; không phải ACL có thứ tự allow/deny trực giác. CiliumNetworkPolicy bổ sung khả năng HTTP method/path restriction với Envoy proxy khi cấu hình được hỗ trợ.
Hai selectors trong cùng một from item thường kết hợp AND; hai
items riêng biệt trong danh sách from tạo union (OR). L4 drop
thường dẫn tới timeout, L7 reject có thể thành HTTP 403. Hãy kiểm tra policy
owner và mọi policies chọn endpoint.
Luồng hoạt động
Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?
Lệnh & cấu hình mẫu
kubectl apply -f policies/k8s/01-allow-only-api-to-payments.yaml
kubectl get networkpolicy -A
# Chuyển sang bài L7: bỏ broad L4 allow trước
kubectl delete -f policies/k8s/01-allow-only-api-to-payments.yaml
kubectl apply -f policies/cilium/payments-l7.yaml
Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.
Bài tập 10–20 phút
Chạy bài kiểm tra Web→API→Payments và Untrusted→Payments, quan sát Hubble verdicts. Sau đó dùng HTTP GET /admin để chứng minh khác biệt L4/L7.
Lỗi dễ mắc
Một Pod có thể gắn label khớp policy nếu người tạo Pod có quyền. Dùng RBAC và admission để hạn chế khả năng giả danh qua labels.
Tự kiểm tra
Một L7 policy GET /health có tự chặn mọi kết nối nếu broad L4 allow vẫn tồn tại?Xem đáp án ↗
Không bảo đảm; phải đánh giá tất cả policies và mô hình cộng dồn quyền cho phép.
Học thêm qua lab
Có project thực hành đúng với chương này, kèm README và những giới hạn môi trường cần lưu ý.
↓ Tải mã nguồn thực hành chương 15Đối chiếu tài liệu gốc
Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.
Mở tài liệu chính thức ↗