Bối cảnh và vấn đề nghiên cứu

Bối cảnh thực tiễn và lý do chọn đề tài

Trong xu thế phát triển phần mềm hiện đại, kiến trúc Microservices và công nghệ đóng gói ứng dụng bằng container (Docker) ngày càng được các doanh nghiệp áp dụng rộng rãi để đáp ứng nhu cầu mở rộng quy mô và phát hành tính năng nhanh chóng. Tuy nhiên, việc vận hành hệ thống container thuần túy bằng Docker ở quy mô lớn làm nảy sinh nhiều thách thức phức tạp cho người quản trị hệ thống, bao gồm:

  • Quản lý đồng thời nhiều host máy chủ có cài đặt Docker.
  • Điều phối, lập lịch và quản lý vòng đời của các container.
  • Thực hiện cập nhật luân phiên (Rolling update) và tự động co giãn tài nguyên (Auto Scaling).
  • Giám sát trạng thái hoạt động, tự động phát hiện và khắc phục sự cố khi container gặp lỗi.
  • Giải quyết bài toán khám phá dịch vụ (Service discovery) và cân bằng tải (Load balancing).
  • Quản lý dữ liệu, tải công việc, nhật ký (log) và triển khai cơ sở hạ tầng dưới dạng mã (Infrastructure as Code - IaC).

Nền tảng mã nguồn mở Kubernetes (K8S) và dịch vụ quản lý Kubernetes trên nền tảng đám mây Azure Kubernetes Service (AKS) của Microsoft đã giải quyết hiệu quả các bài toán vận hành trên. Tuy nhiên, việc cài đặt và duy trì các cấu hình an toàn, đồng nhất giữa các node trong cụm Kubernetes đòi hỏi nhiều thời gian và công sức. Nhằm giảm thiểu rủi ro an ninh mạng và đơn giản hóa quy trình thiết lập an toàn cho hệ thống, nhóm tác giả đã lựa chọn đề tài: "Triển khai giải pháp bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service sử dụng CIS Benchmark" làm khóa luận tốt nghiệp kỹ sư ngành An toàn Thông tin.

Mục tiêu nghiên cứu

Đề tài xác định các mục tiêu cụ thể sau:

  1. Nâng cao tính bảo mật cho hệ thống Kubernetes triển khai ứng dụng web theo kiến trúc Microservices một cách tự động, tối giản thao tác và không yêu cầu người quản trị phải nắm quá sâu các kiến thức bảo mật phức tạp.
  2. Ứng dụng bộ tiêu chuẩn CIS Benchmark do tổ chức Center for Internet Security ban hành để đảm bảo hệ thống đạt chuẩn an toàn về mặt cấu hình, đồng thời cho phép người quản trị tùy chọn các tiêu chuẩn cần áp dụng.
  3. Xây dựng giao diện web trực quan, thân thiện nhằm hỗ trợ người dùng thực hiện kiểm tra và cấu hình hệ thống thay vì phải thao tác hoàn toàn qua giao diện dòng lệnh (Command Line Interface - CLI).

Đối tượng, phạm vi và thời gian nghiên cứu

  • Đối tượng nghiên cứu: Nền tảng Kubernetes (thông qua Minikube), nền tảng Azure Kubernetes Service (AKS), công cụ tự động hóa quản lý cấu hình Ansible, giao thức SSH, quy trình CI/CD (GitLab CI/CD, Azure Pipelines) và ứng dụng web kiến trúc Microservices.
  • Đối tượng sử dụng: Các quản trị viên hệ thống và quản trị viên mạng cần nâng cao mức độ an toàn thông tin cho cụm máy chủ container.
  • Phạm vi nghiên cứu: Đề tài được thực nghiệm trong phạm vi phòng học, trên môi trường máy tính cá nhân (sử dụng Minikube) và trên dịch vụ điện toán đám mây Azure Kubernetes Service của Microsoft Azure.
  • Thời gian thực hiện: Từ ngày 05/09/2022 đến ngày 30/12/2022.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và công nghệ nền tảng

