Thêm hoặc xóa các khả năng của Linux trong Kubernetes SecurityContext

Them Hoac Xoa Cac Kha Nang Cua Linux Trong Kubernetes Securitycontext



Có thể khó quản lý mức độ đặc quyền được cung cấp cho từng Pod và bộ chứa trong bộ chứa Kubernetes. Chúng tôi có thể sử dụng các khả năng của Kubernetes SecurityContext để thêm hoặc xóa các khả năng của Linux khỏi Pod và Container để tăng tính bảo mật của container. Bài viết này tập trung vào việc sử dụng securityContext để triển khai một ví dụ đơn giản về các khả năng thêm và xóa. Cấu hình của tệp yaml để xóa tất cả các khả năng và chỉ thêm một khả năng vào vùng chứa được cung cấp trong ví dụ mẫu. Trong bài viết này, các lệnh proc và capsh được sử dụng để hiển thị các khả năng của bộ chứa.

Bước 1: Khởi động Máy chủ Minikube







Trước tiên, hãy khởi động máy chủ minikube để bạn có thể chạy ứng dụng của mình và sử dụng hướng dẫn kubectl. Bạn có thể triển khai các nút, nhóm và thậm chí cả cụm của mình bằng máy chủ minikube trong môi trường Kubernetes. Lệnh sau phải được sử dụng để duy trì minikube ở chế độ hoạt động:



> bắt đầu minikube



Bằng cách đó, máy chủ minikube đã được bật và môi trường Kubernetes đã sẵn sàng để sử dụng.





Bước 2: Tạo tệp YAML Kubernetes



Trong bước thứ hai, hãy tạo tệp YAML để triển khai nhóm.

Làm theo các bước để tạo tệp yaml bằng nano:

  • Chuyển đến đường dẫn thư mục nơi bạn muốn tạo tệp hoặc sửa đổi tệp hiện có.
  • Nhập lệnh nano theo sau là tên tệp.

Chạy lệnh nano sau. Nó tạo ra một tệp cấu hình YAML có tên là “nano podsample.yaml”.

> nano podsample.yaml

Hãy chuyển sang bước tiếp theo để giúp bạn biết cách định cấu hình tệp podsample.yaml.

Bước 3: Định cấu hình tệp YAML

Chúng tôi thêm công cụ viết hoa ở bước trước để chúng tôi có thể thấy các khả năng của vùng chứa của mình.

Lưu ý rằng không có tham số nào trong số đó được định cấu hình cho phần securityContext cho vùng chứa này. Do đó, tất cả chúng đều được đặt thành mặc định của hệ thống. Hãy xem xét thực tế là vùng chứa này hoạt động với tư cách là người dùng mặc định được cung cấp trong Dockerfile mà từ đó nó được xây dựng nếu không có người dùng nào được xác định cho vùng chứa đó trong Kubernetes. Đối với nhiều vùng chứa, người dùng mặc định này là gốc.

Bước 4: Tạo một nhóm

Trong bước này, hãy tạo podsample.yaml bằng lệnh đính kèm sau:

> áp dụng kubectl -f podsample.yaml

Bước 5: Kiểm tra khả năng

Ở bước trước, một nhóm được tạo và đang chạy.

Bây giờ chúng ta có một shell bên trong nó, chúng ta có thể sử dụng capsh để xác minh khả năng của nó bằng lệnh sau:

> $ kubectl giám đốc điều hành - -stdin - -tty mũ - - tro

Sử dụng lệnh capsh, có thể thấy dung lượng mặc định của vùng chứa được liệt kê như sau:

Chúng ta có thể quan sát từ đầu ra đã cho rằng vùng chứa có nhiều khả năng mặc định được cung cấp cho vùng chứa khi chạy.

Bước 6: Thả Đơn Khả năng Y trong Kubernetes SecurityContext

Trong bước này, chúng tôi loại bỏ khả năng duy nhất của vùng chứa.

Hãy định cấu hình tệp yaml bằng lệnh sau:

> nano dropod.yaml

Sau đó, di chuyển để định cấu hình tệp droppod.yaml bằng lệnh đã cho sau:

> áp dụng kubectl -f droppod.yaml

Bươc 7 : Định cấu hình để thêm khả năng duy nhất trong tệp YAML

Trong bước này, hãy mở tệp yaml (dropped.yaml) đã được tạo ở Bước 6. Sau đó, đặt bộ chứa sao cho nó không còn quyền truy cập vào khả năng CAP_MKNOD, khả năng này sẽ loại bỏ khả năng tạo các nút hệ thống tệp mới.

File cấu hình như hình:

Bươc số 8 : Kiểm tra khả năng

Tệp yaml được định cấu hình để loại bỏ khả năng CAP_MKNOD.

Trong bước này, hãy thực thi và chạy tệp dropcaps.yaml để kiểm tra khả năng của bộ chứa bằng lệnh sau:

> $ kubectl giám đốc điều hành - -stdin - -tty dropcaps - - tro

Dung lượng có thể được kiểm tra bằng cách chạy tệp dropcaps:

