Tính năng bảo mật có sẵn trong Kubernetes

phanhao

Member
gemgem
Tham gia
18/03/2025
Bài viết
160
Được Like
0
Coin
0
Points
800
e68c6b0b-e727-48c0-8344-e4357f5c7e66.png


Mở đầu

Trong khi hàng loạt các công cụ thuộc Cloud Native Computing Foundation xuất hiện cung cấp cho chúng ta thêm nhiều các tính năng để tích hợp với cụm Kubernetes thì mình lại có xu hướng ưu tiên những giải pháp native được xây dựng sẵn trong Kubernetes để đáp ứng các bài toán của bản thân. Trong bài viết này mình muốn giới thiệu đến các bạn các tính năng về bảo mật (security) được xây dựng sẵn trong Kubernetes mà đôi khi chúng ta quên mất không sử dụng để rồi phải đi tìm kiếm cùng những tính năng từ các công cụ bên ngoài.



Namespace

Đúng vậy! các bạn không nhìn nhầm đâu. Namepsace đóng vai trò quan trọng trong việc quản lý và bảo mật, đặc biệt khi triển khai các ứng dụng và dịch vụ trên một cụm (cluster) lớn. Namespace giúp tạo ra các không gian độc lập để tách biệt các tài nguyên (như Pod, Service, ConfigMap, Secret) và kiểm soát quyền truy cập. Namespace trong Kubernetes được ứng dụng để cung cấp nền tảng áp dụng các biện pháp bảo mật khác.

Trong thực tế namespace có thể được sử dụng để:

  • Tách biệt các môi trường triển khai ứng dụng như dev, staging và production.
  • Nền tảng để áp dụng các biện pháp bảo mật như ResourceQuota (Kiểm soát lượng tài nguyên sử dụng), RBAC (Phân quyền theo vai trò), Networkpolicy (Kiểm soát truy cập dựa trên network).
  • Dùng để tách biệt cấu hình ứng dụng (Configmaps, Secret) trên các môi trường các nhau.
Hình phía dưới mô tả một trường hợp cơ bản khi sử dụng namespace để tách biệt môi trường triển khai.

78528e9e-4309-46e9-ad3b-7c246a340f25.png


Trong trường hợp nếu bạn không sử dụng namespace cô lập các môi trường hoặc ứng dụng nằm trong cụm Kubernetes, mà triển khai hết lên cùng 1 namespace thì việc sau đó áp dụng các biện pháp bảo mật sẽ rất khó khăn.

Network Policy
e8910dfa-99b7-4f3a-86c5-93b1fca0d3a4.png


NetworkPolicy là một công cụ bảo mật trong Kubernetes giúp quản lý và kiểm soát lưu lượng mạng giữa các Pod và với các dịch vụ bên ngoài. Mặc định, Kubernetes cho phép tất cả các Pod trong cùng một cụm (cluster) giao tiếp với nhau mà không có bất kỳ giới hạn nào. Tuy nhiên, NetworkPolicy cho phép tạo ra các luật (rules) để chỉ định cụ thể những kết nối mạng nào được phép và từ chối những kết nối không mong muốn cả 2 đầu lưu lượng đến và đi.

Về cơ bản NetworkPolicy sẽ giúp ta bảo vệ trước các cuộc tấn công trong nội bộ, tăng cường khả năng độc lập giữa các mạng/ứng dụng hoặc bảo vệ dữ liệu/dịch vụ nhạy cảm chạy trong cụm Kubernetes. Trong thực tế NetworkPolicy được sử dụng để:

  • Giới hạn lưu lượng mạng chỉ trong nội bộ ứng dụng: Nhiều ứng dụng được triển khai trong K8s chỉ cần giao tiếp trong nội bộ, không cần bất kỳ lưu lượng nào ra bên ngoài thì ta có thể sử dụng NetworkPolicy để giới hạn lưu lượng mạng chỉ đến từ các Pod trong cùng Namespace.
  • Chặn lưu lượng từ các Pod bị xâm nhập: Một ứng dụng có thể bị tấn công vào một Pod, và hacker có thể tìm cách di chuyển ngang (lateral movement) để xâm nhập vào các Pod khác. Sử dụng NetworkPolicy giúp ngăn chặn lưu lượng mạng giữa các Pod không cần thiết, hạn chế tấn công lan rộng.
  • Hạn chế truy cập từ môi trường staging đến production: Trong một cụm Kubernetes, các môi trường staging và production có thể tồn tại trong các Namespace khác nhau. NetworkPolicy có thể được sử dụng để ngăn các Pod trong staging giao tiếp với các Pod trong production, đảm bảo cách ly môi trường.
  • Chỉ cho phép lưu lượng từ các dịch vụ được cho phép: Một cơ sở dữ liệu chỉ nên được truy cập bởi các dịch vụ nhất định (ví dụ: API server), NetworkPolicy có thể được cấu hình để chỉ cho phép lưu lượng mạng từ các Pod cụ thể, giúp bảo vệ dữ liệu nhạy cảm.
 
Top Bottom