Khóa luận xây dựng trên các nền tảng lý thuyết và công nghệ sau:

  1. Kiến trúc hệ thống Kubernetes (K8S): Hệ thống điều phối container phân tán gồm hai khối thành phần chính:

    • Master Node (Control Plane): Quản lý và điều phối cụm thông qua các thành phần: kube-apiserver (cung cấp RESTful API tương tác với client), etcd (cơ sở dữ liệu phân tán lưu trữ cấu hình key/value của toàn cụm), kube-scheduler (lập lịch phân bổ Pod lên các Worker Node phù hợp), và kube-controller-manager (điều khiển các tiến trình chạy nền duy trì trạng thái khai báo).
    • Worker Node: Nơi trực tiếp thực thi các container, bao gồm: kubelet (agent giám sát và duy trì trạng thái của các Pod/container), kube-proxy (quản lý lưu lượng mạng và cân bằng tải dịch vụ), và Container Runtime (Docker, containerd hoặc CRI-O).
    • Minikube: Công cụ triển khai cụm Kubernetes cục bộ gồm 1 Master Node và 1 Worker Node phục vụ học tập, thử nghiệm.
  2. Kiến trúc Microservices: Mô hình phân rã ứng dụng thành các dịch vụ độc lập, tự chủ về mã nguồn, cơ sở dữ liệu và schema; giao tiếp thông qua mạng hoặc API; nâng cao khả năng chịu lỗi và tính linh hoạt khi mở rộng quy mô so với kiến trúc nguyên khối (Monolithic).

  3. Công cụ tự động hóa quản lý cấu hình Ansible: Công cụ mã nguồn mở vận hành theo cơ chế không cần cài đặt phần mềm đại lý (agentless), kết nối và thực thi tác vụ trên các máy đích thông qua giao thức SSH (cổng TCP 22). Các thành phần chính bao gồm:

    • Inventory: Tệp tin (định dạng INI hoặc YAML) khai báo danh sách địa chỉ và phân nhóm máy chủ quản lý.
    • Modules: Các tập lệnh độc lập thực thi tác vụ cụ thể, trả về dữ liệu định dạng JSON.
    • Playbooks & Plays: Tập hợp các nhiệm vụ (tasks) được viết bằng ngôn ngữ YAML để xác định trạng thái mong muốn của hệ thống.
    • Roles: Cấu trúc đóng gói và tái sử dụng mã nguồn Ansible gồm 7 thư mục tiêu chuẩn: tasks, handlers, defaults, vars, templates, và meta.
  4. Bộ tiêu chuẩn bảo mật CIS Benchmark: Tài liệu hướng dẫn cấu hình bảo mật do tổ chức Center for Internet Security (CIS) xây dựng dựa trên sự đồng thuận của các chuyên gia an ninh mạng. CIS Benchmark chia làm hai cấp độ đánh giá:

    • Level 1: Khuyến nghị cấu hình cơ bản nhằm thu hẹp bề mặt tấn công mà không làm ảnh hưởng đáng kể đến hiệu suất và tính năng vận hành của hệ thống.
    • Level 2: Khuyến nghị cấu hình chuyên sâu dành cho các môi trường yêu cầu mức độ bảo mật nghiêm ngặt, có thể gây ảnh hưởng đến hiệu suất hoặc khả năng tương thích của hệ thống.
  5. Nền tảng Microsoft Azure và Azure Kubernetes Service (AKS): Dịch vụ Kubernetes được quản lý hoàn toàn trên nền tảng đám mây Azure. Azure chịu trách nhiệm quản lý và bảo trì Control Plane miễn phí; người dùng chỉ quản lý và thanh toán tài nguyên của các Worker Node (agent pool). Hệ thống kết hợp cơ chế Identity and Access Management (IAM) để kiểm soát quyền truy cập tài nguyên.

  6. Quy trình Tích hợp và Triển khai liên tục (CI/CD): Nghiên cứu nguyên lý Continuous Integration (CI) và Continuous Delivery (CD). So sánh đặc tính kỹ thuật giữa hai nền tảng Azure Pipelines và GitLab CI/CD:

Tiêu chí so sánh Azure Pipelines GitLab CI/CD
Kích hoạt khi có commit mới / thủ công Có hỗ trợ Có hỗ trợ
Thực thi trong khoảng thời gian quy định Có hỗ trợ Không hỗ trợ
Thực thi theo lịch trình (Schedule) Có hỗ trợ Có hỗ trợ
Hỗ trợ đa ngôn ngữ lập trình Có hỗ trợ Có hỗ trợ
Tích hợp trực tiếp với Microsoft Azure Có tích hợp sẵn Cần viết script cấu hình kết nối
Tích hợp trực tiếp với Amazon AWS Có tích hợp sẵn Cần viết script cấu hình kết nối
Tích hợp trực tiếp với Google Cloud (GCP) Có tích hợp sẵn Có hỗ trợ nhưng cần cấu hình thêm script
Cú pháp và cấu trúc kịch bản Phức tạp hơn Ngắn gọn, dễ tiếp cận hơn

Phương pháp nghiên cứu và nguồn dữ liệu

  • Phương pháp thu thập, phân tích tài liệu: Nghiên cứu tài liệu kỹ thuật chính thức từ tổ chức CIS (CIS Benchmark cho Kubernetes và AKS), tài liệu Microsoft Azure, Kubernetes, Ansible và GitLab.
  • Phương pháp thiết kế và phát triển: Lập trình ứng dụng giao diện bằng Python Flask kết hợp Jinja2 template; xây dựng các Ansible Playbooks/Roles tự động hóa quét và khắc phục lỗi cấu hình; thiết lập pipeline tự động hóa CI/CD.
  • Phương pháp thực nghiệm và đánh giá: Thực hiện kiểm tra thủ công qua CLI, sau đó tự động hóa kiểm tra và vá lỗi cấu hình bằng Ansible; đối chiếu đánh giá mức độ an toàn trước và sau khi cấu hình, sử dụng các công cụ bổ trợ như kube-bench và CIS-CAT.
  • Nguồn dữ liệu thực nghiệm: Dự án ứng dụng web microservices mã nguồn mở dựa trên Flask và MySQL được lưu trữ tại kho mã nguồn GitHub flask-microservices-deployment.

Thiết kế và triển khai giải pháp

1. Kiến trúc ứng dụng Microservices thử nghiệm

Nhóm tác giả sử dụng ứng dụng web mã nguồn mở được chia thành 4 dịch vụ độc lập:

  • Frontend App: Giao diện người dùng xây dựng bằng ReactJS kết hợp tầng xử lý bằng Flask, gửi các yêu cầu API đến hệ thống backend.
  • Backend Services: Gồm 3 dịch vụ viết bằng Python Flask:
    • user-svc: Xử lý thông tin và xác thực người dùng.
    • product-svc: Quản lý danh mục và chi tiết sản phẩm.
    • order-svc: Tiếp nhận và xử lý đơn hàng.
  • Tầng cơ sở dữ liệu: Sử dụng 3 cơ sở dữ liệu MySQL riêng biệt (user-db, product-db, order-db) tương ứng cho từng dịch vụ backend để đảm bảo tính độc lập dữ liệu.

Các ứng dụng Flask được đóng gói bằng Dockerfile trên nền python:3.8, cài đặt các gói phụ thuộc qua requirements.txt và khởi chạy qua run.py.

2. Triển khai hạ tầng cụm Kubernetes và AKS

  • Cụm Minikube: Thiết lập cụm 2 node (1 Master node control-plane,master và 1 Worker node). Bật các tiện ích mở rộng (addons) gồm: default-storageclass, ingress, ingress-dns, và storage-provisioner. Ứng dụng được triển khai qua các tệp manifest YAML định nghĩa Deployment, Service và PersistentVolume.
  • Cụm Azure Kubernetes Service (AKS): Tạo cụm thông qua Azure Portal, sử dụng Azure CLI (az aks get-credentials) để hợp nhất context quản trị vào tệp cấu hình .kube/config. Thiết lập cơ chế kết nối SSH từ máy quản trị đến các node trong cụm AKS (bao gồm cả trường hợp node private và public) để phục vụ việc quản lý cấu hình.

3. Tự động hóa kiểm tra và cấu hình an toàn bằng Ansible

Hệ thống tự động hóa cấu hình được cấu trúc thành các Ansible Roles chuyên biệt:

  • Cấu trúc Playbook: Tệp cấu hình chính cis_benchmark.yml gọi các vai trò (roles) tương ứng. Thư mục tasks của role chia thành các section tương ứng với các nhóm tiêu chuẩn của CIS Benchmark.
  • Cơ chế hoạt động: Ansible đọc thông tin node từ tệp hosts (Inventory), tạo kết nối SSH đến từng node, thực thi các lệnh kiểm tra cấu hình tham số hệ thống và dịch vụ Kubernetes theo từng tiêu chuẩn, ghi nhận trạng thái (Đạt / Không đạt) và xuất kết quả báo cáo ra tệp giao diện HTML.
  • Cơ chế tự động khắc phục (Remediation): Khi người quản trị chọn áp dụng cấu hình, Ansible thực thi các Playbook vá lỗi nhằm điều chỉnh quyền tệp tin, tham số khởi chạy của kubelet, cấu hình mạng hoặc các thiết lập bảo mật của hệ thống theo khuyến nghị CIS Level 1/Level 2.

4. Xây dựng công cụ giao diện Web và Tích hợp CI/CD

  • Giao diện Web Python Flask: Cung cấp bảng điều khiển trực quan giúp quản trị viên nhập thông tin Inventory của cụm Minikube hoặc AKS, theo dõi tiến trình benchmark theo thời gian thực, xem chi tiết báo cáo kết quả quét và nhấn kích hoạt tiến trình tự động cấu hình lại hệ thống mà không cần thao tác dòng lệnh.
  • Quy trình CI/CD Pipeline: Sử dụng Azure Pipelines để tự động hóa vòng đời ứng dụng: kéo mã nguồn (pull code), xây dựng (build) Docker image, đẩy (push) image lên registry, sử dụng plugin replace token để cập nhật biến môi trường trong file manifest, lưu trữ artifact triển khai và tự động deploy ứng dụng lên cụm AKS.

Nội dung chính theo từng chương

Chương 1: Tổng quan đề tài

Trình bày bối cảnh phát triển của công nghệ container và Kubernetes; nêu rõ những khó khăn của quản trị viên khi vận hành hệ thống microservices. Xác định mục tiêu, đối tượng, phạm vi nghiên cứu; lập kế hoạch phân công công việc chi tiết cho 2 sinh viên qua 10 giai đoạn từ ngày 05/09/2022 đến ngày 30/12/2022.

Chương 2: Cơ sở lý thuyết

Cung cấp tổng quan lý thuyết chi tiết về:

  • Cấu trúc hệ thống Kubernetes và chức năng các thành phần Master/Worker.
  • Khái niệm, ưu điểm và đặc tính của kiến trúc Microservices so với Monolithic.
  • Nguyên lý CI/CD, phân tích so sánh chi tiết giữa Azure Pipelines và GitLab CI/CD.
  • Khái niệm quản lý cấu hình tự động, cấu trúc tệp YAML, giao thức SSH, kiến trúc và nguyên lý hoạt động của Ansible (Inventory, Modules, Playbooks, Roles).
  • Nguồn gốc, sứ mệnh và cấu trúc phân cấp (Level 1, Level 2) của tiêu chuẩn bảo mật CIS Benchmark.
  • Tổng quan hệ sinh thái dịch vụ Microsoft Azure, giải pháp Azure Kubernetes Service, cơ chế IAM và framework Python Flask.

Chương 3: Phương pháp thực hiện

Trình bày phương pháp triển khai kỹ thuật chi tiết:

  • Quy trình cài đặt cụm Kubernetes trên Minikube và kích hoạt các addons cần thiết.
  • Quy trình khởi tạo cụm AKS trên Azure Portal và thiết lập ngữ cảnh quản trị qua AZ-CLI.
  • Thiết kế kiến trúc và viết Dockerfile, Docker Compose, Kubernetes manifest (Deployment, Service, Volume) cho ứng dụng Microservices gồm 4 thành phần dịch vụ và 3 cơ sở dữ liệu MySQL.
  • Phương pháp thiết lập kết nối SSH vào các node AKS trong các trường hợp node private và public.
  • Cấu trúc triển khai Ansible Playbooks/Roles áp dụng các section kiểm tra của CIS Benchmark và cấu trúc định dạng báo cáo HTML.

Chương 4: Triển khai - Thực nghiệm

Mô tả chi tiết quá trình hiện thực hóa và kết quả thực nghiệm theo 2 kịch bản:

  • Kịch bản 1: Kiểm tra và cấu hình tự động cho hệ thống Kubernetes triển khai trên Minikube chạy ứng dụng Microservices. Quản trị viên nhập thông tin node trên giao diện web, tiến hành quét tiêu chuẩn CIS, xem kết quả trên node Master/Worker, kích hoạt tự động cấu hình và kiểm tra lại trạng thái sau khắc phục.
  • Kịch bản 2: Kiểm tra và cấu hình tự động cho cụm Azure Kubernetes Service chạy ứng dụng Microservices kết hợp quy trình CI/CD qua Azure Pipelines. Thực hiện quét tự động, đánh giá các tiêu chí an toàn trên AKS agent pool và áp dụng cấu hình tự động thành công.

Chương 5: Tổng kết và hướng phát triển

Đánh giá mức độ hoàn thành so với mục tiêu ban đầu; tổng kết các kiến thức và kỹ năng đạt được về bảo mật Kubernetes, quản trị đám mây Azure, tự động hóa Ansible và quản lý CI/CD. Đề xuất các hạn chế cần khắc phục và định hướng nghiên cứu mở rộng trong tương lai.


Kết quả và đóng góp

Kết quả nghiên cứu và thực nghiệm chính

  • Xây dựng hoàn chỉnh mô hình ứng dụng web Microservices gồm 4 dịch vụ (Frontend, User, Product, Order) và 3 cơ sở dữ liệu MySQL độc lập, triển khai thành công trên cả 2 môi trường Minikube và AKS.
  • Xây dựng thành công bộ Ansible Playbooks và Roles chuẩn hóa để tự động quét và kiểm tra các tiêu chí cấu hình an toàn thông tin theo chuẩn CIS Benchmark dành riêng cho Kubernetes và AKS.
  • Phát triển công cụ giao diện Web hoàn chỉnh trên nền tảng Python Flask, kết nối trực tiếp với Ansible Engine, cho phép quản trị viên thực hiện kiểm tra an toàn, theo dõi tiến trình và kích hoạt cấu hình khắc phục tự động thông qua giao diện đồ họa.
  • Thiết lập thành công pipeline CI/CD trên Azure Pipelines, tự động hóa quy trình từ khâu đóng gói image đến triển khai ứng dụng lên cụm AKS thông qua các tệp manifest Kubernetes.
  • Xác thực và chứng minh hệ thống sau khi áp dụng cấu hình tự động theo chuẩn CIS Benchmark vẫn đảm bảo tính ổn định và tính sẵn sàng của ứng dụng Microservices mà không làm gián đoạn dịch vụ.
Nội dung thực nghiệm Kịch bản 1 (Minikube) Kịch bản 2 (Azure Kubernetes Service)
Môi trường triển khai Máy tính cá nhân (Cục bộ) Đám mây Microsoft Azure
Thành phần quản lý 1 Master Node, 1 Worker Node Agent Pool (Worker Nodes do người dùng quản lý)
Phương thức quản trị kubectl cục bộ, Minikube CLI Azure Portal, AZ-CLI, kubectl context
Kết nối cấu hình SSH nội bộ SSH (Private/Public AKS Node)
Công cụ kiểm tra Ansible Playbook theo chuẩn CIS Ansible Playbook theo chuẩn CIS cho AKS
Giao diện điều khiển Python Flask Web UI Python Flask Web UI
Tích hợp CI/CD Triển khai thủ công / Manifest Azure DevOps Pipelines tự động hóa hoàn toàn