> # capsh - -print

Chúng ta có thể quan sát thấy rằng nhóm này đã giảm khả năng CAP_MKNOD so với nhóm đầu tiên.

Bươc 9 : Bỏ tất cả các khả năng trong Kubernetes SecurityContext

Vì Kubernetes có thể loại bỏ một khả năng duy nhất nên nó cũng có thể loại bỏ tất cả các khả năng thông qua securityContext. Trong bước này, hãy loại bỏ tất cả các khả năng của vùng chứa bằng cách ngụ ý lệnh đã cho:

> nano samplenocap.yaml

Sau đó, định cấu hình tệp samplenocap.yaml bằng lệnh sau:

> tạo kubectl -f samplenocap.yaml

Bây giờ, hãy chuyển sang bước tiếp theo để loại bỏ tất cả các khả năng trong cài đặt securityContext của chúng tôi.

Bước 10: Định cấu hình tất cả các khả năng trong tệp YAML

Trong bước này, hãy mở tệp yaml đã được tạo ở Bước 9. Sau đó, định cấu hình bên trong vùng chứa.securityContext  và loại bỏ tất cả các khả năng của vùng chứa.

File cấu hình như hình:

Bươc mười một : Kiểm tra khả năng

Chạy nocaps trong capsh để xem thông tin về các khả năng. Trong bước này, hãy sử dụng lệnh sau và hiển thị tất cả các khả năng của vùng chứa:

> kubectl giám đốc điều hành - -stdin - -tty không có mũ - - tro

Dung lượng có thể được kiểm tra trong hình minh họa sau bằng cách chạy tệp yaml samplenocaps ở dạng capsh:

> # capsh - -print

Đầu ra trước đó cho thấy rằng hiện tại =”” và bộ giới hạn =”” hiện đang trống. Các khả năng được loại bỏ thành công.

Bước 1 2 : Cài đặt Bash

Trong bước này, hãy cài đặt Bash thông qua apk vì một số chức năng hệ thống sẽ không hoạt động nếu chúng tôi không có bất kỳ khả năng nào. Mặc dù bộ chứa của chúng tôi đang hoạt động với quyền root nhưng quá trình cài đặt gói Bash không thành công.

> # apk thêm bash

Bước 1 3 : Kiểm tra thông tin khả năng

Có một số cách để xem các khả năng của vùng chứa của chúng tôi, chẳng hạn như sử dụng các lệnh capsh và proc. Trong bước này, chúng tôi hiển thị dung lượng vùng chứa bằng cách sử dụng lệnh proc và proc hiển thị dung lượng dưới dạng bitmap. Mặc dù nó không hoàn toàn dễ đọc như kết quả từ capsh, nhưng mỗi bit được xác định ở đây đại diện cho một khả năng nhất định.

> # cd /proc/1/

Ở đây, chúng ta có thể thấy rằng vùng chứa cụ thể này không có khả năng nào được kích hoạt; tất cả các giá trị này bằng không.

Bước 1 4 : Thêm một khả năng duy nhất trong Kubernetes SecurityContext

Trong các bước trước, chúng tôi đã loại bỏ một khả năng duy nhất là CAP_MKNOD và loại bỏ tất cả các khả năng. Tuy nhiên, trong bước này, chúng ta có thể thêm lại các khả năng.

Thực hiện lệnh sau để tạo tệp yAML:

> nano sampleadd.yaml

Sau đó, định cấu hình tệp sampleadd.yaml.

> tạo kubectl -f sampleadd.yaml

Bây giờ, hãy thử tệp sampleadd.yaml và thêm một dung lượng duy nhất trong cài đặt securityContext của chúng tôi.

Bước 1 5 : Định cấu hình Khả năng duy nhất trong Tệp YAML

Bây giờ, hãy định cấu hình tệp bằng cách thêm khả năng trong spec.container.securityContext vàoabilities.add [“MKNOD”].

Khả năng được hiển thị trong tệp YAML.

Bươc 16 : Kiểm tra khả năng

Trong bước này, hãy chạy addcaps để kiểm tra các khả năng bằng lệnh sau:

> kubectl giám đốc điều hành - -stdin - -tty phụ kiện - - như

Công suất bổ sung có thể được nhìn thấy trong đầu ra đã cho sau:

hiện tại = cap_mknod+ep

Bộ giới hạn = cap_mknod

> # capsh - -print

Phần kết luận

Lần đầu tiên bạn học được từ ví dụ đã triển khai về các khả năng mặc định của vùng chứa được chỉ định trong thời gian chạy được hiển thị bằng lệnh capsh. Tiếp theo, bạn đã học cách loại bỏ một khả năng duy nhất trong vùng chứa có tên là CAP_MKNOD. Sau đó, bạn cũng đã học cách loại bỏ tất cả các khả năng của bộ chứa bằng cách sử dụng cấu hình //drop: –all. Sau đó, chúng tôi đã sử dụng hai cách để hiển thị khả năng của vùng chứa – sử dụng lệnh capsh và proc.