7 điểm bởi ironlung 2023-10-05 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • Nội dung này nhằm nhấn mạnh tầm quan trọng của bảo mật Kubernetes
  • Nơi lưu trữ Secret
    • Khi người dùng khai báo tài nguyên bằng lệnh kubectl, Kubernetes sẽ tạo tệp manifest định nghĩa tài nguyên đó và lưu vào etcd
    • Khi người dùng khai báo tài nguyên Secret, Secret cũng được lưu trong etcd
    • Khi người dùng tạo pod đọc Secret dưới dạng volume hoặc biến môi trường, Secret sẽ được lưu trong pod đó
    • Nếu etcd nơi lưu Secret và pod đang sử dụng Secret bị hack, có thể biết được mật khẩu được lưu trong Secret
  • Chuẩn bị trước
    • Tạo cluster bằng kubeadm
    • Để thực hành, tạo sẵn ba tài nguyên: Secret credit-card, pod app1, pod app2
  • Hack etcd
    • etcd: kho dữ liệu key-value lưu trạng thái của cluster Kubernetes. Mọi thông tin được khai báo trong Kubernetes đều được lưu ở đây. Có thể xem Secret bằng cách tra cứu etcd
    • 1.1 Tìm mật khẩu bằng etcdctl
      • Xem manifest của kube-apiserver để lấy certificate authority, khóa công khai và khóa riêng của máy chủ etcd
      • Tìm mật khẩu thông qua lệnh etcdctl, công cụ thao tác etcd thuận tiện
    • 1.2 Truy cập trực tiếp DB etcd để lấy
      • Tìm tiến trình đang chạy etcd, duyệt toàn bộ dữ liệu của tiến trình đó và tìm mật khẩu
        • ps aux | grep etcd - lấy PID của etcd
        • ll /proc/<pid>/fd sẽ thấy tệp liên kết có ghi db
        • Dùng lệnh cat /proc/<pid>fd/<db> | grep -A10 -B10 credit-card để tìm mật khẩu đã tạo trước đó
  • Hack pod
    • Lấy bằng kubectl exec
      • Nếu có quyền phù hợp để truy vấn Kubernetes, có thể lấy mật khẩu bằng lệnh kubectl
    • Truy cập trực tiếp container để lấy
      • Nếu có thể tự do dùng lệnh Docker trên worker node thì có thể lấy cắp mật khẩu
      • Có thể tìm container trên worker node nơi pod app1 được schedule và trích xuất danh sách biến môi trường đã đăng ký cho container
        • crictl pods - tìm Pod ID của app1
        • crictl ps - tìm container tương ứng với Pod ID
        • crictl inspect <container id> | grep -A16 env - xem chi tiết container đó để trích xuất biến môi trường
    • Lấy bằng ServiceAccount có quyền truy cập Secret
      • Nếu ServiceAccount của pod có quyền truy cập Secret, có thể tìm mật khẩu bằng cách gọi API từ bên trong pod
  • Cách ngăn chặn các kiểu hack đã mô tả ở trên
    • Theo nguyên tắc đặc quyền tối thiểu, không tạo service account có quyền không cần thiết
    • Đề phòng các mối đe dọa như social engineering, không để lộ credential của người dùng
    • Mã hóa etcd thông qua tài nguyên EncryptionConfiguration

Chưa có bình luận nào.

Chưa có bình luận nào.