Giải pháp và kiến nghị của tác giả

  • Đề xuất mô hình kết hợp công cụ quản lý cấu hình agentless (Ansible) với bộ tiêu chuẩn bảo mật quốc tế (CIS Benchmark) nhằm giải quyết bài toán sai lệch cấu hình an toàn (security configuration drift) trong môi trường container.
  • Khuyến nghị doanh nghiệp áp dụng cấu hình CIS Level 1 cho các hệ thống thông thường để giảm thiểu tối đa bề mặt tấn công mà không ảnh hưởng hiệu năng, và chỉ áp dụng CIS Level 2 cho các hệ thống có yêu cầu bảo mật đặc biệt nghiêm ngặt.
  • Khuyến nghị tích hợp các bước kiểm tra an toàn cấu hình hạ tầng trực tiếp vào quy trình CI/CD để đảm bảo an ninh liên tục (DevSecOps).

Đóng góp thực tiễn của đề tài

Đề tài cung cấp một giải pháp kỹ thuật có tính ứng dụng cao, giúp các kỹ sư vận hành và quản trị viên mạng chuẩn hóa nhanh chóng quy trình rà soát và siết chặt an toàn cho cụm Kubernetes/AKS. Giải pháp giảm thiểu đáng kể thời gian và sai sót phát sinh từ việc cấu hình thủ công, đồng thời nâng cao nhận thức và hiểu biết về an toàn cấu hình hệ thống container.


Hạn chế và hướng nghiên cứu tiếp

Hạn chế của đề tài

  • Hệ thống thực nghiệm chỉ mới được triển khai và đánh giá trên môi trường thử nghiệm cục bộ (Minikube) và cụm AKS quy mô nhỏ, chưa được kiểm thử toàn diện trên các môi trường production có lưu lượng truy cập lớn và khối lượng workload phức tạp.
  • Phạm vi áp dụng chuẩn CIS Benchmark tập trung chính vào nền tảng Kubernetes và Azure Kubernetes Service, chưa mở rộng sang các nền tảng đám mây lớn khác như AWS (Amazon Elastic Kubernetes Service - EKS) hoặc GCP (Google Kubernetes Engine - GKE).

Hướng nghiên cứu tiếp

  • Mở rộng phát triển và bổ sung các tập lệnh Ansible Playbooks để hỗ trợ kiểm tra và tự động cấu hình CIS Benchmark cho các dịch vụ Kubernetes trên nhiều nền tảng đám mây khác nhau (AWS EKS, GCP GKE).
  • Nghiên cứu tối ưu hóa và bổ sung thêm các kịch bản tự động vá lỗi (Remediation) cho các tiêu chuẩn CIS Level 2 phức tạp.
  • Tích hợp sâu hơn công cụ kiểm tra cấu hình vào các hệ thống giám sát cảnh báo thời gian thực và xây dựng quy trình DevSecOps hoàn chỉnh trong doanh nghiệp.

Giá trị tham khảo

  • Đối tượng phù hợp: Khóa luận là tài liệu tham khảo hữu ích cho sinh viên chuyên ngành An toàn Thông tin, Mạng máy tính & Truyền thông, Công nghệ Thông tin, cũng như các kỹ sư hệ thống (System Administrator), kỹ sư DevOps và DevSecOps.
  • Nội dung giá trị nhất:
    • Cấu trúc tổ chức các Ansible Roles và Playbooks mẫu dùng để quét và vá lỗi cấu hình hệ thống theo tiêu chuẩn bảo mật CIS.
    • Hướng dẫn chi tiết phương pháp thiết lập mạng, kết nối SSH an toàn vào các private node trong cụm Azure Kubernetes Service.
    • Mô hình thiết kế, đóng gói và cấu hình tệp manifest YAML để triển khai ứng dụng Microservices đa dịch vụ, đa cơ sở dữ liệu lên cụm Kubernetes.
    • Quy trình tích hợp các bước build, cấu hình biến token và triển khai tự động lên cụm AKS thông qua Azure Pipelines.

Câu hỏi thường gặp

1. Tiêu chuẩn CIS Benchmark phân cấp bảo mật như thế nào và việc áp dụng các cấp độ này ảnh hưởng ra sao đến hệ thống?
CIS Benchmark phân chia các khuyến nghị cấu hình thành 2 cấp độ:

  • Level 1: Tập trung giảm thiểu bề mặt tấn công cơ bản, không gây ảnh hưởng lớn đến hiệu suất hoạt động và không làm gián đoạn các chức năng thông thường của hệ thống.
  • Level 2: Cung cấp các biện pháp phòng thủ chuyên sâu cho hệ thống đặt tính bảo mật lên hàng đầu, tuy nhiên có thể làm suy giảm hiệu suất hoặc ảnh hưởng đến khả năng tương thích của một số dịch vụ đang chạy.

