Tình huống mặc định nguy hiểm: Cổng bảo mật mở rộng
Tình huống tiêu biểu
- Truy cập API không xác thực: Kích hoạt cổng không an toàn như 8080 và ràng buộc với địa chỉ 0.0.0.0 khiến kẻ tấn công bỏ qua xác thực để điều khiển cụm từ xa
- Mất kiểm soát quyền hạn kubelet: Thiết lập authorization.mode=AlwaysAllow cho phép người dùng ẩn danh kiểm soát nút hệ thống
Phương án xác minh kiểm thử
# Kiểm tra trạng thái phơi bày cổng API
kubectl cluster-info | grep 'insecure'
# Mô phỏng cuộc tấn công truy cập trái phép
curl -vk http://<node-ip>:8080/api/v1/pods
# Xác minh quyền hạn kubelet (cần công cụ kubeletctl)
./kubeletctl --ip <node-ip> scan rce -c "whoami"
Biện pháp phòng tránh: Kích hoạt nhật ký kiểm toán API Server và quét định kỳ các cổng bất thường đang mở
Hố đen tài nguyên: Container không giới hạn nuốt chửng nút
Trường hợp thảm họa
Một nền tảng thương mại điện tử không thiết lập giới hạn tài nguyên cho Pod, dẫn đến một container bị rò rỉ bộ nhớ đơn lẻ làm cạn kiệt tài nguyên nút, gây ra sự cố sụp đổ hàng loạt cho hơn 200 Pod
Điểm kiểm thử then chốt
# Ví dụ cấu hình sai (không giới hạn tài nguyên)
containers:
- name: backend-service
image: nginx:latest
# Cấu hình đúng
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
Phương án kiểm thử hỗn loạn:
- Triển khai công cụ kiểm tra áp lực mô phỏng rò rỉ bộ nhớ
- Theo dõi sự kiện OOMKilled trên nút và thời gian khôi phục tự động
- Xác nhận độ chính xác của ngưỡng kích hoạt HPA (Horizontal Pod Autoscaler)
Xung đột lưu trữ: Nhiều Pod tranh giành cùng ổ đĩa
Sự cố tài chính công nghệ
Lỗi cấu hình StatefulSet khiến 3 Pod MongoDB chia sẻ cùng một PVC, gây ra ghi đè dữ liệu và xung đột khóa tệp, cuối cùng dẫn đến bất thường cho hơn 100.000 đơn hàng
Ma trận bảo vệ kiểm thử
| Rủi ro | Phương pháp kiểm thử | Kết quả mong đợi |
|---|---|---|
| Tính độc quyền volume lưu trữ | Nhiều Pod đồng thời gắn PVC thực hiện thao tác ghi | Không có xung đột sau khi kiểm tra tính nhất quán dữ liệu |
| Cấu hình lớp lưu trữ | Tạo động PVC xác minh tính độc lập ràng buộc | Mỗi PVC tương ứng với PV riêng biệt |
| Độ bền dữ liệu | Pod xóa và tạo lại xác minh tính toàn vẹn dữ liệu | Không mất dữ liệu |
Quyền hạn tràn lan: Cấu hình RBAC mất kiểm soát
Danh sách cấu hình nguy cơ cao
graph TB
A[Tài khoản dịch vụ] -->|ràng buộc| B[quản trị cụm]
C[Ràng buộc vai trò] -->|phạm vi| D[không giới hạn Namespace]
E[Pod] -->|sử dụng| F[Tài khoản mặc định]
Đường dẫn kiểm thử xâm nhập:
- Thu thập shell container: kubectl exec -it <pod> -- bash
- Trích xuất token SA: cat /var/run/secrets/kubernetes.io/serviceaccount/token
- Thử nghiệm thao tác cụm: curl -k -H "Authorization: Bearer <token>" https://kubernetes/api/v1/namespaces
Chuẩn bảo mật cơ bản: Tuân thủ nguyên tắc quyền tối thiểu, thực hiện kiểm toán định kỳ kubectl auth can-i --list
Nhiễm bẩn chuỗi cung ứng: Phản ứng dây chuyền từ image có lỗ hổng
Trường hợp điển hình
- Lỗ hổng Log4j lan truyền qua image cơ sở ảnh hưởng hàng trăm dịch vụ vi mô
- Sử dụng nhãn latest gây nâng cấp bất ngờ môi trường sản xuất
Hệ thống bảo vệ kiểm thử
+-------------------+
| Quét kho image |
| (Trivy/Clair) |
+--------+----------+
|
+------------------+ +------v------+ +----------------+
| Môi trường phát triển | | Pipeline CI/CD | | Bảo vệ thời gian chạy |
| Cấm nhãn latest +------->+ Xác minh chữ ký image +------->+ Giám sát hành vi |
| Chặn quét lỗ hổng | | Kiểm soát chấp nhận | | (Falco) |
+------------------+ +-------------+ +----------------+
Các mục kiểm tra trọng yếu:
- Xác minh chính sách chữ ký image được thực thi bắt buộc
- Mô phỏng triển khai image có CVE quan sát hiệu quả chặn lọc
- Kiểm tra tỷ lệ phát hiện tiến trình độc hại của công cụ bảo mật thời gian chạy
Ma trận phòng thủ cho kỹ sư kiểm thử
- Kiểm thử bảo mật chuyển trái
- Quét IaC: Phát hiện rủi ro bản kê Kubernetes ở giai đoạn CI (KubeSec, Checkov)
- Quét xây dựng container: Chặn image nguy cơ cao không vào kho
- Thực hành kỹ thuật hỗn loạn
# Mô phỏng lỗi nút kubectl drain <node> --ignore-daemonsets # Tiêm độ trễ mạng kubectl apply -f network-chaos.yaml - Giám sát nhật ký kiểm toán
- Sự kiện kiểm toán trọng yếu:
RequestURI: "/api/v1/namespaces/*/pods" Verb: "create|delete|patch" - Phân tích kết nối nhật ký: ELK+Splunk xây dựng cảnh báo thao tác bất thường
- Sự kiện kiểm toán trọng yếu: