Các mẹo đảm bảo an toàn cho cụm Kubernetes trên Cloud

1665
25-12-2023
Các mẹo đảm bảo an toàn cho cụm  Kubernetes trên Cloud

Kubernetes là một công cụ để quản lý các ứng dụng trong cụm, nhưng có thể tồn tại các rủi ro bảo mật nếu không được định cấu hình đúng cách.

Có một số mối đe dọa bảo mật có thể nhắm mục tiêu đến các cụm Kubernetes, bao gồm:

  • Các tác nhân xấu: Tin tặc có thể khai thác các cấu hình sai trong cụm Kubernetes để truy cập dữ liệu nhạy cảm hoặc làm gián đoạn ứng dụng 
  • Mã độc: Mã độc có thể được đưa vào image của container, sau đó được triển khai vào cụm Kubernetes và chạy trong ứng dụng của bạn. 
  • Các container image chứa các lỗi hổng: Các container image được có thể chứa các lỗ hổng bảo mật mà tin tặc có thể khai thác (do các phần mềm, base image, …) 
  • Người dùng bị xâm phạm hoặc mạo danh: Người dùng bị xâm phạm hoặc có ý định xấu cũng có thể gây ra rủi ro bảo mật cho cụm Kubernetes của bạn. Các mẹo gia tăng độ an toàn cho cụm Kubernetes

1. Quản lý truy cập vào cụm một cách nghiêm ngặt

Các phương thức có thể dùng để kiểm soát truy cập như sau:

RBAC (Kiểm soát truy cập dựa trên vai trò) là phương pháp tích hợp của cluster k8s để xác định xem người dùng nào được phép thực hiện các hành động nhất định, chẳng hạn như sửa đổi cấu hình hoặc truy cập dữ liệu. Người dùng cần cả quyền truy cập xác thực vào cụm và quyền cho phép thực hiện các thay đổi. Sử dụng ClusterRoles để định nghĩa vai trò trên toàn cụm và áp dụng quy tắc ít đặc quyền nhất, theo đó tài khoản người dùng chỉ có các đặc quyền cần thiết để thực hiện chức năng của họ.

Ví dụ:

  • Bạn có thể tạo một ClusterRole cho vai trò "Quản trị viên" cho phép người dùng tạo, chỉnh sửa và xóa các node Kubernetes. 
  • Bạn có thể tạo một ClusterRole cho vai trò "Người dùng" cho phép người dùng xem các nút Kubernetes nhưng không thể tạo, chỉnh sửa hoặc xóa chúng.

Bằng cách sử dụng RBAC, bạn có thể kiểm soát chặt chẽ ai có thể thực hiện các hành động nào trong cụm Kubernetes của mình. Điều này giúp bảo vệ cụm khỏi bị xâm phạm và đảm bảo rằng chỉ những người có quyền truy cập cần thiết mới có thể thực hiện các thay đổi đối với các tài nguyên của bạn.

IAM là một hệ thống quản lý danh tính và truy cập (Identity and Access Management), cho phép bạn xác định ai có thể truy cập vào cloud và họ có thể làm gì. IAM được khuyến nghị cho các tổ chức lớn và những người dùng trên cloud.

IAM cung cấp một số tính năng có thể giúp bạn bảo vệ dữ liệu của mình, bao gồm xác thực, cấp phép, quản lý vai trò và kiểm soát.

Dưới đây là một số tính năng của IAM:

  • Xác thực: IAM xác thực người dùng và cấp cho họ các quyền phù hợp để truy cập vào các tài nguyên của bạn. 
  •  Cấp phép: IAM cho phép bạn xác định các hoạt động mà người dùng có thể thực hiện trên các tài nguyên của bạn.
  • Quản lý vai trò: IAM cho phép bạn tạo và quản lý các vai trò, cho phép bạn dễ dàng phân quyền cho người dùng của mình. 
  • Kiểm soát: IAM cho phép bạn kiểm tra các hoạt động của người dùng, giúp bạn dễ dàng phát hiện và điều tra các hoạt động đáng ngờ.

OpenID Connect (OIDC) là tính năng quản lý quyền truy cập vào cluster. Các nhà cung cấp danh tính bao gồm Google, Facebook và GitHub, có nghĩa là ID hiện có của người dùng có thể được sử dụng, cung cấp cho họ các token danh tính có thể được xác minh bằng cách mã hóa bằng chứng X509.

Ngoài ra nên áp dụng các nguyên tắc bảo mật cơ bản khác như:

  • Xóa người dùng đã rời khỏi công ty của bạn. 
  • Đảm bảo rằng các chính sách bảo mật và mạng của cơ sở hạ tầng của bạn được định cấu hình chính xác. 
  • Cung cấp đủ quyền cho người dùng

2. Giám sát các endpoints

Việc lỡ tay công khai endpoints hoặc bị lộ ra xảy ra rất thường xuyên. Thậm chí thêm loadbalancer ở ngoài vào cụm cũng có thế vô tình xác thực cho người dùng không được phép truy cập. Theo tạp chí InfoSecurituy, hơn ****900,000 trường hợp các cụm Kubernetes bị để lộ ra trên mạng Internet



Vào năm 2022 Apiiro đã phát hiện ra một lỗ hổng bảo mật trong ArgoCD. Lỗ hổng này cho phép kẻ tấn công truy cập và lấy cắp thông tin nhạy cảm như mật khẩu và API key từ các cụm Kubernetes.

Để tránh các vi phạm bảo mật Kubernetes, điều quan trọng là phải tuân thủ các thực tiễn tốt nhất về bảo mật. Một số thực tiễn tốt nhất bao gồm:

  • Sử dụng IAM hoặc RBAC để kiểm soát ai có quyền truy cập vào các tài nguyên Kubernetes. 
  • Thủ công phê duyệt tất cả các kết nối bên ngoài trong lần kết nối đầu tiên. 
  • Tạo bản đồ mạng để theo dõi tất cả các kết nối giữa các nút Kubernetes. 
  •  Whitelist địa chỉ IP chính để ngăn truy cập trái phép. 

3. Cẩn thận khi dùng IaC

Sử dụng IaC (infrastructure as code) cho Kubernetes như Terraform để tự động hóa triển khai cơ sở hạ tầng trên cloud thì có thể một lỗi cấu hình có thể gây hậu quả lớn, vì các lỗi tiềm ẩn có thể xảy ra trên hàng loạt các hệ thống, gây ra các vấn đề bảo mật không mong muốn.

Sử dụng các công cụ quét IaC để đảm bảo rằng không triển khai khi gặp các lỗi cấu hình không an toàn không. Ngoài ra, bạn nên giới hạn quyền truy cập vào repository của bạn và chỉ cho phép những người cần thiết mới có thể truy cập.

4. Bảo vệ và cô lập các worker nodes

Cô lập các nodes k8s trong private network để tránh tương tác không cần thiết với mạng internet công cộng là một phương án bảo mật hiệu quả, giúp giảm thiểu khả năng bị tấn công

Một số lợi ích khi sử dụng Kubernetes trong private network

  • Tất cả các tài nguyên Kubernetes (Node, Api-server, Load Balancers, …) có thể giao tiếp nội bộ an toàn với nhau giảm thiểu. 
  • Độ trễ thấp hơn.

Ngoài ra một biện pháp nữa hạn chế quyền truy cập vào worker. Chặn dịch vụ SSH để không cho truy cập vào trong worker node một các không cần thiết

5. Theo dõi các kết nối mạng

Một cách gia tăng bảo mật khác của Kubernetes là theo dõi hoạt động mạng của cụm. Việc theo dõi lưu lượng nội bộ và lưu lượng từ ngoài vào để tìm các hoạt động bất thường, các hoạt động này có thể bao gồm số lượng API call quá mức bình thường hoặc các mối đe dọa bên ngoài đối với mạng.

Để bảo vệ cụm Kubernetes của bạn khỏi các cuộc tấn công, điều quan trọng là phải giám sát hoạt động của nó một cách thường xuyên, sử dụng các công cụ như Prometheus, Fluentd và Packetbeat để thu thập dữ liệu về lưu lượng mạng và các hoạt động khác trong cụm. Bằng cách giám sát hoạt động của cụm, bạn có thể xác định các mối đe dọa tiềm ẩn và thực hiện các bước để ngăn chặn chúng.

Một số công cụ như Sysdig, cho phép bạn giám sát cơ sở hạ tầng và ứng dụng của Kubernetes trong thời gian thực, phát hiện các mối đe dọa và lỗ hổng bảo mật.

 6. Giám sát audit logs

Kubernetes audit logs là một phần quan trọng trong Kubernetes. Audit log cung cấp tất cả hoạt động diễn ra trong cụm Kubernetes, bao gồm người thực hiện thay đổi, thay đổi nào đã được thực hiện và khi nào được thay đổi.

Các thông tin này có thể được sử dụng để truy tìm các sự cố bảo mật, giải quyết sự cố.

Một số lý do bạn cần theo dõi Audit logs của Kubernetes:

  • Để truy tìm các sự cố bảo mật: Nếu cụm Kubernetes bị xâm phạm, Audit logs có thể giúp truy tìm nguồn gốc của cuộc tấn công và xác định các hành động đã được thực hiện. Thông tin này có thể được sử dụng để cải thiện bảo mật và ngăn chặn các cuộc tấn công trong tương lai. 
  • Để giải quyết sự cố: Autdit logs cũng có thể được sử dụng để giải quyết các sự cố với cụm Kubernetes. Trong ttrường hợp gặp sự cố với một ứng dụng hoặc dịch vụ nào đó, Audit logs có thể giúp tìm ra nguyên nhân của vấn đề.

Dưới đây là một số mẹo về cách theo dõi nhật ký kiểm tra K8s:

  • Cấu hình cụm Kubernetes để thu thập Audit logs. Việc ghi Audit logs không được mặc định bật trong Kubernetes. Sẽ cần cấu hình cụm để thu thập Audit logs trước khi có thể bắt đầu theo dõi chúng. 
  • Sử dụng các công cụ giám sát. Có nhiều công cụ có thể sử dụng để giám sát Audit logs của cụm K8S, một số công cụ phổ biến hay được sử dụng là ELK, Prometheus và Grafana. 
  • Thiết lập cảnh báo. Sau khi đã sử dụng một công cụ giám sát, cần thiết lập cảnh báo để được thông báo khi có điều gì bất thường xảy ra. Điều này sẽ giúp nhanh chóng xác định và ứng phó với các sự cố bảo mật. 
  • Kiểm tra Audit log thường xuyên. Xem lại Audit logs thường xuyên để đảm bảo không có hoạt động đáng, giữ cho cụm của mình được bảo mật.   
SHARE