2. Tại sao nhóm tác giả lựa chọn công cụ Ansible để tự động hóa cấu hình thay vì các công cụ khác như CHEF hay Puppet?
Ansible sở hữu các ưu điểm nổi bật: kiến trúc không cần cài đặt agent (agentless), vận hành trực tiếp thông qua giao thức bảo mật SSH (cổng 22), sử dụng ngôn ngữ định nghĩa trạng thái YAML dễ đọc, dễ viết, được phát triển trên nền Python linh hoạt, và có cấu trúc Roles rõ ràng giúp dễ dàng đóng gói, tái sử dụng và quản lý hàng trăm tác vụ cấu hình phức tạp.

3. Cơ chế kết nối và quản lý cấu hình của Ansible đối với các node trên cụm Azure Kubernetes Service (AKS) được thực hiện như thế nào?
Ansible lấy thông tin danh sách các máy chủ đích từ tệp hosts (Inventory). Đối với cụm AKS, nhóm tác giả thiết lập cơ chế kết nối SSH từ máy quản trị đến cả private node và public node của AKS. Khi thực thi, Ansible đẩy các module độc lập qua kênh SSH đến các node để kiểm tra hoặc điều chỉnh cấu hình hệ thống, nhận lại kết quả dạng JSON và tự động dọn dẹp các module này trước khi ngắt kết nối.

4. Ứng dụng Microservices thử nghiệm trong khóa luận được thiết kế gồm những dịch vụ nào và lưu trữ dữ liệu ra sao?
Ứng dụng thử nghiệm được xây dựng bằng Python Flask gồm 4 thành phần: 1 dịch vụ Frontend (ReactJS hiển thị giao diện kết hợp Flask xử lý gửi API) và 3 dịch vụ Backend độc lập phụ trách 3 nhóm nghiệp vụ (user-svc, product-svc, order-svc). Mỗi dịch vụ backend được kết nối với 1 cơ sở dữ liệu MySQL riêng biệt (user-db, product-db, order-db) chạy dưới dạng container để đảm bảo tính độc lập dữ liệu theo đúng nguyên lý microservices.

5. Điểm khác biệt căn bản giữa Azure Pipelines và GitLab CI/CD dẫn đến việc lựa chọn công cụ trong đề tài là gì?
GitLab CI/CD có cấu trúc kịch bản ngắn gọn, dễ sử dụng cho các dự án đa nền tảng nhưng cần cấu hình thêm script để kết nối với các dịch vụ đám mây của Microsoft. Ngược lại, Azure Pipelines tích hợp trực tiếp và tự nhiên với hệ sinh thái Microsoft Azure (trong đó có AKS), hỗ trợ tốt việc quản lý biến, thay thế token trong tệp manifest và quản lý artifact triển khai. Do đề tài triển khai thực nghiệm chính trên nền tảng AKS, nhóm tác giả đã lựa chọn Azure Pipelines.


Kết luận

Khóa luận tốt nghiệp của sinh viên Bùi Quốc Huy và Ngô Đức Trí đã giải quyết thành công bài toán tự động hóa rà soát và cấu hình bảo mật cho hệ thống Kubernetes và Azure Kubernetes Service dựa trên bộ tiêu chuẩn quốc tế CIS Benchmark. Bằng cách kết hợp linh hoạt công cụ quản lý cấu hình Ansible, giao diện web điều khiển trên nền tảng Python Flask và pipeline tự động hóa CI/CD, công trình đã cung cấp một giải pháp kỹ thuật hoàn chỉnh, trực quan và thực tiễn. Kết quả thử nghiệm trên cả hai môi trường Minikube và AKS chứng minh hệ thống có khả năng nâng cao đáng kể mức độ an toàn cấu hình mà vẫn duy trì sự ổn định, liên tục của ứng dụng Microservices.